2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Match_Constituent): Treat a constant as a legal
	constituent even if it is not to prevent spurious errors.

2016-04-21  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb: Minor typo fixes and reformatting.

2016-04-21  Dmitriy Anisimkov  <anisimko@adacore.com>

	* g-calend.ads (No_Time): The same value in any timezone.
	* g-socket.adb (Raise_Host_Error): Remove ending
	dot from original error message before append colon delimited
	host name.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb: Code cleanup.
	* sem_ch6.adb: Code cleanup.
	(Is_Matching_Limited_View): New routine.
	(Matches_Limited_With_View): Reimplemented.
	* sem_ch10.adb (Decorate_Type): Code cleanup.

2016-04-21  Doug Rupp  <rupp@adacore.com>

	* tracebak.c (PPC ELF): Add macro defs for lynxos178e.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): If there are overloaded
	indexing functions, collect all overloadings of the call firts,
	and then transfer them to indexing node, to prevent interleaving
	of the set of interpretations of the nodes involved.
	* sem_res.adb (Resolve): Suppress cascaded errors that report
	ambiguities when one of the actuals in an overloaded generatlized
	indexing operation is illegal and has type Any_Type, as is done
	for similar cascaded errors in subprogram calls.
	(Valid_Tagged_Conversion): Cleanup conversion checks when one
	of the types involved is a class-wide subtype.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Load_Parent_Of_Generic): When looking for the
	subprogram declaration within a wrapper package, skip pragmas
	that may have been generated by aspect specifications on the
	generic instance.

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Generating C
	code return True for array identifiers since the backend needs
	to initialize such component by means of memcpy().

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* a-tasatt.adb, a-tasatt.ads (Fast_Path): Rewritten to avoid reading
	potentially uninitialized memory.
	* sem_ch3.adb: Minor style fix in comment.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi,
	doc/gnat_ugn/gnat_project_manager.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.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/standard_and_implementation_defined_restrictions.rst,
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_rm/the_gnat_library.rst,
	doc/gnat_rm/implementation_defined_aspects.rst: Update doc.
	* doc/Makefile: Cleanups.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_pakd.adb, sem_ch13.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_dbug.adb, exp_dbug.ads (Qualify_Entity_Name): Add suffixes to
	disambiguate local variables that may be hidden from inner visibility
	by nested block declarations or loop variables.

2016-04-21  Jerome Lambourg  <lambourg@adacore.com>

	* s-soflin.adb: Initialize the Stack_Limit global variable.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-writ.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_pakd.adb (Compute_Number_Components): New function to
	build an expression that computes the number of a components of
	an array that may be multidimensional.
	(Expan_Packed_Eq): Use it.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* g-traceb.ads: Update list of supported platforms.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Add_Predicates): if the type is declared in
	an inner package it may be frozen outside of the package, and
	the generated pragma has not been analyzed yet, the expression
	for the predicate must be captured and added to the predicate
	function at this point.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Package_Body_Contract): Do not check
	for a missing package refinement because 1) packages do not have
	"refinement" and 2) the check for proper state refinement is
	performed in a different place.
	* einfo.adb (Has_Non_Null_Visible_Refinement): Reimplemented.
	(Has_Null_Visible_Refinement): Reimplemented.
	* sem_ch3.adb (Analyze_Declarations): Determine whether all
	abstract states have received a refinement and if not, emit
	errors.
	* sem_ch7.adb (Analyze_Package_Declaration): Code
	cleanup. Determine whether all abstract states of the
	package and any nested packages have received a refinement
	and if not, emit errors.
	(Requires_Completion_In_Body): Add new formal parameter
	Do_Abstract_States. Update the comment on usage. Propagate the
	Do_Abstract_States flag to all Unit_Requires_Body calls.
	(Unit_Requires_Body): Remove formal
	parameter Ignore_Abstract_States. Add new formal paramter
	Do_Abstract_States. Propagate the Do_Abstract_States flag to
	all Requires_Completion_In calls.
	* sem_ch7.ads (Unit_Requires_Body): Remove formal
	parameter Ignore_Abstract_States. Add new formal paramter
	Do_Abstract_States. Update the comment on usage.
	* sem_ch9.adb (Analyze_Single_Protected_Declaration): Do
	not initialize the constituent list as this is now done on a
	need-to-add-element basis.
	(Analyze_Single_Task_Declaration):
	Do not initialize the constituent list as this is now done on
	a need-to-add-element basis.
	* sem_ch10.adb (Decorate_State): Do not initialize the constituent
	lists as this is now done on a need-to-add-element basis.
	* sem_prag.adb (Analyze_Constituent): Set the
	refinement constituents when adding a new element.
	(Analyze_Part_Of_In_Decl_Part): Set the Part_Of constituents when
	adding a new element.
	(Analyze_Part_Of_Option): Set the Part_Of
	constituents when adding a new element.
	(Analyze_Pragma): Set the Part_Of constituents when adding a new
	element.
	(Check_Constituent_Usage (all versions)): Reimplemented.
	(Collect_Constituent): Set the refinement constituents when adding
	a new element.
	(Create_Abstract_State): Do not initialize the
	constituent lists as this is now done on a need-to-add-element basis.
	(Propagate_Part_Of): Set the Part_Of constituents when
	adding a new element.
	* sem_util.adb (Check_State_Refinements): New routine.
	(Has_Non_Null_Refinement): Reimplemented.
	(Has_Null_Refinement): Reimplemented.
	(Requires_State_Refinement): Removed.
	* sem_util.ads (Check_State_Refinements): New routine.
	(Requires_State_Refinement): Removed.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-writ.adb, sem_ch6.adb: Minor reformatting and code cleanup.
	* sem.adb: Fix comment.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): A subtype
	declaration with no aspects, whose subtype_mark is a subtype
	with predicates, inherits the list of subprograms for the type.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Has_Per_Object_Constraint): Refine previous
	change.

2016-04-21  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Raise_Host_Error): Include additional Name parameter.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* lib-writ.adb (Write_ALI): Do not record in ali file units
	that are present in the files table but not analyzed. These
	units are present because they appear in the context of units
	named in limited_with clauses, and the unit being compiled does
	not depend semantically on them.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Simplify code to
	create the procedure body for an function returning an array type,
	when generating C code. Reuse the subprogram body rather than
	creating a new one, both as an efficiency measure and because
	in an instance the body may contain global references that must
	be preserved.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, exp_attr.adb, exp_ch6.adb, exp_aggr.adb: Minor
	reformatting.

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Component_Check): Extend
	the check that verifies that the aggregate has no function
	calls to handle transformations performed by the frontend.
	(Ultimate_Original_Expression): New subprogram.

2016-04-21  Philippe Gil  <gil@adacore.com>

	* krunch.adb (Krunch): Fix krunching of i-java.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch8.adb (Evaluation_Required): Always return
	True when Modify_Tree_For_C.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatlink.adb (Gnatlink): Robustify detection of Windows target.
	* alloc.ads: Minor comment fixes.
	* einfo.ads: Fix typo.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Redo previous
	changes to handle all cases of components depending on the
	discriminant, not just string literals.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): If the subtype
	declaration is the generated declaration for a generic actual,
	inherit predicates from the actual if it is a predicated subtype.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Rewrite_Function_Call_For_C): If the function is
	inherited and its result is controlling,  introduce a conversion
	on the actual for the corresponding procedure call, to avoid
	spurious type errors.

2016-04-21  Jerome Lambourg  <lambourg@adacore.com>

	* krunch.adb (Krunch): Fix krunching of i-vxworks.

2016-04-21  Gary Dismukes  <dismukes@adacore.com>

	* exp_aggr.adb: Minor reformatting and code cleanup.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Resolve_Name): Omit quantified expressions from
	resolution, because they introduce local names. Full resolution
	will take place when predicate function is constructed.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Refine previous
	change to take into account Per_Object_Constraint field rather
	than special casing strings.
	* exp_ch6.adb: Fix typo in Replace_Returns.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch5.adb: Minor reformatting.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Backend_Processing_Possible): Return False
	when generating C and aggregate contains function calls.

2016-04-21  Tristan Gingold  <gingold@adacore.com>

	* krunch.adb (Krunch): Only partially krunch children of
	Interfaces that aren't known.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Make_Inline): Handle properly the instantiation
	of a generic subpprogram that carries an Inline aspect. Place
	inline info on the anonymous subprogram that is constructed in
	the wrapper package.
	(Analyze_Pragma, case Pure): Do not check placement if pragma
	appears within an instantiation, which can be nested at any level.
	* sem_ch12.adb (Analyze_Instance_And_Renamings): Do not copy Freeze
	node from anonymous subprogram to its visible renaming. The
	freeze node will be constructed if the subprogram carries
	delayed aspects.
	(Set_Global): Preserve dimension information if present (from
	code reading).

2016-04-21  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnatlink.adb: Change wording of the warning message on
	problematic filenames to be more neutral. Add a new substring
	"patch" introduced on Windows 10.

2016-04-21  Philippe Gil  <gil@adacore.com>

	* tracebak.c (__gnat_backtrace): handle bad RIP values (win64 only)

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Component_Not_OK_For_Backend): Return true for string
	literals.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Has_Non_Null_Abstract_State): New routine.
	* einfo.ads New synthesized attribute
	Has_Non_Null_Abstract_State along with occurrences in entities.
	(Has_Non_Null_Abstract_State): New routine.
	* sem_ch7.adb (Unit_Requires_Body): Add local variable
	Requires_Body. A package declaring an abstract state requires
	a body only when the state is non-null and the package contains
	at least one other construct that requires completion in a body.
	* sem_util.adb (Mode_Is_Off): Removed.
	(Requires_State_Refinement): Remove an obsolete check. Code
	cleanup.

2016-04-21  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Analyze_Attribute): In processing
	the 'Old attribute, a warning is given for infinite recursion. Fix
	the code to not crash when the prefix of 'Old denotes a protected
	function.
	* sem_ch5.adb (Analyze_Iterator_Specification):
	Avoid calling Is_Dependent_Component_Of_Mutable_Object in cases
	where the parameter would not be an object.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Be prepared for an empty
	Etype or Underlying_Type of the operands.

2016-04-21  Eric Botcazou  <ebotcazou@adacore.com>

	* atree.adb (Print_Statistics): Protect against overflows and
	print the memory consumption in bytes.
	* table.adb (Reallocate): Do the intermediate calculation of the new
	size using the Memory.size_t type.

2016-04-21  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb (Is_Inline_Floating_Point_Attribute): Suppress
	expansion of Attribute_Machine and Attribute_Model for AAMP.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb: Disable previous change for now.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): If prefix has an
	access type and designated type is a limited view, introduce
	an explicit dereference before continuing the analysis, and
	set its type to the non-limited view of the designated type,
	if we are in context where it is available.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb: Freeze profile in ASIS mode.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aux.ads, sem_aux.adb (Has_Rep_Item): New variant.
	* sem_util.adb (Inherit_Rep_Item_Chain): Reimplemented.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Minor reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Minor comment update.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* freeze.ads, freeze.adb (Freeze_Entity, Freeze_Before): Add
	boolean parameter to determine whether freezing an overloadable
	entity freezes its profile as well. This is required by
	AI05-019. The call to Freeze_Profile within Freeze_Entity is
	conditioned by the value of this flag, whose default is True.
	* sem_attr.adb (Resolve_Attribute, case 'Access): The attribute
	reference freezes the prefix, but it the prefix is a subprogram
	it does not freeze its profile.

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Build_Procedure_Form): No action needed for
	subprogram renamings since the backend can generate the call
	using the renamed subprogram. This leaves the tree more clean
	to the backend.
	* exp_ch6.adb (Expand_Call): Extend previous patch for
	rewritten-for-c entities to handle subprogram renamings.
	(Rewrite_Function_Call_For_C): Handle subprogram renamings.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Code cleanup.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If the body is
	created for SPARK_To_C, the entity must remain invisible so it
	does not overload subsequent references to the original function.
	* exp_ch6.adb (Build_Procedure_Body_Form, Replace_Returns):
	Handle Extended_Return_Statements by replacing it with a block
	with assignments and a simple return statement.
	* exp_util.adb (Build_Procedure_Form): Make procedure entity
	invisible after analyzing declaration, to prevent improper
	overloading.

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Build_Subprogram_Declaration): Propagate the
	attribute Rewritten_For_C to the body since since the expander
	may generate calls using that entity.
	* exp_ch6.adb (Expand_Call): For internally generated
	calls ensure that they reference the entity of the spec
	of the called function.
	(Rewritten_For_C_Func_Id): New subprogram.
	(Rewritten_For_C_Proc_Id): New subprogram.
	(Rewrite_Function_Call_For_C): Invoke the new subprogram to
	ensure that we skip freezing entities.
	* exp_util.adb (Build_Procedure_Form): No action needed if the
	procedure was already built.

2016-04-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, exp_util.adb, sem_ch13.adb, exp_unst.adb: Minor
	reformatting.

2016-04-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Denotes_Iterator): Use root type to determine
	whether the ultimate ancestor is the predefined iterator
	interface pakage.
	* exp_ch5.adb (Expand_Iterator_Over_Container): simplify code
	and avoid reuse of Pack local variable.

2016-04-21  Olivier Hainque  <hainque@adacore.com>

	* system-vxworks-arm.ads, system-vxworks-sparcv9.ads,
	system-vxworks-ppc.ads, system-vxworks-m68k.ads,
	system-vxworks-mips.ads, system-vxworks-x86.ads: Define
	Executable_Extension to ".out".

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* frontend.adb: Update call to Unnest_Subprograms.
	* exp_ch6.ads, exp_ch6.adb, exp_unst.ads, exp_unst.adb
	(Unnest_Subprograms): Moved to package exp_unst.
	* exp_unst.ads (Unnest_Subprogram): Moved to the body of the
	package.
	* exp_dbug.adb (Qualify_Entity_Name): Enable qualification of
	enumeration literals when generating C code.

2016-04-21  Javier Miranda  <miranda@adacore.com>

	* frontend.adb: Remove call to initialize Exp_Ch6.
	* exp_ch6.ads, exp_ch6.adb (Initialize): removed.
	(Unest_Entry/Unest_Bodies): Removed.
	(Unnest_Subprograms): Code cleanup.

2016-04-21  Arnaud Charlet  <charlet@adacore.com>

	* set_targ.adb (Read_Target_Dependent_Values):
	close target description file once its contents is read.
	* s-os_lib.adb (Non_Blocking_Spawn, version with Stdout_File
	and Stderr_File): Close local file descriptors before spawning
	child process.
	* exp_util.adb (Containing_Package_With_Ext_Axioms): Limit scope of
	local variables to make the code easier to understand and avoid
	duplicated calls to Parent and Generic_Parent.

2016-04-20  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads: Minor comment fix.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Do no generate
	a discriminant check for a type whose partial view has unknown
	discriminants when the full view has discriminants with defaults.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Remove_Side_Effects): When generating C code
	remove side effect of type conversion of access to unconstrained
	array type.
	(Side_Effect_Free): Return false for the type
	conversion of access to unconstrained array type when generating
	C code.
	* sem_res.adb (Resolved_Type_Conversion): Remove side effects
	of access to unconstrained array type conversion when generating
	C code.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Build_Predicate_Function_Declaration): New
	function, to construct the declaration of a predicate function
	at the end of the current declarative part rather than at the
	(possibly later) freeze point of the type. This also allows uses
	of a type with predicates in instantiations elsewhere.
	(Resolve_Aspect_Expression): New procedure to detect visiblity
	errors in aspect expressions, at the end of the declarative part
	that includes the type declaration.
	* sem_ch3.adb (Complete_Private_Subtype): Propagate properly the
	predicate function from private to full view.
	* einfo.adb (Predicate_Function): Refine search for predicate
	function when type has a full view and predicate function may
	be defined on either view.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* frontend.adb: Passing the root of the tree to
	Unnest_Subprograms().
	* exp_ch6.adb (Expand_N_Subprogram_Body): Remove code that
	took care of adding subprograms to the Unest_Bodies table since
	performing such action too early disables the ability to process
	generic instantiations.
	(Unnest_Subprograms): Adding parameter.
	(Search_Unnesting_Subprograms): New subprogram.
	* exp_ch6.ads (Unnest_Subrograms): Update documentation.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

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

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_unst.adb (Check_Static_Type): For a private type, check
	full view.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Check_Type): Reject an attribute reference in
	an aspect expression, when the prefix of the reference is the
	current instance of the type to which the aspect applies.

2016-04-20  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Enter_Overloaded_Entity): Do not warn about
	hiding unless we're actually hiding something. The previous
	code would (for example) warn about a "<" on a record type
	because it incorrectly thought it was hiding the "<" on Boolean
	in Standard. We need to check that the homonym S is in fact a
	homograph of a predefined operator.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads, exp_util.adb (Build_Procedure_Form): Moved here
	from exp_ch6.adb, for use in SPARK_To_C mode when creating the
	procedure equivalent to a function returning an array, when this
	construction is deferred to the freeze point of the function.
	* sem_util.adb (Is_Unchecked_Conversion_Instance): Include a
	function that renames an instance of Unchecked_Conversion.
	* freeze.adb (Freeze_Subprogram): Generate the proper procedure
	declaration for a function returning an array.
	* exp_ch6.adb (Build_Procedure_Form): Moved to exp_util.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Is_Expanded_Priority_Attribute):
	New predicate to determine that in a context with full run-time,
	a function call is an expansion of a reference to attribute
	Priority.
	* sem_ch5.adb (Analyze_Function_Call): use it.
	* exp_ch5.adb (Expand_N_Subprogram_Call): use it.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb Flag286 is now used as Is_Exception_Handler.
	(Is_Exception_Handler): New routine.
	(Set_Is_Exception_Handler): New routine.
	(Write_Entity_Flags): Output the status of Is_Exception_Handler.
	* einfo.ads New attribute Is_Exception_Handler along with
	occurrences in entities.
	(Is_Exception_Handler): New routine along with pragma Inline.
	(Set_Is_Exception_Handler): New routine along with pragma Inline.
	* exp_ch7.adb (Make_Transient_Block): Ignore blocks generated
	for exception handlers with a choice parameter.
	* sem_ch11.adb (Analyze_Exception_Handlers): Mark the scope
	generated for a choice parameter as an exception handler.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Access_Type): Remove dead code.
	(Constrain_Discriminated_Type): In an instance, if the type has
	unknown discriminants, use its full view.
	(Process_Subtype): Check that the base type is private before
	adding subtype to Private_Dependents list.

2016-04-20  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb: Minor comment fix.

2016-04-20  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb: Fix typos in comments.
	* sem_res.adb (Resolve_Case_Expression): Fix type of case alternatives.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): A reference to the
	current instance of a task type is legal if the prefix is an
	expression of that task type and the selector is an entry or
	entry family.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* a-cfdlli.ads (List): Type is no longer tagged, not needed. Move
	varsize field at the end for efficiency.

2016-04-20  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Do not invoke gprls when the invocation of "gnat
	ls" includes the switch -V.
	* clean.adb: "<target>-gnatclean -P" now calls "gprclean
	--target=<target>"
	* make.adb: "<target>-gnatmake -P" now calls "gprbuild
	--target=<target>"

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Qualify_Type): Do not perform
	partial qualification when the immediate scope is a generic unit.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_unst.adb: Minor reformatting.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Ensure that the
	tag assignment and adjustment preceed the accessibility check.
	* exp_ch7.adb (Is_Subprogram_Call): Reimplemented.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb (Expand_Attributes): Ensure that
	the temporary used to capture the value of attribute 'Old's
	prefix is properly initialized.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_unst.ads, exp_unst.adb (Get_Level, Subp_Index): Moved to library
	level.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch9.adb (Analyze_Task_Type_Declaration): Shut down warning
	in codepeer mode.

2016-04-20  Vincent Celier  <celier@adacore.com>

	* make.adb: Code cleanup.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Help C code
	generation.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Copy_Generic_Node): Handle the special
	qualification installed for universal literals that act as
	operands in binary or unary operators.	(Qualify_Operand): Mark
	the qualification to signal the instantiation mechanism how to
	handle global reference propagation.
	* sinfo.adb (Is_Qualified_Universal_Literal): New routine.
	(Set_Is_Qualified_Universal_Literal): New routine.
	* sinfo.ads New attribute Is_Qualified_Universal_Literal along
	with occurrences in nodes.
	(Is_Qualified_Universal_Literal):
	New routine along with pragma Inline.
	(Set_Is_Qualified_Universal_Literal): New routine along with
	pragma Inline.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem.adb (Do_Analyze): Save and restore Style_Max_Line_Length
	so that the corresponding checks are preserved across compilations
	that include System.Constants in their context.

2016-04-20  Gary Dismukes  <dismukes@adacore.com>

	* sem_type.adb: Minor typo fix and reformatting.
	* a-conhel.ads: Update comment.

2016-04-20  Bob Duff  <duff@adacore.com>

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

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.ads Add new table Universal_Type_Attribute.
	* sem_util.adb (Yields_Universal_Type): Use a table lookup when
	checking attributes.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Init_Stored_Discriminants,
	Init_Visible_Discriminants): New procedures, subsidiary of
	Build_Record_Aggr_Code, to handle properly the construction
	of aggregates for a derived type that constrains some parent
	discriminants and renames others.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Qualify_Universal_Operands): New routine.
	(Save_References_In_Operator): Add explicit qualifications in
	the generic template for all operands of universal type.
	* sem_type.adb (Disambiguate): Update the call to Matches.
	(Matches): Reimplemented.
	* sem_util.ads, sem_util.adb (Yields_Universal_Type): New routine.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Rep_Item_Too_Late): Better error message for
	an illegal aspect that freezes the entity to which it applies.

2016-04-20  Bob Duff  <duff@adacore.com>

	* a-stwibo.ads, a-stzbou.ads
	("="): Add overriding keyword before function to avoid crash when
	compiler is called with -gnatyO (check overriding indicators).

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Check_Policy):  If this
	is a configuration pragma and it uses the ARG syntax, insert
	the rewritten pragma after the current one rather than using
	Insert_Actions.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Backend_Processing_Possible): Add handling of
	C back-end.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-imgllu.adb, sem_util.adb, s-imgint.adb, s-imguns.adb,
	s-imglli.adb: Minor reformatting.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Rewrite_Renamed_Operator): Do not rewrite the
	renamed operator when the associated node appears within a
	pre/postcondition.
	* sem_util.ads, sem_util.adb (In_Pre_Post_Condition): New routine.

2016-04-20  Yannick Moy  <moy@adacore.com>

	* osint.adb (Relocate_Path): Fix test when Path is shorter than Prefix.
	* einfo.adb (Set_Overridden_Operation): Add assertion.
	* sem_util.adb (Unique_Entity): for renaming-as-body return the spec
	entity.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_unst.adb (Append_Unique_Call): New subprogram.
	(Unnest_Subprogram): Replace the unique occurrence
	of Call.Append() by Append_Unique_Call() which protects us from
	adding to the Calls table duplicated entries.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb (Is_GCC_Target): Fix for C backend.
	* xref_lib.ads (Dependencies_Tables): instantiate
	Table package with types that guarantee its safe use.
	* s-imgllu.adb, s-imgint.adb, s-imguns.adb, s-imglli.adb: Avoid nested
	procedures.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Valid]):
	Disable expansion when generating C code.
	* sinfo.ads, inline.ads: Minor editing.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb, contracts.adb, ghost.adb, exp_ch6.adb: Minor
	reformatting.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* contracts.adb (Build_Postconditions_Procedure): Code cleanup.
	* ghost.adb (Os_OK_Ghost_Context.Is_OK_Declaration): Handle the
	declaration of the internally built _postcondition procedure.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* snames.ads-tmpl (Internal_Attribute_Id, Attribute_Class_Array): Fix
	indentation.
	* sem_util.adb (Is_Unchecked_Conversion_Instance):
	defense against library-level renamings of other functions,
	which are never instances of Unchecked_Conversion.
	* einfo.ads: minor fix of casing in comment

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Stub): Do not expand a body
	that has been analyzed and expanded already. Qualify the names
	in the proper body for use in the generation of C code.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* contracts.adb (Build_Postconditions_Procedure): Force its
	inlining when generating C code.
	* sem_attr.adb (Analyze_Attribute_Old_Result): Handle inlined
	_postconditions when generating C code.
	* exp_ch6.adb (Inlined_Subprogram): Inline calls to
	_postconditions when generating C code.
	* sinfo.ads, sinfo.adb (Corresponding_Spec, Set_Corresponding_Spec):
	types of return value and argument changed from Node_Id to
	Entity_Id.

2016-04-20  Vincent Celier  <celier@adacore.com>

	* make.adb, clean.adb, gnatname.adb: Revert previous change for now.

2016-04-20  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset
	the Has_Delayed_Freeze flag on the anonymous instance node.

2016-04-20  Javier Miranda  <miranda@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Remove transient
	scope associated with the renaming object declaration.
	* exp_util.adb (Insert_Actions): Remove handling of iterator
	loop marked as requiring the secondary stack.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Image): Implement
	AI12-0124, which extends the functionality of the attribute so it
	reflects the semantics of GNAT 'Img when applied to scalar types.
	* lib-xref.adb: minor whitespace layout fix.

2016-04-20  Vincent Celier  <celier@adacore.com>

	* clean.adb (Gnatclean): Fail if project file specified and
	gprclean is not available.
	* gnatname.adb: Fail is -P is used and gprname is not available.
	* make.adb (Initialize): Fail if project file specified and
	gprbuild is not available.

2016-04-20  Bob Duff  <duff@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Do not use secondary
	stack when possible.

2016-04-20  Gary Dismukes  <dismukes@adacore.com>

	* par_sco.adb, sem_util.adb, sem_ch13.adb: Minor typo corrections and
	reformatting.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Default_Storage_Pool):
	If the pragma comes from an aspect specification, verify that
	the aspect applies to an entity with a declarative part.
	* exp_ch5.adb: Code cleanup.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_If_Expression): If first expression is
	universal, resolve subsequent ones with the corresponding class
	type (Any_Integer or Any_Real).

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): If expansion is
	disabled, complete the analysis of the iterator name to ensure
	that reference for entities within are properly generated.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* a-dispat.ads (Yield): add Global contract.
	* a-calend.ads, a-reatim.ads: Added Initializes => Clock_Time.
	* a-taside.adb: Added Initializes => Tasking_State.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Build_Invariant_Procedure):
	Reimplement the invariant procedure spec and body insertion.

2016-04-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Add_Invariant): Do not replace
	the saved expression of an invariatn aspect when inheriting
	a class-wide type invariant as this clobbers the existing
	expression. Do not use New_Copy_List as it is unnecessary
	and leaves the parent pointers referencing the wrong part of
	the tree. Do not replace the type references for ASIS when
	inheriting a class-wide type invariant as this clobbers the
	existing replacement.

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Build_Explicit_Dereference): If the designated
	expression is an entity name, generate reference to the entity
	because it will not be resolved again.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
	gnat_rm.texi: Update documentation.

2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* par_sco.adb (Traverse_One, case N_Case_Statement):
	Skip pragmas before the first alternative.
	(Traverse_Handled_Statement_Sequence, Exception_Handlers): Likewise.

2016-04-19  Tristan Gingold  <gingold@adacore.com>

	* adaint.c (__gnat_lwp_self): New function (for darwin).
	* s-osinte-darwin.ads, s-osinte-darwin.adb (lwp_self): Import
	of __gnat_lwp_self.

2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* sem_util.adb (Build_Elaboration_Entity): Always request an
	elab counter when preserving control-flow.

2016-04-19  Olivier Hainque  <hainque@adacore.com>

	* sem_ch13.adb (Build_Invariant_Procedure_Declaration): Set
	Needs_Debug_Info when producing SCOs.
	* par_sco.adb (Traverse_Aspects): Fix categorization of
	Type_Invariant to match actual processing as activated depending
	on pragma Assertion_Policy.
	* sem_prag.adb (Analyze_Pragma): Remove special case for
	Name_Invariant regarding SCO generation, which completely disabled
	the production of SCOs for Invariant pragmas and aspects.

2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb, sem_util.adb, sem_res.adb, sem_attr.adb: Minor
	reformatting.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Profile): Refine predicate that checks
	whether a function that returns a limited view is declared in
	another unit and cannot be frozen at this point.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Component_Count): Handle properly superflat
	arrays, i.e. empty arrays where Hi < Lo - 1, to ensure that the
	return value of the function is Natural, rather than leaving
	the handling of such arrays to the caller of this function.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb, sem_attr.adb, par-prag.adb, exp_aggr.adb, sem_type.adb
	sem_ch12.adb, sem_ch3.adb, exp_ch7.adb, exp_ch9.adb: Code cleanup.
	* sem_res.adb, sem_util.ads, sem_util.adb (Is_OK_Volatile_Context):
	Promoted from being a nested subprogram in Sem_Res.Resolve_Entity_Name
	to publicly visible routine in Sem_Util.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Parameter_Aliasing_Checks): Do not apply
	the check if the type of the actual is By_Reference.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Within_Subprogram_Call): Detect
	also nodes that appear in entry calls.
	(Resolve_Actuals, Insert_Default): Propagate
	dimension information if any, from default expression to the
	copy that appears in the list of actuals.
	* uintp.ads: minor whitespace fix in comment.
	* sem_prag.adb, stringt.adb, inline.adb, lib-xref-spark_specific.adb:
	Minor code cleanup.
	* set_targ.adb (Set_Targ): convert directly from
	Natural to Pos, without intermediate conversion to Int.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch6.adb (Process_Formals): Mark suspicious reference to
	SPARK RM in comment.
	* sem_prag.adb (Analyze_Global_Item): Fix reference to SPARK RM
	in comment.
	* sem_res.adb (Property_Error, Resolve_Actuals): Fix reference
	to SPARK RM in both comment and error message.

2016-04-19  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Possible_Freeze): If the type is an incomplete
	CW type, then the subprogram must have a delayed freeze. This
	ensures that the backend can properly recover the full view when
	elaborating the access subprogram declaration.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Resolve_Attribute, case 'Access): Freeze
	overloadable entity if originally overloaded.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb, exp_ch3.adb, exp_ch7.adb, exp_ch9.adb, exp_code.adb,
	exp_fixd.adb, namet.adb, osint.adb, osint.ads, par-ch2.adb,
	sem_ch10.adb, sem_ch12.adb, sem_disp.adb, sem_elab.adb, sem_elim.adb
	sem_util.adb, styleg.adb, styleg.ads, stylesw.ads: Minor code
	clean up.

2016-04-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Copy_Node_With_Replacement):
	use Set_Comes_From_Source instead of directly manipulating
	internals of the node table.
	* sem_util.adb (Within_Scope): refactored to remove duplicated code.
	* sem_aux.adb (Get_Rep_Pragma,
	Subprogram_Body_Entity, Subprogram_Spec): declare variables that
	do not change as constants and initialize them in the declaration.
	(Get_Rep_Pragma, Subprogram_Body_Entity, Subprogram_Spec): declare
	variables that do not change as constants and initialize them
	in the declaration.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): If the entry has
	preconditions it is rewritten by means of a wrapper that
	incorporates the original call. Before rewriting generate a
	reference to the entry being called to prevent spurious warnings
	and provide correct cross-reference information.

2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_disp.adb (Check_Dispatching_Context): Code cleanup. Add
	local constant Scop. Ignore any internally generated loops when
	performing the check concerning an abstract subprogram call
	without a controlling argument.
	* sem_util.ads, sem_util.adb (Current_Scope_No_Loops): New routine.

2016-04-19  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Check_A_Call): There are cases where we have No
	(Ent) after the Alias loop, even when there was no previous error,
	so we can't assert that there was an error.

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Access_Attribute, OK_Self_Reference):
	Reject use of type name as a prefix to 'access within an aggregate
	in a context that is not the declarative region of a type.

2016-04-19  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Make "gnat ls -P" invoke gprls Make "gnat bind
	-P" invoke "gprbuild -b" Make "gnat link -P" invoke "gprbuild
	-l" Fail if the invocation is "gnat find -P" or "gnat xref -P"
	Remove anything related to project files
	* g-mbdira.adb: minor whitespace cleanup
	* g-spipat.adb: minor removal of extra spaces after closing paren

2016-04-19  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals):  If post-statements are present
	and the enclosing context is a function call or indexing, build
	an Expression_With_Actions for the call.

2016-04-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib-writ.adb (Write_With_Lines): Code cleanup. Do not generate
	a with line for an ignored Ghost unit.
	* sem_ch7.adb (Analyze_Package_Declaration): Add local constant
	Par. A child package is Ghost when its parent is Ghost.
	* sem_prag.adb (Analyze_Pragma): Pragma Ghost can now apply to
	a subprogram declaration that acts as a compilation unit.

2016-04-18  Michael Matz  <matz@suse.de>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Use SET_TYPE_ALIGN.
	(gnat_to_gnu_field): Ditto.
	(components_to_record): Ditto.
	(create_variant_part_from): Ditto.
	(copy_and_substitute_in_size): Ditto.
	(substitute_in_type): Ditto.
	* gcc-interface/utils.c (make_aligning_type): Use SET_TYPE_ALIGN.
	(make_packable_type): Ditto.
	(maybe_pad_type): Ditto.
	(finish_fat_pointer_type): Ditto.
	(finish_record_type): Ditto and use SET_DECL_ALIGN.
	(rest_of_record_type_compilation): Use SET_TYPE_ALIGN.
	(create_field_decl): Use SET_DECL_ALIGN.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* einfo.adb (Overridden_Operation): assert that
	function is called for valid arguments.
	* sem_aggr.adb, sem_ch3.adb, sem_ch5.adb, sem_type.adb,
	s-osinte-vxworks.ads, a-ngcefu.adb, sem_ch10.adb, einfo.ads,
	sem_prag.adb, sem_ch12.adb, sem.adb, i-cobol.ads, freeze.adb,
	sem_util.adb, a-chtgop.ads, s-rannum.adb, exp_ch6.adb, s-bignum.adb,
	s-osinte-freebsd.ads, par-ch5.adb, a-chtgbo.ads, a-cofove.adb:
	No space after closing parenthesis except where required for
	layout.
	* sem_res.adb: Minor reformatting.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Convert into a case
	statement when relevant.

2016-04-18  Bob Duff  <duff@adacore.com>

	* a-cuprqu.adb (Enqueue): Properly handle the
	case where the new element has a unique priority.

2016-04-18  Tristan Gingold  <gingold@adacore.com>

	* adaint.h: Define stat structures and functions for iOS
	simulator.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Resolve_Entry_Call): reset
	Is_Overloaded flag after resolving calls to overloaded protected
	operations.
	* exp_spark.adb (Expand_SPARK): call
	Qualify_Entity_Names for tasking nodes, i.e. protected types,
	task types and entries.
	* exp_ch4.adb (Expand_N_If_Expression): Refine previous change
	in case of an unconstrained type.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_eval.adb, sem_eval.ads (Check_Non_Static_Context): Add
	comment to document usage of subprogram in GNATprove.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Test_Case): Improve error
	message for wrong placement of aspect Test_Case.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads: Update the documentation of attribute Renamed_Object.
	* exp_spark.adb (Expand_Potential_Renaming): Reimplemented.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Optimize_Length_Comparison): Return immediately
	in the case of AAMP (same as for use of the -gnatd.P switch) to
	suppress this optimization, which avoids creating a dependence
	on the 64-bit arithmetic package.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb: Update comment.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch6.adb (Expand_Call): Make sure instantiations are
	registered only once as pending here.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch4.adb, gnat1drv.adb, opt.ads, sem_res.adb
	(Minimize_Expression_With_Actions): New flag.
	(Adjust_Global_Switches): Set Minimize_Expression_With_Actions
	when generating C.
	(Resolve_Short_Circuit): Redo previous change
	using Minimize_Expression_With_Actions.
	(Expand_N_If_Expression,
	Expand_Short_Circuit_Operator): Restore old code to avoid
	Expression_With_Actions when Minimize_Expression_With_Actions
	is set.

2016-04-18  Vincent Celier  <celier@adacore.com>

	* s-os_lib.adb (Non_Blocking_Spawn, version with Stdout_File and
	Stderr_File): Close local file descriptors when no longer needed.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Remove SPARK
	mode check that the type of the cursor in an iteration over
	a formal container is not volatile. The proper check on the
	element type is done elsewhere.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): Do not set a delay freeze on
	a subprogram that returns a class-wide type, if the subprogram
	is a compilation unit, because otherwise gigi will treat the
	subprogram as external, leading to link errors.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_res.adb (Resolve_Short_Circuit): Do not use
	expression-with-actions when generating C.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Apply_Compile_Time_Constraint_Error): Do not generate
	raise node in GNATprove mode.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-fileio.adb: Minor reformatting.
	* sem_prag.adb (Analyze_Input_Item): Add local
	variable Input_OK. Do not consider mappings of generic formal
	parameters to actuals.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Get_Cursor_Type): If iterator type is a derived
	type, the cursor is declared in the scope of the parent type.
	(Analyze_Parameter_Specification): A qualified expression with an
	iterator type indicates an iteration over a container (explicit
	or implicit).

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* osint-c.ads, osint-c.adb (Delete_C_File, Delete_H_File): New.
	* gnat1drv.adb (Gnat1drv): Delete old C files before regenerating them.
	* debug.adb: Reserve -gnatd.4 to force generation of C files.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_eval.adb (Eval_Arithmetic_Op): Do not issue error on static
	division by zero, instead possibly issue a warning.
	* sem_res.adb (Resolve_Arithmetic_Op): Do not issue error on
	static division by zero, instead add check flag on original
	expression.
	* sem_util.adb, sem_util.ads (Compile_Time_Constraint_Error):
	Only issue error when both SPARK_Mode is On and Warn is False.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Force
	warning instead of error when SPARK_Mode is On, on index out of
	bounds, and set check flag for GNATprove.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_In_Out_States.Check_Constituent_Usage):
	Update the comment on usage.  Reimplemented.
	(Check_Input_States.Check_Constituent_Usage): Update the comment
	on usage. A Proof_In constituent can now refine an Input state
	as long as there is at least one Input constituent present.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Inline_Pragma): Use the Sloc of the
	body id as the sloc of the entity in the generated subprogram
	declaration, to avoid spurious conformance errors when style
	checks are enabled.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component, Has_Dereference):
	Refine check on illegal calls to entities within a task body,
	when the entity is declared in an object of the same type. In
	a generic context there might be no explicit dereference but if
	the prefix includes an access type the construct is legal.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* rtsfind.ads, rtsfind.adb (RE_Id, RE_Unit_Table): add
	RE_Default_Priority.

2016-04-18  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Check_Arg_Is_Local_Name): Don't do the check
	if the pragma came from an aspect specification.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* gnat1drv.adb, contracts.adb: Minor reformatting and wording fixes.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): To suppress
	superfluous conformance check on an inlined body with a previous
	spec, use the fact that the generated declaration does not come
	from source. We must treat the entity as coming from source to
	enable some back-end inlining when pragma appears after the body.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* lib-xref-spark_specific.adb, par-ch2.adb, errout.ads,
	exp_intr.adb: Minor reformatting and typo corrections.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Code cleanup.

2016-04-18  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb: Minor reformatting and error message tweaking
	(remove extraneous spaces).

2016-04-18  Johannes Kanig  <kanig@adacore.com>

	* gnat1drv.adb (Gnat1drv): Force loading of System unit for SPARK.

2016-04-18  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Fopen_Mode): If Mode = Out_File, and the file
	exists, and it's a fifo, we use "w" as the open string instead of
	"r+". This is necessary to make a write to the fifo block until
	a reader is ready.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Denote_Same_Function): Account
	for a special case where a primitive of a tagged type inherits
	a class-wide postcondition from a parent type.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch2.adb (P_Expression_Or_Reserved_Word): New routine.
	(P_Pragma): Signal Scan_Pragma_Argument_Association when the use
	of reserved words is OK.
	(Scan_Pragma_Argument_Association):
	Add new formal Reserved_Words_OK and update the comment on
	usage. Code cleanup. Parse an expression or a reserved word in
	identifier form for pragmas Restriction_Warnings and Restrictions
	No_Use_Of_Attribute.
	* restrict.adb (Check_Restriction_No_Use_Of_Attribute):
	Reimplemented.	(Check_Restriction_No_Use_Of_Pragma): Code cleanup.
	(Set_Restriction_No_Specification_Of_Aspect): Properly set the warning
	flag for an aspect.
	(Set_Restriction_No_Use_Of_Attribute): Properly set the warning
	flag for an attribute.	(Set_Restriction_No_Use_Of_Entity):
	Update the parameter profile.
	(Set_Restriction_No_Use_Of_Pragma): Properly set the warning flag for
	a pragma.
	* restrict.ads (Check_Restriction_No_Use_Of_Attribute): Update
	the comment on usage.
	(Set_Restriction_No_Use_Of_Entity): Update the parameter profile.
	* sem_attr.adb (Analyze_Attribute): Check restriction
	No_Use_Of_Attribute.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Check
	restriction No_Use_Of_Attribute before any rewritings have
	taken place.
	* sem_prag.adb (Analyze_Pragma): Check restriction
	No_Use_Of_Pragma before any rewritings have taken place.

2016-04-18  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Is_Inline_Pragma): The pragma
	argument can be a selected component, which has no Chars field,
	so we need to deal with that case (use the Selector_Name).
	(Check_Inline_Pragma): We need to test Is_List_Member before
	calling In_Same_List, because in case of a library unit, they're
	not in lists, so In_Same_List fails an assertion.

2016-04-18  Bob Duff  <duff@adacore.com>

	* namet.ads, namet.adb: Add an Append that appends a
	Bounded_String onto a Bounded_String. Probably a little more
	efficient than "Append(X, +Y);". Also minor cleanup.
	(Append_Decoded, Append_Decoded_With_Brackets, Append_Unqualified,
	Append_Unqualified_Decoded): Make sure these work with non-empty
	buffers.
	* casing.ads, casing.adb (Set_Casing): Pass a Bounded_String
	parameter, defaulting to Global_Name_Buffer.
	* errout.ads, errout.adb (Adjust_Name_Case): Pass a
	Bounded_String parameter, no default.
	* exp_ch11.adb (Expand_N_Raise_Statement): Use local
	Bounded_String instead of Global_Name_Buffer.
	* exp_intr.ads, exp_intr.adb (Write_Entity_Name): Rename it
	to Append_Entity_Name, and pass a Bounded_String parameter,
	instead of using globals.
	(Add_Source_Info): Pass a Bounded_String parameter, instead of
	using globals.
	(Expand_Source_Info): Use local instead of globals.
	* stringt.ads, stringt.adb (Append): Add an Append procedure
	for appending a String_Id onto a Bounded_String.
	(String_To_Name_Buffer, Add_String_To_Name_Buffer): Rewrite in
	terms of Append.
	* sem_prag.adb (Set_Error_Msg_To_Profile_Name): Adjust for new
	Adjust_Name_Case parameter.
	* erroutc.adb, uname.adb: Don't pass D => Mixed_Case to
	Set_Casing; that's the default.
	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Pretend that calls to
	protected subprograms are entry calls; otherwise it is not possible to
	distinguish them from regular subprogram calls.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch13.adb (Has_Good_Profile): Improvement
	of error message. Now indicates subtype_mark of formal parameter
	rather than the formal's name, plus minor rewording.

2016-04-18  Pascal Obry  <obry@adacore.com>

	* adaint.c, adaint.h, s-os_lib.ads: Add new routine Current_Process_Id.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* stringt.adb, exp_ch6.adb, sem_ch13.adb: Minor reformatting.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* par-ch4.adb, sem_prag.adb: Minor reformatting.

2016-04-18  Bob Duff  <duff@adacore.com>

	* sinput.ads, sinput.adb (Build_Location_String): Take a
	parameter instead of using a global variable.  The function
	version no longer destroys the Name_Buffer.
	* stringt.ads, stringt.adb (String_From_Name_Buffer): Take a
	parameter, which defaults to the Global_Name_Buffer, so some
	calls can avoid the global.
	* exp_ch11.adb, exp_intr.adb: Use new interfaces above
	to avoid using globals. All but one call to Build_Location_String
	avoids the global. Only one call to String_From_Name_Buffer
	avoids it.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* namet.adb, namet.ads, exp_unst.adb: Minor reformatting.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_eval.adb (Choice_Matches): Check the expression
	against the predicate values when the choice denotes a
	subtype with a static predicate.
	(Eval_Membership_Op): Code cleanup. Remove the suspicious guard which
	tests for predicates.
	(Is_OK_Static_Subtype): A subtype with a dynamic predicate
	is not static.	(Is_Static_Subtype): A subtype with a dynamic
	predicate is not static.
	* sem_eval.ads (Is_OK_Static_Subtype): Update the comment on usage.
	(Is_Static_Subtype): Update the comment on usage.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Input_Item): Allow
	generic formals to appear as initialization items.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Stream_TSS_Definition,
	Has_Good_Profile): Additional error message to indicate that
	the second parameter of the subprogram must be a first subtype.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper, Is_Inline_Pragma):
	Use the pragma lookahead that determines whether a subprogram
	is to be inlined, when some level of backend optimization is
	required.
	* sem_ch12.ads, sem_ch12.adb (Add_Pending_Instantiation): Factorize
	code used to create an instance body when needed for inlining.
	* exp_ch6.adb (Expand_Call): When a call is to be inlined, and the
	call appears within an instantiation that is not a compilation
	unit, add a pending instantiation for the enclosing instance,
	so the backend can inline in turn the calls contained in the
	inlined body.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Build_Pragma_Check_Equivalent): The mapping
	that relates operations of the parent type to the operations of
	the derived type has three distinct sources:
	a) explicit operations of the derived type carry an
	Overridden_Operation that designates the operation in the
	ancestor.
	b) Implicit operations that are inherited by the derived type
	carry an alias that may be an explicit subprogram (in which case
	it may have an Overridden_ Operation indicator) or may also be
	inherited and carry its own alias.
	c) If the parent type is an interface, the operation of the
	derived type does not override, but the interface operation
	indicates the operation that implements it.
	* sem_prag.adb: Minor reformatting.
	* sem_prag.adb (Check_External_Property): Update
	the comment on usage. Reimplement.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Assignment_Statement): In restricted
	profiles such as ZFP, ceiling priority is not available.

2016-04-18  Bob Duff  <duff@adacore.com>

	* namet-sp.ads: Minor typo fix, ironically in 'Spelling_Checker'.

2016-04-18  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Output_Calls): Use
	Get_Name_String, to clearly indicate that the global Name_Buffer
	is being used. The previous code used Is_Internal_Name, which
	returns a Boolean, but also has a side effect of setting the
	Name_Buffer. Then it called the other Is_Internal_Name, which uses
	the Name_Buffer for its input. And then it called Error_Msg_N,
	again using the Name_Buffer. We haven't eliminated the global
	usage here, but we've made it a bit clearer.
	This also allows us to have a side-effect-free version of
	Is_Internal_Name.
	* namet.ads, namet.adb: Provide a type Bounded_String, along with
	routines that can be used without using global variables. Provide
	Global_Name_Buffer so existing code can continue to use the
	global. Mark the routines that use globals as obsolete.  New code
	shouldn't call the obsolete ones, and we should clean up existing
	code from time to time.
	Name_Find_Str is renamed as Name_Find.
	* namet.h: Changed as necessary to interface to the new version
	of Namet.
	* bindgen.adb, exp_unst.adb: Name_Find_Str is renamed as
	Name_Find.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_util.adb, sem_util.ads (Has_Full_Default_Initialization): used
	outside of GNATprove, hence it should not be removed.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Refinement_Clause):
	The refinement of an external abstract state can now mention
	non-external constituents.
	(Check_External_Property): Update all SPARK RM references.

2016-04-18  Bob Duff  <duff@adacore.com>

	* exp_intr.adb: Remove some duplicated code.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* a-nudira.adb, a-nudira.ads, a-nuflra.adb, a-nuflra.ads: Mark
	package spec and body out of SPARK.

2016-04-18  Johannes Kanig  <kanig@adacore.com>

	* spark_xrefs.ads: Minor comment update.

2016-04-18  Johannes Kanig  <kanig@adacore.com>

	* gnat1drv.adb (Gnat1drv): Force loading of System
	unit for SPARK.

2016-04-18  Bob Duff  <duff@adacore.com>

	* a-cuprqu.adb: Correction to previous change. If a new node
	is inserted at the front of the queue (because it is higher
	priority than the previous front node), we need to update
	Header.Next_Unequal -- not just in the case where the queue was
	previously empty.

2016-04-18  Bob Duff  <duff@adacore.com>

	* a-cuprqu.ads: Change the representation of List_Type from a
	singly-linked list to a doubly-linked list. In addition, add a
	pointer Next_Unequal, which points past a possibly-long chain
	of equal-priority items. This increases efficiency, especially
	in the case of many equal-priority items.
	* a-cuprqu.adb (Dequeue, Enqueue): Rewrite algorithms to take
	advantage of new data structure.
	(Finalize): Rewrite in terms of Dequeue, for simplicity.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* contracts.adb (Analyze_Object_Contract,
	Analyze_Protected_Contract): Remove tests performed in GNATprove.
	* sem_util.adb, sem_util.ads (Has_Full_Default_Initialization):
	Remove query for tests performed in GNATprove.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate): If
	Warn_On_Redundant_Constructs is enabled, report a redundant box
	association that does not cover any components, as it done for
	redundant others associations in case statements.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Collect_Inherited_Class_Wide_Conditions):
	Analyze the generated Check pragma for an inherited condition so
	that it does not freeze the dispatching type of the primitive
	operation, because it is pre-analyzed at the point of the
	subprogram declaration (and not in the subprogram body, as is
	done during regular expansion).

2016-04-18  Vincent Celier  <celier@adacore.com>

	* ali.ads: Increase the range of all _Id types to 100 millions.

2016-04-18  Gary Dismukes  <dismukes@adacore.com>

	* sem_warn.adb (Check_References): Change warning to suggest
	using pragma Export rather than saying "volatile has no effect".

2016-04-18  Bob Duff  <duff@adacore.com>

	* g-souinf.ads (Compilation_ISO_Date): New function to return
	the current date in ISO form.
	* exp_intr.adb (Expand_Source_Info, Add_Source_Info): Expand
	a call to Compilation_ISO_Date into a string literal containing
	the current date in ISO form.
	* exp_intr.ads (Add_Source_Info): Improve documentation.
	* sem_intr.adb (Check_Intrinsic_Subprogram): Recognize
	Compilation_ISO_Date.
	* snames.ads-tmpl (Name_Compilation_ISO_Date): New Name_Id.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb (Set_Elem_Alignment): Extend setting of alignment
	to subtypes that are not first subtypes.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.ads (Collect_Inherited_Class_Wide_Conditions):
	Simplify interface.
	* sem_prag.adb (Collect_Inherited_Class_Wide_Conditions): Insert
	generated pragmas after subprogram declaration, rather than in
	the corresponding subprogram body.
	* sem_ch6.adb (New_Overloaded_Entity): In GNATProve
	mode, if the operation is overridding, call
	Collect_Inherited_Class_Wide_Conditions to generate the
	corresponding pragmas immediately after the corresponding
	subprogram declaration.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* spark_xrefs.ads (Xref_Index, Scope_Index, File_Index): restrict
	type to natural numbers.
	(Stype): document code characters for concurrent entities.

2016-04-18  Olivier Hainque  <hainque@adacore.com>

	* targparm.ads: Update the Frontend_Exceptions default internal
	value.
	(Frontend_Exceptions_On_Target): Change default value to True.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Refine error
	detection when a selected component in the body of a synchronized
	type is a reference to an object of the same type declared
	elsewhere. The construct is legal if the prefix of the selected
	component includes an explicit dereference at any point.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Do not consider
	internally generated expressions when trying to determine whether
	a formal parameter of a tagged type subject to Extensions_Visible
	False is used to initialize an object.
	* sem_ch4.adb (Analyze_Type_Conversion): Do not consider
	internally generated expressions when trying to determine whether
	a formal parameter of a tagged type subject to Extensions_Visible
	False is used in a type conversion.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Is_Protected_Operation_Call):
	Add guards to account for a non-decorated selected component.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Improve
	implementation of Body_Has_SPARK_Mode_On.
	* sem_prag.adb, sem_prag.ads (Get_SPARK_Mode_From_Annotation):
	New function replacing previous Get_SPARK_Mode_From_Pragma, that
	deals also with aspects.
	(Get_SPARK_Mode_Type): Make function internal again.
	* inline.adb, sem_ch7.adb, sem_util.adb: Use new
	Get_SPARK_Mode_From_Annotation.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* contracts.adb (Analyze_Object_Contract): Update references to
	SPARK RM.
	* freeze.adb (Freeze_Entity): Update references to SPARK RM.
	* ghost.adb Add with and use clauses for Sem_Disp.
	(Check_Ghost_Derivation): Removed.
	(Check_Ghost_Overriding):
	Reimplemented.	(Check_Ghost_Policy): Update references to SPARK RM.
	(Check_Ghost_Primitive): New routine.
	(Check_Ghost_Refinement): New routine.	(Is_OK_Ghost_Context):
	Update references to SPARK RM.	(Is_OK_Pragma): Update references
	to SPARK RM. Predicates are now a valid context for references
	to Ghost entities.
	* ghost.ads (Check_Ghost_Derivation): Removed.
	(Check_Ghost_Overriding): Update the comment on usage.
	(Check_Ghost_Primitive): New routine.
	(Check_Ghost_Refinement): New routine.
	(Remove_Ignored_Ghost_Code): Update references to SPARK RM.
	* sem_ch3.adb (Process_Full_View): Remove the now obsolete check
	related to Ghost derivations
	* sem_ch6.adb (Check_Conformance): Remove now obsolete check
	related to the convention-like behavior of pragma Ghost.
	(Check_For_Primitive_Subprogram): Verify that the Ghost policy
	of a tagged type and its primitive agree.
	* sem_prag.adb (Analyze_Pragma): Update references to SPARK
	RM. Move the verification of pragma Assertion_Policy Ghost
	to the proper place. Remove the now obsolete check related
	to Ghost derivations.
	(Collect_Constituent): Add a call to Check_Ghost_Refinement.
	* sem_res.adb (Resolve_Actuals): Update references to SPARK RM.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb: Fix more minor typos in comments.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend.ads, sem_prag.adb, sem_ch6.adb: Minor reformatting.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): In GNATprove
	mode, collect inherited class-wide conditions to generate the
	corresponding pragmas.
	* sem_prag.ads (Build_Pragma_Check_Equivalent): Moved from contracts
	* contracts.adb (Collect_Inherited_Class_Wide_Conditions): New
	procedure for overriding subprograms, used to generate the pragmas
	corresponding to an inherited class- wide pre- or postcondition.
	* sem_prag.adb (Build_Pragma_Check_Equivalent): moved here
	from contracts.adb (Replace_Condition_Entities): Subsidiary
	Build_Pragma_Check_Equivalent, to implement the proper semantics
	of inherited class-wide conditions, as given in AI12-0113.
	(Process_Class_Wide_Condition): Removed.
	(Collect_Inherited_Class_Wide_Conditions): Iterate over pragmas
	in contract of subprogram, to collect inherited class-wide
	conditions.
	(Build_Pragma_Check_Equivalent): Moved to sem_prag.adb

2016-04-18  Yannick Moy  <moy@adacore.com>

	* a-calend.adb (Ada.Calendar): Mark package body as SPARK_Mode Off.
	* a-calend.ads (Ada.Calendar): Mark package spec as
	SPARK_Mode and add synchronous external abstract state Clock_Time.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Call): Prevent inlining of
	calls inside expression functions.  Factor previous code issuing
	errors to call Cannot_Inline instead, which does appropriate
	processing of message for GNATprove.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* einfo.ads, sem_ch3.adb, sem_ch8.adb, osint-l.adb, rtsfind.adb,
	osint-b.adb: Cleanups.

2016-04-18  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Only create
	body to inline in GNATprove mode when SPARK_Mode On applies to
	subprogram body.
	* sem_prag.adb, sem_prag.ads (Get_SPARK_Mode_Type): Make function
	public.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb: Fix minor typo in comment.
	* inline.adb: Fix minor pasto.
	* sem_ch12.ads: Fix minor typos in comments.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Call): Major rewriting to
	handle some complex cases of tag indeterminate calls that are
	actuals in other dispatching calls that are themselves tag
	indeterminate.
	(Check_Dispatching_Context): Add parameter to support recursive
	check for an enclosing construct that may provide a tag for a
	tag-indeterminate call.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part):
	Add global variables Task_Input_Seen and Task_Output_Seen.
	(Analyze_Global_Item): Detect an illegal use of the current
	instance of a single protected/task type in a global annotation.
	(Analyze_Input_Output): Inputs and output related to the current
	instance of a task unit are now tracked.
	(Check_Usage): Require
	the presence of the current instance of a task unit only when
	one input/output is available.	(Current_Task_Instance_Seen):
	New routine.
	(Is_CCT_Instance): New parameter profile. Update
	the comment on usage. The routine now properly recognizes several
	cases related to single protected/task types.

2016-04-18  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Freeze_Entity): Use New_Freeze_Node
	to create a brand new freeze node. This handles a case where an
	ignored Ghost context is freezing something which is not ignored
	Ghost and whose freeze node should not be removed from the tree.
	(New_Freeze_Node): New routine.

2016-04-18  Jerome Lambourg  <lambourg@adacore.com>

	* sigtramp.h (__gnat_set_is_vxsim) New function to
	tell sigtramp-vxworks to handle vxsim signal contexts.	*
	sigtramp-vxworks.c (__gnat_sigtramp) Take into account the
	differences in the sigcontext structure between the expected
	regular x86 or x86_64 ones and the ones received in case of
	exexution on the vxworks simulator.
	* init.c: also compute is_vxsim in case of x86_64-vx7 target. Provide
	this information to sigtramp-vxworks.c. Remove the old mechanism for
	vxsim.
	* init-vxsim.c, sigtramp-vxworks-vxsim.c: remove, now obsolete.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch3.adb (Inline_Init_Proc): New function returning
	whether the initialization procedure of a type should be
	inlined.  Return again True for controlled type themselves.
	(Build_Array_Init_Proc): Call it to set Set_Is_Inlined on Init_Proc.
	(Build_Record_Init_Proc): Likewise.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads (Library_Version): Bump to 7.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Set Inlined flag
	on the entity of a subprogram declaration that is completed by
	an expression function.

2016-04-18  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Current_Instance): A entity given by a subtype
	declaration can appear in an aspect specification for a dynamic
	predicate, and a pragma for aspect Predicate_Failure.
	* exp_util.adb (Replace_Subtype_References): Replace current
	occurrences of the subtype to which a dynamic predicate applies,
	byt the expression that triggers a predicate check. Needed to
	implement new aspect Predicate_Failure.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* a-intsig.ads, a-intsig.adb: Removed, no longer used.
	* Makefile.rtl: update accordingly.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_type.adb (Disambiguate): Call Covers only when necessary
	for standard operators.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* atree.ads (Num_Extension_Nodes): Add couple of figures
	to comment.
	* atree.adb: Add GNAT.Heap_Sort_G dependency.
	(Print_Statistics): New exported procedure to print statistics.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch3.adb (Build_Record_Init_Proc): Do not mark the procedure
	as to be inlined if the type needs finalization.

2016-04-18  Jerome Lambourg  <lambourg@adacore.com>

	* sigtramp-vxworks-target.inc: sigtramp-vxworks: force the stack
	alignment for x86_64.
	* init.c: Better fix for guard page reset on x86_64-vx7.
	Do not try to retrieve the page that actually raised
	the signal as the probing mechanism used on x86_64 do not allow
	such retrieval. We thus just test if the guard page is active,
	and re-activate it if not.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* a-sytaco.adb (Suspension_Object): Aspect Default_Initial_Condition
	added.

2016-04-18  Jerome Lambourg  <lambourg@adacore.com>

	* affinity.c: Use the proper type for task id.
	* init.c (__gnat_inum_to_ivec): ivec is a pointer.

2016-04-18  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Process_Convention): Relax rule on exporting
	Intrinsic types if Relaxed_RM_Semantics is True.

2016-04-18  Vincent Celier  <celier@adacore.com>

	* sem_ch3.adb, lib.ads, sinfo.ads, sem_ch10.adb, einfo.adb, einfo.ads,
	checks.ads, sem_ch12.adb, sem.adb, sem_util.adb, sem_util.ads,
	sem_res.adb, sem_attr.adb, par.adb, exp_ch4.adb, errout.ads,
	sem_ch4.adb, atree.adb, atree.ads, sem_warn.adb, treepr.adb,
	exp_ch3.ads, exp_unst.adb: Change "descendent" to
	"descendant" in comments, error messages and identifiers.
	* gcc-interface/decl.c: Ditto.

2016-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_type.adb (Operator_Matches_Spec): Call First_Formal on
	New_S only once at the beginning of the function.

2016-04-02  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Restrict the previous
	change to fields with variable size.

2016-03-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Add special case for
	single field with representation clause at offset 0.

2016-03-16  Svante Signell  <svante.signell@gmail.com>

	* gcc-interface/Makefile.in: Add support for x86 GNU/Hurd.
	* s-osinte-gnu.ads: New file.

2016-03-13  Eric Botcazou  <ebotcazou@adacore.com>

	* system-vxworks-m68k.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-mips.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-ppc.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-sparcv9.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.
	* system-vxworks-x86.ads (Stack_Check_Probes): Set to True.
	(Stack_Check_Limits): Set to False.

2016-03-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (statement_node_p): New predicate.
	(gnat_to_gnu): Invoke it to detect statement nodes.  In ASIS mode, do
	not return dummy results for expressions attached to packed array
	implementation types.

2016-03-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Always mark
	the expression of a renaming manually in case #3.

2016-03-02  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* system-linux-s390.ads: Enable Stack_Check_Probes.
	* system-linux-s390.ads: Likewise.

2016-02-29  Martin Liska  <mliska@suse.cz>

	* gcc-interface/utils.c (set_reverse_storage_order_on_pad_type):
	Replace ENABLE_CHECKING macro with flag_checking.

2016-02-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Retrofit
	handling of unconstrained array types as designated types into common
	processing.  Also handle array types as incomplete designated types.

2016-02-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <Concurrent types>: In
	ASIS mode, fully lay out the minimal record type.

2016-02-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (finalize_nrv_r): Remove obsolete code.
	(build_return_expr): Likewise.
	(Call_to_gnu): If this is a function call and there is no target,
	create a temporary for the return value for all aggregate types,
	but never create it for a return statement.  Push a binding level
	around the call in more cases.  Remove obsolete code.

2016-02-29  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (DECL_RETURN_VALUE_P): New macro.
	* gcc-interface/gigi.h (gigi): Remove useless attribute.
	(gnat_gimplify_expr): Likewise.
	(gnat_to_gnu_external): Declare.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Factor out
	code dealing with the expression of external constants into...
	Invoke gnat_to_gnu_external instead.
	<E_Variable>: Invoke gnat_to_gnu_external to translate renamed objects
	when not for a definition.  Deal with COMPOUND_EXPR and variables with
	DECL_RETURN_VALUE_P set for renamings and with the case of a dangling
	'reference to a function call in a renaming.  Remove obsolete test and
	adjust associated comment.
	* gcc-interface/trans.c (Call_to_gnu): Set DECL_RETURN_VALUE_P on the
	temporaries created to hold the return value, if any.
	(gnat_to_gnu_external): ...this.  New function.
	* gcc-interface/utils.c (create_var_decl): Detect a constant created
	to hold 'reference to function call.
	* gcc-interface/utils2.c (build_unary_op) <ADDR_EXPR>: Add folding
	for COMPOUND_EXPR in the DECL_RETURN_VALUE_P case.

2016-02-17  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_N_Indexed_Component): Activate synchronization if
	the prefix denotes an entity which Has_Atomic_Components.
	* gcc-interface/trans.c (node_is_atomic): Return true if the prefix
	denotes an entity which Has_Atomic_Components.

2016-02-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (gnat_protect_expr): Make a SAVE_EXPR only
	for fat pointer or scalar types.

2016-02-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (maybe_debug_type): New inline function.
	* gcc-interface/misc.c (gnat_get_array_descr_info): Use it.
	Call maybe_character_value on the array bounds.  Get to the base type
	of the index type and call maybe_debug_type on it.
	* gcc-interface/utils.c (finish_character_type): Add special treatment
	for char_type_node.

2016-02-16  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_enum_underlying_base_type): New function.
	(LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE): Define to above.

2016-02-12  Jakub Jelinek  <jakub@redhat.com>

	* prj-tree.ads: Spelling fixes - behaviour -> behavior and
	neighbour -> neighbor.
	* prep.adb: Likewise.
	* prj.ads: Likewise.
	* prepcomp.adb: Likewise.
	* g-socket.ads: Likewise.
	* s-imgrea.adb: Likewise.
	* a-calend.adb: Likewise.
	* exp_disp.adb: Likewise.
	* doc/gnat_ugn/gnat_utility_programs.rst: Likewise.
	* g-socket.adb: Likewise.
	* sem_ch12.adb: Likewise.
	* terminals.c: Likewise.

2016-02-08  Bernd Schmidt  <bschmidt@redhat.com>

	* gcc-interface/misc.c (gnat_init): Remove second argument in call to
	build_common_tree_nodes.

2016-02-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (create_var_decl): Set again DECL_COMMON and
	DECL_IGNORED_P last.

2016-01-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (enum attr_type): Rename into...
	(enum attrib_type): ...this.
	(struct attrib): Adjust.
	* gcc-interface/decl.c (prepend_one_attribute): Likewise.

2016-01-20  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch2.adb (Expand_Current_Value): Make an appropriate character
	literal if the entity is of a character type.
	* gcc-interface/lang.opt (fsigned-char): New option.
	* gcc-interface/misc.c (gnat_handle_option): Accept it.
	(gnat_init): Adjust comment.
	* gcc-interface/gigi.h (finish_character_type): New prototype.
	(maybe_character_type): New inline function.
	(maybe_character_value): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Type>: For
	a character of CHAR_TYPE_SIZE, make a signed type if flag_signed_char.
	Set TYPE_ARTIFICIAL early and call finish_character_type on the type.
	<E_Enumeration_Subtype>: For a subtype of character with RM_Size and
	Esize equal to CHAR_TYPE_SIZE, make a signed type if flag_signed_char.
	Copy TYPE_STRING_FLAG from type to subtype.
	<E_Array_Type>: Deal with character index types.
	<E_Array_Subtype>: Likewise.
	* gcc-interface/trans.c (gigi): Replace unsigned_char_type_node with
	char_type_node throughout.
	(build_raise_check): Likewise.
	(get_type_length): Deal with character types.
	(Attribute_to_gnu) <Attr_Pos>: Likewise.  Remove obsolete range check
	code.  Minor tweak.
	<Attr_Pred>: Likewise.
	(Loop_Statement_to_gnu): Likewise.
	(Raise_Error_to_gnu): Likewise.
	<N_Indexed_Component>: Deal with character index types.  Remove
	obsolete code.
	<N_Slice>: Likewise.
	<N_Type_Conversion>: Deal with character types.  Minor tweak.
	<N_Unchecked_Type_Conversion>: Likewise.
	<N_In>: Likewise.
	<N_Op_Eq>: Likewise.
	(emit_index_check): Delete.
	* gcc-interface/utils.c (finish_character_type): New function.
	(gnat_signed_or_unsigned_type_for): Deal with built-in character types.
	* gcc-interface/utils2.c (expand_sloc): Replace unsigned_char_type_node
	with char_type_node.
	(build_call_raise): Likewise.
	(build_call_raise_column): Likewise.
	(build_call_raise_range): Likewise.

2016-01-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (build_call_raise_column): Adjust prototype.
	(build_call_raise_range): Likewise.
	(gnat_unsigned_type): Delete.
	(gnat_signed_type): Likewise.
	(gnat_signed_or_unsigned_type_for): New prototype.
	(gnat_unsigned_type_for): New inline function.
	(gnat_signed_type_for): Likewise.
	* gcc-interface/cuintp.c (build_cst_from_int): Call build_int_cst.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Likewise.
	(gnat_to_gnu_entity) <E_Array_Type>: Always translate the index types
	and compute their base type from that.
	<E_Array_Subtype>: Remove duplicate declaration.
	* gcc-interface/misc.c (get_array_bit_stride): Call build_int_cst.
	* gcc-interface/trans.c (get_type_length): Likewise.
	(Attribute_to_gnu): Likewise.
	(Loop_Statement_to_gnu): Likewise.
	(Call_to_gnu): Likewise.
	(gnat_to_gnu): Call build_real, build_int_cst, gnat_unsigned_type_for
	and gnat_signed_type_for.  Minor tweaks.
	(build_binary_op_trapv): Likewise.
	(emit_check): Likewise.
	(convert_with_check): Likewise.
	(Raise_Error_to_gnu): Adjust calls to the build_call_raise family of
	functions.  Minor tweaks.
	(Case_Statement_to_gnu): Remove dead code.
	(gnat_to_gnu): Call gnat_unsigned_type_for and gnat_signed_type_for.
	(init_code_table): Minor reordering.
	* gcc-interface/utils.c (gnat_unsigned_type): Delete.
	(gnat_signed_type): Likewise.
	(gnat_signed_or_unsigned_type_for): New function.
	(unchecked_convert): Use directly the size in the test for precision
	vs size adjustments.
	(install_builtin_elementary_types): Call gnat_signed_type_for.
	* gcc-interface/utils2.c (nonbinary_modular_operation): Call
	build_int_cst.
	(build_goto_raise): New function taken from...
	(build_call_raise): ...here.  Call it.
	(build_call_raise_column): Add KIND parameter and call it.
	(build_call_raise_range): Likewise.

2016-01-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (TYPE_IMPLEMENTS_PACKED_ARRAY_P): Rename to
	(TYPE_IMPL_PACKED_ARRAY_P): ...this.
	(TYPE_CAN_HAVE_DEBUG_TYPE_P): Do not test TYPE_DEBUG_TYPE.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Simplify NULL_TREE tests
	and tweak gnat_encodings tests throughout.
	(initial_value_needs_conversion): Likewise.
	(intrin_arglists_compatible_p): Likewise.
	* gcc-interface/misc.c (gnat_print_type): Likewise.
	(gnat_get_debug_type): Likewise.
	(gnat_get_fixed_point_type_info): Likewise.
	(gnat_get_array_descr_info): Likewise.
	(get_array_bit_stride): Likewise.
	(gnat_get_type_bias): Fix formatting.
	(enumerate_modes): Likewise.
	* gcc-interface/trans.c (gnat_to_gnu): Likewise.
	(add_decl_expr): Simplify NULL_TREE test.
	(end_stmt_group): Likewise.
	(build_binary_op_trapv): Fix formatting.
	(get_exception_label): Use switch statement.
	(init_code_table): Move around.
	* gcc-interface/utils.c (global_bindings_p): Simplify NULL_TREE test.
	(gnat_poplevel): Likewise.
	(gnat_set_type_context): Likewise.
	(defer_or_set_type_context): Fix formatting.
	(gnat_pushdecl): Simplify NULL_TREE test.
	(maybe_pad_type): Likewise.
	(add_parallel_type): Likewise.
	(create_range_type): Likewise.
	(process_deferred_decl_context): Likewise.
	(convert): Likewise.
	(def_builtin_1): Likewise.
	* gcc-interface/utils2.c (find_common_type): Likewise.
	(build_binary_op): Likewise.
	(gnat_rewrite_reference): Likewise.
	(get_inner_constant_reference): Likewise.

2016-01-18  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/69219
	* gcc-interface/trans.c (check_inlining_for_nested_subprog): Consider
	the parent function instead of the current function in order to issue
	the warning or the error.  Add guard for ignored functions.

2016-01-17  Jakub Jelinek  <jakub@redhat.com>

	* adaint.c (__gnat_killprocesstree): Avoid -Wparentheses warning.

2016-01-15  Jakub Jelinek  <jakub@redhat.com>

	* adaint.c (__gnat_locate_exec_on_path): Use const char * instead
	of char * for path_val to avoid warnings.

2016-01-06  Pierre-Marie de Rodat  <derodat@adacore.com>

	* gcc-interface/utils.c: Bump copyright year.
	(rest_of_record_type_compilation): Add XVE/XVU parallel types to
	the current lexical scope.

2016-01-04  Jakub Jelinek  <jakub@redhat.com>

	* gnat_ugn.texi: Bump @copying's copyright year.
	* gnat_rm.texi: Likewise.

2016-01-02  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatvsn.ads: Bump copyright year.


Copyright (C) 2016 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.
