2013-12-20  Trevor saunders  <tsaunders@mozilla.com>

	* gcc-interface/decl.c (components_to_record): Replace stack_vec with
	auto_vec.

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

	* gcc-interface/Makefile.in (ARM linux, GNU eabi): Tweak regexp.

2013-12-12  Eric Botcazou  <ebotcazou@adacore.com>
	    Iain Sandoe  <iain@codesourcery.com>

	PR ada/55946
	* gcc-interface/Make-lang.in (ada/doctools/xgnatugn): Use gnatmake.
	* gcc-interface/Makefile.in (GCC_LINK): Add LDFLAGS.
	(../../gnatmake): Remove LDFLAGS.
	(../../gnatlink): Likewise.

2013-12-04  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/59382
	* indepsw-darwin.adb: New file.

2013-12-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Add specific handling
	for fields with zero size and no representation clause.

2013-12-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Case_Statement_to_gnu): Do not push a binding
	level for each branch if this is a case expression in Ada 2012.
	(gnat_to_gnu) <case N_Expression_With_Actions>: Adjust comment.

2013-11-29  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/54040
	PR ada/59346
	* s-osinte-hpux.ads (timespec): Change type of tv_nsec field to time_t.
	* s-osinte-kfreebsd-gnu.ads (timespec): Likewise.
	* s-osinte-solaris-posix.ads (timespec): Likewise.

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

	* gcc-interface/trans.c (Loop_Statement_to_gnu): Set TREE_SIDE_EFFECTS
	on the conditional expression directly.

2013-11-22  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/trans.c: Add required include files from gimple.h.

2013-11-22  David Malcolm  <dmalcolm@redhat.com>

	* gcc-interface/utils2.c (build_call_raise): Remove use of
	input_line macro.
	(build_call_raise_range): Likewise.
	(build_call_raise_column): Likewise.

2013-11-20  Kenneth Zadeck  <zadeck@naturalbridge.com>
	    Mike Stump  <mikestump@comcast.net>
	    Richard Sandiford  <rdsandiford@googlemail.com>

	* gcc-interface/cuintp.c (UI_From_gnu): Use tree_to_shwi.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use tree_to_uhwi.
	* gcc-interface/utils.c (make_packable_type): Likewise.

2013-11-18  Richard Sandiford  <rdsandiford@googlemail.com>

	* gcc-interface/cuintp.c (UI_From_gnu): Use tree_to_shwi rather than
	tree_low_cst.

2013-11-18  Richard Sandiford  <rdsandiford@googlemail.com>

	* gcc-interface/decl.c, gcc-interface/utils.c, gcc-interface/utils2.c:
	Replace tree_low_cst (..., 1) with tree_to_uhwi throughout.

2013-11-18  Richard Sandiford  <rdsandiford@googlemail.com>

	* gcc-interface/cuintp.c: Update comments to refer to
	tree_fits_shwi_p rather than host_integerp.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use tree_fits_uhwi_p
	rather than host_integerp.
	* gcc-interface/utils.c (rest_of_record_type_compilation): Likewise.

2013-11-18  Richard Sandiford  <rdsandiford@googlemail.com>

	* gcc-interface/decl.c, gcc-interface/misc.c, gcc-interface/utils.c:
	Replace host_integerp (..., 1) with tree_fits_uhwi_p throughout.

2013-11-18  Richard Sandiford  <rdsandiford@googlemail.com>

	* gcc-interface/cuintp.c: Replace host_integerp (..., 0) with
	tree_fits_shwi_p throughout.

2013-11-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (TARGET_ABI_OPEN_VMS): Delete as redundant.

2013-11-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Call_to_gnu): For an Out parameter passed by
	copy and that don't need to be  copied in, only evaluate its address.

2013-11-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Deal with an
	error mark as renamed object in type annotating mode.

2013-11-15  H.J. Lu  <hongjiu.lu@intel.com>

	PR ada/54040
	* s-linux-x32.ads: New file.
	* s-osprim-x32.adb: Likewise.
	* s-linux.ads (time_t): New type.
	* s-linux-alpha.ads (time_t):  Likewise.
	* s-linux-hppa.ads (time_t):  Likewise.
	* s-linux-mipsel.ads (time_t):  Likewise.
	* s-linux-sparc.ads (time_t):  Likewise.
	* s-osinte-linux.ads (time_t): Mark it private.  Replace long
	with System.Linux.time_t.
	(timespec): Replace long with time_t.
	* s-osinte-posix.adb (To_Timespec): Likewise.
	* s-taprop-linux.adb (timeval): Replace C.long with
	System.OS_Interface.time_t.
	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS): Replace
	s-linux.ads with s-linux-x32.ads, s-osprim-posix.adb with
	s-osprim-x32.adb for x32.

2013-11-14  H.J. Lu  <hongjiu.lu@intel.com>

	* gcc-interface/trans.c: Include gimple.h and pointer-set.h.

2013-11-14  Diego Novillo  <dnovillo@google.com>

	* gcc-interface/decl.c: Include stringpool.h
	Include stor-layout.h
	* gcc-interface/misc.c: Include stor-layout.h
	Include print-tree.h
	* gcc-interface/trans.c: Include stringpool.h
	Include stor-layout.h
	Include stmt.h
	Include varasm.h
	* gcc-interface/utils.c: Include stringpool.h
	Include stor-layout.h
	Include attribs.h
	Include varasm.h
	* gcc-interface/utils2.c: Include stringpool.h
	Include stor-layout.h
	Include attribs.h
	Include varasm.h

2013-11-12  Andrew MacLeod  <amacleod@redhat.com>

	* gcc-interface/trans.c: Include gimplify.h.

2013-11-11  Tristan Gingold  <gingold@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (gnat_build_constructor): Also set the flag
	CONSTRUCTOR_NO_CLEARING on the constructor.

2013-10-30  Sharad Singhai  <singhai@google.com>

	* gnat_ugn.texi: Remove option description for PR middle-end/58134.

2013-10-29  David Malcolm  <dmalcolm@redhat.com>

	* gcc-interface/trans.c (finalize_nrv): Update for conversion of
	symtab types to a true class hierarchy.
	* gcc-interface/utils.c (gnat_write_global_declarations): Likewise.

2013-10-28  Trevor Saunders  <tsaunders@mozilla.com>

	* gcc-interface/decl.c (components_to_record): Adjust stack vector.

2013-10-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Make-lang.in (ADA_DEPS): Fix quoting.

2013-10-19  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/Makefile.in: Use canonical absolute path to refer to
	the top source directory and to the libgcc subidrectories.

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

	* gcc-interface/utils.c (scale_by_factor_of): New function.
	(rest_of_record_type_compilation): Use scale_by_factor_of in order to
	scale the original offset for both rounding cases; in the second case,
	take into accout the addend to compute the alignment.  Tidy up.

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

	* gcc-interface/cuintp.c: Remove useless include directives.
	(build_cst_from_int): Use standard predicate.
	(UI_To_gnu): Simplify.
	(UI_From_gnu): Fix formatting.
	* gcc-interface/trans.c (post_error): Likewise.
	(post_error_ne): Likewise.

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

	* gcc-interface/utils.c (gnat_set_type_context): New function.
	(gnat_pushdecl): Use it to set the context of the type.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Dependency_Clause):
	Recognize the scenario where successful clause matching has
	depleted the available refinement items and the clause to match
	technically refines to null => null.

2013-10-17  Tristan Gingold  <gingold@adacore.com>

	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): Specify
	External_Name instead of Link_Name for the RTTI declaration.

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Record_Possible_Body_Reference): Fix test for
	being in body.
	(Add_Constituent): Merged into Check_Refined_Global_Item.
	(Check_Matching_Constituent): A constituent that has the proper Part_Of
	option and comes from a private child or a sibling is now collected.
	(Check_Matching_Modes): Merged into Check_Refined_Global_Item.
	(Check_Refined_Global_Item): Code cleanup.
	(Collect_Constituent): New routine.
	(Inconsistent_Mode_Error): Moved out from Check_Matching_Modes.

2013-10-17  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Check_Current_Instance, Process): Add RM reference
	and mention immutably limited types, when the current instance
	is illegal in Ada 2012.

2013-10-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Check_Unused_Withs): If the main unit is a
	subunit, apply the check to the units mentioned in its context
	only. This provides additional warnings on with_clauses that
	are superfluous.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Emit an
	error message concerning state refinement when the spec defines at
	least one non-null abstract state and the body's SPARK mode is On.
	(Requires_State_Refinement): New routine.

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* sem_ch7.ads: Comment fixes.

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* sem_ch7.adb (Analyze_Package_Specification): Remove circuit
	for ensuring that a package spec requires a body for some other
	reason than that it contains the declaration of an abstract state.

2013-10-17  Tristan Gingold  <gingold@adacore.com>

	* exp_ch11.adb (Expand_N_Raise_Expression): Fix call of
	Possible_Local_Raise.

2013-10-17  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb (Expand_Bit_Packed_Element_Set): Unchecked
	conversion of Or_Rhs to Etype of New_Rhs is required only when
	the latter is the result of a byte swap operation.

2013-10-17  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Build_To_Any_Function): For a type with opaque
	representation that is not transmitted as an unconstrained value,
	use 'Write, not 'Output, to generate the opaque representation.

2013-10-17  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Short_Circuit): Only
	generate expression-with-action when full expansion is set.

2013-10-17  Yannick Moy  <moy@adacore.com>

	* debug.adb Remove obsolete comment.

2013-10-17  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Process_Transient_Object.Find_Enclosing_Contexts):
	Avoid late insertion when expanding an expression with action
	nested within a transient block; Do not inconditionally generate
	a finalization call if the generated object is from a specific
	branch of a conditional expression.

2013-10-17  Pascal Obry  <obry@adacore.com>

	* g-arrspl.adb: Ensure Finalize call is idempotent.
	* g-arrspl.adb (Finalize): Makes the call idempotent.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Is_Matching_Input): Account
	for the case where a state with a null refinement appears as
	the last input of a refinement clause.

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* sem_aux.ads, sem_aux.adb: Minor reformatting.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb, aspects.ads, sem_prag.ads: Remove all entries
	for Refined_Pre from the various tables.
	* par-prag.adb: Remove the entry for Refined_Pre from the list
	of pragmas not needing special processing by the parser.
	* sem_ch13.adb (Analyze_Aspect_Specifications):
	Remove the processing for aspect Refined_Pre.
	(Check_Aspect_At_Freeze_Point): Remove the entry for aspect
	Refined_Pre.
	* sem_prag.adb (Analyze_Pragma): Refined_Pre is no longer a
	valid assertion kind. Remove the analysis of pragma Refined_Pre.
	(Analyze_Refined_Pragma): Update the comment on usage.
	(Find_Related_Subprogram_Or_Body): Update the comment on
	usage. Pragma Refined_Pre is no longer processed by this routine.
	(Is_Valid_Assertion_Kind): Refined_Pre is no longer a valid
	assertion kind.
	* snames.ads-tmpl: Remove predefined name Refined_Pre. Remove
	the pragma id for Refined_Pre.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, exp_util.ads (Entity_Of): Moved to Sem_Util.
	* sem_prag.adb (Analyze_Global_In_Decl_List): Mark a null
	item list as being analyzed.
	(Analyze_Global_List): Mark a
	null global list and multiple global items as being analyzed.
	(Analyze_Input_Item): Check the unit that defines the input
	variable or state, not the reference to it.
	* sem_util.ads, sem_util.adb (Entity_Of): Moved from Exp_Util. Ensure
	that the input has an entity.

2013-10-17  Thomas Quinot  <quinot@adacore.com>

	* exp_util.adb (Get_Current_Value_Condition,
	Set_Current_Value_Condition): Handle the case of expressions
	with actions * exp_util.adb (Insert_Actions): Handle the case
	of an expression with actions whose Actions list is empty.
	* exp_util.adb (Remove_Side_Effects.Side_Effect_Free): An
	expression with actions that has no Actions and whose Expression
	is side effect free is itself side effect free.
	* exp_util.adb (Remove_Side_Effects): Do not set an incorrect etype on
	temporary 'R' (Def_Id), which is in general an access to Exp_Type, not
	an Exp_Type.
	* sem_res.adb (Resolve): For an expression with
	actions, resolve the expression early.	* sem_res.adb
	(Resolve_Expression_With_Actions): Rewrite an expression with
	actions whose value is compile time known and which has no
	actions into just its expression, so that its constant value is
	available downstream.
	* sem_res.adb (Resolve_Short_Circuit):
	Wrap the left operand in an expression with actions to contain
	any required finalization actions.
	* exp_ch4.adb (Expand_Expression_With_Actions): For an
	expression with actions returning a Boolean expression, ensure
	any finalization action is kept within the Actions list.
	* sem_warn.adb (Check_References, Check_Unset_Reference): add
	missing circuitry to handle expressions with actions.
	* checks.adb (Ensure_Valid): For an expression with actions,
	insert the validity check on the Expression.
	* sem_ch13.adb (Build_Static_Predicate.Get_RList): An expression
	with actions that has a non-empty Actions list is not static. An
	expression with actions that has an empty Actions list has the
	static ranges of its Expression.
	* sem_util.adb (Has_No_Obvious_Side_Effects): An expression with
	actions with an empty Actions list has no obvious side effects
	if its Expression itsekf has no obvious side effects.

2013-10-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.ads, sem_aux.adb (Is_Immutably_Limited_Type): Make
	predicate compatible with Ada 2012 definition
	(Is_Limited_View): New name for previous version of
	Is_Immutably_Limited_Type.  Predicate is true for an untagged
	record type with a limited component.
	* exp_ch7.adb, exp_ch6.adb, exp_ch4.adb, exp_ch3.adb, exp_aggr.adb,
	sem_util.adb, sem_res.adb, sem_prag.adb, sem_attr.adb, sem_ch8.adb,
	sem_ch6.adb, sem_ch3.adb, exp_util.adb: Use Is_Limited_View
	* freeze.adb Use Is_Immutably_Limited_Type to check the legality
	of references to the current instance, Is_Limited_View otherwise.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Flag aspect
	Refined_Pre as not supported.
	* sem_prag.adb (Analyze_Pragma): Ignore pragma Refined_Pre.

2013-10-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validated_Access_Subprogram_Instance): According
	to AI05-288, actuals for access_to_subprograms must be subtype
	conformant with the generic formal.  Previous to AI05-288
	only mode conformance was required, but the AI is a binding
	interpretation that applies to previous versions of the language,

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Minor text correction.
	* ug_words: Add entry for -gnateu /IGNORE_UNRECOGNIZED.
	* vms_data.ads: Add /IGNORE_UNRECOGNIZED for -gnateu.

2013-10-17  Tristan Gingold  <gingold@adacore.com>

	* impunit.adb (Non_Imp_File_Names_95): Add g-cppexc.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Constituent): Move the check
	concerning option Part_Of to routine Check_Matching_Constituent.
	(Check_Matching_Constituent): Verify that an abstract state
	that acts as a constituent has the proper Part_Of option in
	its aspect/pragma Abstract_State.  Account for the case when a
	constituent comes from a private child or private sibling.
	* sem_util.ads, sem_util.adb (Is_Child_Or_Sibling): New routine.

2013-10-17  Tristan Gingold  <gingold@adacore.com>

	* g-cppexc.adb, g-cppexc.ads: New files.
	* gcc-interface/Makefile.in: Add g-cppexc when building zcx runtimes.

2013-10-17  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb: Minor reformatting.

2013-10-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Process_Minus, Process_Divide): Label dimension
	expression with standard operator and type, for pretty-printing
	use.

2013-10-17  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Document --pp-new and --pp-old switches.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Flag 159 is now known as From_Limited_With. Replace
	all references to attribute From_With_Type with From_Limited_With.
	(From_With_Type): Renamed to From_Limited_With.
	(Set_From_With_Type): Renamd to Set_From_Limited_With.
	* einfo.ads: Remove attribute From_With_Type and occurrences in
	nodes.	Add attribute From_Limited_With along with occurrences
	in nodes.
	(From_With_Type): Renamed to From_Limited_With along with pragma Inline.
	(Set_From_With_Type): Renamed to
	Set_From_Limited_With along with pragma Inline.
	* sem_ch7.adb, sem_ch8.adb, sem_ch12.adb, sem_ch13.adb, sem_disp.adb,
	sem_res.adb, sem_type.adb, sem_util.adb, sem_warn.adb,
	exp_attr.adb, exp_disp.adb, freeze.adb, itypes.adb, layout.adb,
	lib-writ.adb, rtsfind.adb, sem_attr.adb, sem_aux.adb, sem_ch3.adb,
	sem_ch4.adb: Replace all references to attribute From_With_Type
	with From_Limited_With.
	* sem_ch6.adb: Replace all references to attribute From_With_Type
	with From_Limited_With.
	(Designates_From_With_Type): Renamed to Designates_From_Limited_With.
	(Process_Formals): Update the call to Designates_From_With_Type.
	* sem_ch10.adb: Replace all references to attribute From_With_Type
	with From_Limited_With.
	(Build_Limited_Views): Reimplemented.
	* gcc-interface/decl.c Replace all references to attribute
	From_With_Type with From_Limited_With.
	(finalize_from_with_types): Renamed to finalize_from_limited_with.
	* gcc-interface/gigi.h (finalize_from_with_types): Renamed to
	finalize_from_limited_with.
	* gcc-interface/trans.c: Replace all references to attribute
	From_With_Type with From_Limited_With.
	(Compilation_Unit_to_gnu): Update the call to finalize_from_with_types.

2013-10-17  Pascal Obry  <obry@adacore.com>

	* projects.texi: Update VCS_Kind documentation.

2013-10-17  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb, a-coinve.adb, a-cobove.adb (Insert, Insert_Space):
	Inspect value range before converting type.

2013-10-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Flag the use of pragma Refined_Pre as
	illegal.

2013-10-17  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Remove VMS conversion of -gnatet and -gnateT,
	now that they are both in ug_words.
	* ug_words: Update qualifier for -gnatet Add qualifier for -gnateT
	* vms_data.ads: Update qualifier for -gnatet Add qualifier
	for -gnateT
	* projects.texi: Continue to update the project documentation
	for VMS.

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Has_Body_References): New flag.
	(Body_References): New field.
	* sem_prag.adb (Record_Possible_Body_Reference): New procedure
	(Analyze_Input_Output): Call Record_Possible_Body_Reference
	(Analyze_Global_Item): Call Record_Possible_Body_Reference
	(Analyze_Refinement_Clause): Output messages if illegal global refs.

2013-10-17  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): Reject a record or
	array type that does not have an explicit Scalar_Storage_Order
	attribute definition if a component of the record, or the
	elements of the array, have one.
	* gnat_rm.texi (attribute Scalar_Storage_Order): Document the above
	rule.

2013-10-17  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Add examples of switches -gnateD, including
	one where the value is a string.
	* projects.texi: Do not convert switches in project files to
	VMS qualifiers.

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Report_Extra_Clauses): Don't complain about
	refinements with null input since null should be considered to
	always match.

2013-10-17  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document -gnatw.y/-gnatw.Y.
	* opt.ads (List_Body_Required_Info): New flag.
	* prep.adb: Minor reformatting.
	* sem_ch7.adb (Unit_Requires_Body_Info): New
	procedure (Analyze_Package_Specification): Add call to
	Unit_Requires_Body_Info.
	* ug_words: Add entries for -gnatw.y and -gnatw.Y.
	* usage.adb: Add line for new warning switch -gnatw.y/.Y.
	* vms_data.ads: Add entry for [NO_]WHY_SPEC_NEEDS_BODY warning
	qualifier.
	* warnsw.ads, warnsw.adb: Implement new warning switch -gnatw.y/.Y.

2013-10-17  Yannick Moy  <moy@adacore.com>

	* sem_ch8.adb (Find_Direct_Name): Keep track of assignments for
	renamings in SPARK mode.

2013-10-17  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK): Remove special case for NOT IN
	operation.
	* sinfo.ads: Add special comment section to describe SPARK mode
	effect on tree.
	* exp_spark.ads: Remove comments, moved to sinfo.ads.

2013-10-17  Yannick Moy  <moy@adacore.com>

	* exp_ch3.adb (Expand_Freeze_Class_Wide_Type,
	Expand_Freeze_Class_Wide_Type, Expand_Freeze_Class_Wide_Type):
	Remove useless special cases.
	* exp_ch4.adb (Expand_Allocator_Expression, Expand_N_Allocator,
	Expand_N_Op_Expon): Remove useless special cases.
	* exp_ch6.adb (Is_Build_In_Place_Function_Call): Disable build-in-place
	in SPARK mode by testing Full_Expander_Active instead of
	Expander_Active.
	(Make_Build_In_Place_Call_In_Allocator): Remove useless special case.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): Remove
	useless special case.
	* sem_eval.adb (Compile_Time_Known_Value): Remove special handling of
	deferred constant.

2013-10-17  Yannick Moy  <moy@adacore.com>

	* gnat_ugn.texi: Document -gnateT and target file format.

2013-10-17  Vincent Celier  <celier@adacore.com>

	* prep.adb (Check_Command_Line_Symbol_Definition): Is_A_String is
	always False, even when the value starts and ends with double quotes.

2013-10-17  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb: Synchronize declarations of other/all others.

2013-10-17  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb: Add missing guard protecting Reverse_Storage_Order
	call.
	* sem_res.adb: Minor code cleanup: use named parameter association
	(not positional) for Boolean parameter Sec_Stack in calls to
	Establish_Transient_Scope.

2013-10-15  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb (Expand_Packed_Element_Set,
	Expand_Packed_Element_Reference): Adjust for the case of packed
	arrays of reverse-storage-order types.

2013-10-15  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.

2013-10-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute_Specification, case
	To_Address): If the expression is an identifier, do not modify
	its type; it will be converted when necessary, and the type of
	the expression must remain consistent with that of the entity
	for back-end consistency.

2013-10-15  Robert Dewar  <dewar@adacore.com>

	* sem_ch7.adb (Unit_Requires_Body): Add flag
	Ignore_Abstract_State (Analyze_Package_Specification): Enforce
	rule requiring Elaborate_Body if a non-null abstract state is
	specified for a library-level package.
	* sem_ch7.ads (Unit_Requires_Body): Add flag Ignore_Abstract_State.

2013-10-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Constituent): When
	a state acts as a constituent of another state, ensure that
	the said state has a Part_Of dependency in its corresponding
	aspect/pragma Abstract_State.

2013-10-15  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (P_If_expression): Handle redundant ELSE cleanly.

2013-10-15  Thomas Quinot  <quinot@adacore.com>

	* atree.ads (New_Copy, Relocate_Node): Improve documentation
	(note that these subprograms reset Is_Overloaded).

2013-10-15  Thomas Quinot  <quinot@adacore.com>

	* checks.adb (Check_Needed): Handle the case where the test in
	the left operand of the short circuit is wrapped in a qualified
	expression, type conversion, or expression with actions.

2013-10-15  Thomas Quinot  <quinot@adacore.com>

	* sem_type.adb, sem_type.ads (Save_Interps): Also propagate
	Is_Overloaded to New_N, for consistency.

2013-10-15  Ed Schonberg  <schonberg@adacore.com>

	* a-tienau.adb (Put): Use file parameter to query values of
	current column and line length.

2013-10-15  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, exp_ch11.adb, a-except-2005.adb, a-except-2005.ads:
	Minor reformatting.

2013-10-15  Eric Botcazou  <ebotcazou@adacore.com>

	* targparm.ads: Fix minor typo in comment.

2013-10-15  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb: handle full views that are derived from private
	types.
	* sem_util.adb (Build_Elaboration_Entity): Do nothing in ASIS
	mode: the elaboration entity is not in the source, and plays no
	role in semantic analysis.  Minor reformatting.

2013-10-15  Tristan Gingold  <gingold@adacore.com>

	* adaint.c (__gnat_get_executable_load_address): Remove AIX
	specific code.

2013-10-15  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Aggr_Size_OK): Refine criteria to better handle
	large static aggregates with static record components, to avoid
	generating a large number of asignments.  Conversely, improve
	handling of aggregates initialized by a single association,
	which are most efficiently implemented with a loop.

2013-10-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Input_Item): Emit an
	error when the input item comes from the related package.

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

	* exp_ch11.adb (Expand_Exception_Handlers): Restrict previous
	change.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/gigi.h (standard_datatypes): Add
	ADT_set_exception_parameter_decl
	(set_exception_parameter_decl): New macro.
	* gcc-interface/trans.c (gigi): Initialize set_exception_parameter_decl.
	(Exception_Handler_to_gnu_zcx): Initialize the choice parameter.
	* gcc-interface/trans.c: Synchronize declarations of other/all others
	between gigi and the runtime.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Find_Stream_Subprogram): Optimize
	Storage_Array stream handling.
	(Find_Stream_Subprogram): Optimize Stream_Element_Array stream handling
	* rtsfind.ads: Add entry for Stream_Element_Array Add
	entries for RE_Storage_Array subprograms Add entries for
	RE_Stream_Element_Array subprograms
	* s-ststop.ads, s-ststop.adb: Add processing for System.Storage_Array.
	Add processing for Ada.Stream_Element_Array.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* a-except-2005.ads, a-except-2005.adb:
	(Get_Exception_Machine_Occurrence): New function.
	* raise-gcc.c (__gnat_unwind_exception_size): New constant.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor fix to error message text.
	* errout.ads, erroutc.ads: Minor reformatting.
	* s-ststop.ads, s-stratt.ads: Clean up documentation of block IO
	mode for streams.
	* s-stratt-xdr.adb: Minor comment update.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* sem_aux.adb, sem_aux.ads, sem_prag.adb: Minor reformatting.

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

	* sem_res.adb (Resolve_Actuals): Add error message for a
	subprogram with an in-out parameter when used in a predicate,
	to clarify subsequent error at the point of call.

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

	* sem_prag.adb (Is_Matching_Input): Consume a matching null input.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Record): Don't give warning about packed
	and foreign convention.

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

	* sem_aux.adb, sem_aux.ads (Package_Specification): New function, to
	replace the less efficient idiom Specification.
	(Unit_Declaration_Node (Pack_Id)), which handles library units and
	child units.
	* sem_ch3.adb, sem_ch10.adb, sem_prag.adb, sem_ch12.adb, sem_ch6.adb,
	exp_disp.adb, sem_cat.adb, exp_dist.adb: Use Package_Specification.

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

	* exp_attr.adb (Expand_Update_Attribute): Update the call to
	Process_Range_Update.
	(Process_Range_Update): Add new formal parameter Typ and associated
	comment on usage. Add local constant Index_Typ. Add a type conversion
	as part of the indexed component to ensure that the loop variable
	corresponds to the index type.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb: Adjust comment.
	(Others_Value, All_Others_Value,
	Unhandled_Others_Value): Declare as Character to slightly reduce
	memory footprint.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Size_Known): Size is not known for packed record
	with aliased components

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor fix to error message.
	* a-exexpr-gcc.adb, sem_util.adb, sem_case.adb, exp_ch11.adb: Minor
	reformatting.

2013-10-14  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch11.adb: Fix typo.

2013-10-14  Thomas Quinot  <quinot@adacore.com>

	* exp_util.ads: Minor reformatting.

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

	* sem_ch3.adb (Build_Derived_Record_Type): Reject full views
	with no explicit discriminant constraints, when the parents of
	the partial view and the full view are constrained subtypes with
	different constraints.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Array_Type): New procedure, abstracts out
	this code from Freeze.
	(Freeze_Array_Type): Detect pragma Pack overriding foreign convention
	(Freeze_Record_Type): Ditto.

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

	* sem_prag.adb (Analyze_Dependency_Clause): Add new local variable
	Non_Null_Output_Seen.  Update the call to Analyze_Input_Output.
	(Analyze_Input_Item): Streamline the detection mechanism of null and
	non-null items.
	(Analyze_Input_List): Add new local variable
	Non_Null_Input_Seen. Update all calls to Analyze_Input_Output.
	(Analyze_Input_Output): Add new formal parameter Non_Null_Seen
	and update the related comment on usage. Update the
	recursive call to itself. Attribute 'Result is now treated
	as a non-null item. Detect mixes of null and non-null items.
	(Analyze_Initialization_Item): Streamline the detection mechanism
	of null and non-null items.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add documentation for the new project level
	attribute Library_Rpath_Options.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (Set_Exception_Parameter): New procedure.
	(Set_Foreign_Occurrence): New procedure, extracted from
	Setup_Current_Excep.
	* exp_ch11.adb (Expand_Exception_Handlers): Do not expand choice
	parameter in case of zcx.
	* sem_ch11.adb (Analyze_Exception_Handlers): Need debug info
	for the choice parameter.
	* raise-gcc.c: Add comments.

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

	* aspects.adb: Add an entry in table Canonical_Aspect for
	Initial_Condition.
	* aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument,
	Aspect_Names and Aspect_Delay for Initial_Condition.
	* einfo.adb (Get_Pragma): Include pragma Initial_Condition to
	categorization pragmas.
	* einfo.ads (Get_Pragma): Update comment on usage.
	* exp_ch7.adb (Expand_N_Package_Body): Add a runtime check to
	verify the assertion introduced by pragma Initial_Condition.
	(Expand_N_Package_Declaration): Add a runtime check to
	verify the assertion introduced by pragma Initial_Condition.
	(Expand_Pragma_Initial_Condition): New routine.
	* par-prag: Include pragma Initial_Condition to the list of
	pragmas that do not require special processing by the parser.
	* sem_ch3.adb (Analyze_Declarations): Analyze pragma
	Initial_Condition at the end of the visible declarations.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
	for aspect Initial_Condition.
	(Check_Aspect_At_Freeze_Point):
	Aspect Initial_Condition does not need inspection at freezing.
	* sem_prag.adb (Analyze_Initial_Condition_In_Decl_Part):
	New routine.
	(Analyze_Pragma): Update all calls
	to Check_Declaration_Order. Add processing for pragma
	Initial_Condition. Initial_Condition is now a valid assertion
	kind.  Add an entry in table Sig_Flags for Initial_Condition.
	(Check_Declaration_Order): Reimplemented to handle arbitrary
	pragmas.
	(Is_Valid_Assertion_Kind): Add an entry for
	Initial_Condition.
	* sem_pag.ads (Analyze_Initial_Condition_In_Decl_Part):
	New routine.
	* sem_util.adb (Add_Contract_Item): Pragma Initial_Condition
	can now be associated with a package spec.
	* sem_util.ads (Add_Contract_Item): Update comment on usage.
	* sinfo.ads: Update the documentation of node N_Contract
	* snames.ads-tmpl: Add new predefined name Initial_Condition. Add
	new pragma id for Initial_Condition.

2013-10-14  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb: Minor reformatting.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb: Minor reformatting.

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

	* sem_case.adb (Check_Against_Predicate): Handle properly an
	others clause in various cases.

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

	* sem_prag.adb (Check_Matching_Constituent): Do
	not inspect the hidden states if there are no hidden states. This
	case arises when the constituents are states coming from a
	private child.

2013-10-14  Doug Rupp  <rupp@adacore.com>

	* init.c [ARMEL and VxWorks] (__gnat_map_signal): Re-arm guard
	page by clearing VALID bit vice setting page protection.

2013-10-14  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi, adaint.c: Fix typo.

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

	* sem_util.adb (Is_Variable, In_Protected_Function):  In the
	body of a protected function, the protected object itself is a
	constant (not just its components).

2013-10-14  Vincent Celier  <celier@adacore.com>

	* snames.ads-tmpl: Add new standard name Library_Rpath_Options.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* sem_prag.adb (Process_Import_Or_Interface): Allow importing
	of exception using convention Cpp.
	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): Expand cpp
	imported exceptions.
	* raise-gcc.c (is_handled_by): Filter C++ exception occurrences.
	* gnat_rm.texi: Document how to import C++ exceptions.

2013-10-14  Jose Ruiz  <ruiz@adacore.com>

	* sem_ch13.adb (Sem_Ch13.Analyze_Aspect_Specification): For
	Priority and CPU aspects, when checking, issue a warning only
	if it is obviously not a main program.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* adaint.c: Fix condition for AIX. Minor reformatting.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_prag.adb, prj.ads: Minor reformatting.

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

	* sem_prag.adb (Analyze_Depends_In_Decl_Part):
	Rename Outputs_Seen to All_Outputs_Seen and update all occurrences
	of the variable.
	(Analyze_Input_Output): Add an item to
	All_Inputs_Seen when it is an input or a self-referential output.
	(Check_Mode): Comment reformatting.
	(Analyze_Abstract_State): Remove the restriction that an Export state
	must also have mode Input_Only or Output_Only.

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

	* einfo.adb: Flag 263 is now known as Has_Visible_Refinement.
	(Has_Non_Null_Refinement): New routine.
	(Has_Null_Refinement): The routine is now synthesized.
	(Has_Visible_Refinement): New routine.
	(Set_Has_Visible_Refinement): New routine.
	(Write_Entity_Flags): Remove the output for
	Has_Null_Refinement. Add output for Has_Visible_Refinement.
	* einfo.ads: Update the occurrences of Has_Non_Null_Refinement,
	Has_Null_Refinement and Has_Visible_Refinement in entities.
	(Has_Non_Null_Refinement): New synthesized attribute.
	(Has_Null_Refinement): This attribute is now synthesized.
	(Has_Visible_Refinement): New routine with corresponding
	pragma Inline.
	(Set_Has_Visible_Refinement): New routine with corresponding pragma
	Inline.
	* sem_ch3.adb (Analyze_Declarations): Add new local
	variable In_Package_Body. Remove state refinements from
	visibility at the end of the package body declarations.
	(Remove_Visible_Refinements): New routine.
	* sem_prag.adb (Analyze_Constituent): Collect a null
	constituent and mark the state as having visible refinement.
	(Analyze_Global_Item): Use attribute Has_Visible_Refinement to
	detect a state with visible refinement.
	(Analyze_Input_Output): Use attribute Has_Visible_Refinement to detect
	a state with visible refinement.
	(Check_Dependency_Clause): Use attribute Has_Non_Null_Refinement rather
	than checking the contents of list Refinement_Constituents.
	(Check_In_Out_States): Use attribute Has_Non_Null_Refinement rather
	than checking the contents of list Refinement_Constituents.
	(Check_Input_States): Use attribute Has_Non_Null_Refinement rather
	than checking the contents of list Refinement_Constituents.
	(Check_Matching_Constituent): Mark a state as having visible refinement.
	(Check_Output_States): Use attribute Has_Non_Null_Refinement rather than
	checking the contents of list Refinement_Constituents.
	(Check_Refined_Global_Item): Use attribute Has_Visible_Refinement
	to detect a state with visible refinement.
	(Is_Matching_Input): Use attribute Has_Non_Null_Refinement rather than
	checking the contents of list Refinement_Constituents.
	* sem_util.adb (Is_Refined_State): Use attribute
	Has_Visible_Refinement to detect a state with visible refinement.

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

	* sem_prag.adb (Check_Mode): Do not emit an
	error when inspecting a self referencial output item of an
	unconstrained type.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* exp_prag.adb (Expand_Pragma_Import_Export_Exception): Fix
	target type for code of VMS imported exception.
	* init.c: Replace Exception_Code by void *.
	* s-vmexta.adb (Hash, Base_Code_In): Adjust code after changing
	the type of Exception_Code.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* prj.ads: Minor comment updates.
	* prj-attr.adb: New attribute Library_Rpath_Options.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Library_Level attribute now applies to an
	entity name.
	* sem_attr.adb (Analyze_Attribute, case Library_Level): Prefix
	is now an entity name.

2013-10-14  Jose Ruiz  <ruiz@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specification): For
	Priority and CPU aspects in subprograms, the expression in the
	aspect is analyzed and exported.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* s-valuti.adb, prep.adb, scng.adb, errout.adb: Minor reformatting.

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

	* adaint.c: Further disable __gnat_get_executable_load_address
	for Linux.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Add documentation for comparing symbols to
	integers in preprocessing expressions.

2013-10-14  Jose Ruiz  <ruiz@adacore.com>

	* sem_prag.adb (Analyze_Aspect_Specification): For
	Priority and CPU aspects in subprograms, the expression in the
	aspect is analyzed and exported.
	(Analyze_Pragma): When having a Priority pragma in the
	main subprogram, load a unit that will force the initialization
	of the tasking run time, which is needed for setting the required
	priority.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Interfaces): Put in Other_Interfaces all
	non Ada interface files.
	* prj.ads (Project_Data): New component Other_Interfaces.

2013-10-14  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in: Target pairs clean ups.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* errout.adb (Write_Error_Summary): Do not output the number
	of lines when Main_Source_File is unknown.
	(Output_Messages): Do not write the header when Main_Source_File is
	unknown.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* prep.adb (Expression): Accept terms of the form 'symbol <relop>
	integer", where relop is =, <, <=, > or >=.
	(Parse_Def_File): Accept literal integer values.
	* gcc-interface/Make-lang.in: Add s-valint.o, s-valuns.o and
	s-valuti.o to the compiler object files.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb, exp_ch11.adb, s-exctab.adb: Minor reformatting.
	* usage.adb: Add line for -gnateu switch.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* lib-writ.ads: Add comments to indicate that a path name in
	D lines may be quoted if the path name includes directories
	with spaces.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Document -gnatd.E.
	* gnat1drv.adb (Adjust_Global_Switches): Set Error_To_Warning
	if -gnatd.E set.
	* opt.ads (Error_To_Warning): New switch.
	* osint.adb: Minor reformatting.
	* sem_warn.adb (Warn_On_Overlapping_Actuals): Overlap is error
	in some cases in Ada 2012 mode (unless Error_To_Warning) is set.
	* sem_warn.ads (Warn_On_Overlapping_Actuals): Document error
	in Ada 2012 mode.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* cstand.adb: Add a comment for Standard_Exception_Type.

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

	* exp_ch4.adb (Process_Transient_Object): If a transient scope
	has already been created, use the corresponding Node_To_Be_Wrapped
	as the insertion point for the controlled actions.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* cstand.adb (Create_Standard): Change Import_Code component
	of Standard_Exception_Type to Foreign_Data. Its type is now
	Standard_A_Char (access to character).
	* exp_prag.adb (Expand_Pragma_Import_Export_Exception): Adjust
	definition of Code to match the type of Foreign_Data.
	* s-stalib.ads (Exception_Data): Replace Import_Code by Foreign_Data
	Change the definition of standard predefined exceptions.
	(Exception_Code): Remove.
	* raise.h (Exception_Code): Remove (Exception_Data): Replace
	Import_Code field by Foreign_Data.
	* rtsfind.ads (RE_Exception_Code): Remove
	(RE_Import_Address): Add.
	* a-exexpr-gcc.adb (Import_Code_For): Replaced by Foreign_Data_For.
	* exp_ch11.adb (Expand_N_Exception_Declaration): Associate null
	to Foreign_Data component.
	* raise-gcc.c (Import_Code_For): Replaced by Foreign_Data_For.
	(is_handled_by): Add comments. Use replaced function. Change
	condition so that an Ada occurrence is never handled by
	Foreign_Exception.
	* s-exctab.adb (Internal_Exception): Associate Null_Address to
	Foreign_Data component.
	* s-vmexta.adb, s-vmexta.ads (Exception_Code): Declare Replace
	SSL.Exception_Code by Exception_Code.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document -gnateu switch.
	* opt.ads (Ignore_Unrecognized_VWY_Switches): New switch.
	* stylesw.adb: Ignore unrecognized switch if
	Ignore_Unrecognized_VWY_Switches set.
	* switch-c.adb: Implement -gnateu (sets
	Ignore_Unrecognized_VWY_Switches).
	* validsw.adb: Ignore unrecognized switch if
	Ignore_Unrecognized_VWY_Switches set.
	* warnsw.adb: Ignore unrecognized switch if
	Ignore_Unrecognized_VWY_Switches set.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb, sem_prag.adb, a-exexda.adb, s-vmexta.ads: Minor
	reformatting.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* ali.adb (Get_File_Name): New Boolean parameter May_Be_Quoted,
	defaulted to False.  Calls Get_Name with May_Be_Quoted.
	(Get_Name): New Boolean parameter May_Be_Quoted, defaulted to
	False. If May_Be_Quoted is True and first non blank charater is
	'"', unquote the name.
	(Scan_ALI): For the file/path name on the D line, call Get_File_Name
	with May_Be_Quoted = True, as it may have been quoted.
	* lib-util.adb, lib-util.ads (Write_Info_Name_May_Be_Quoted): New
	procedure to write file/path names that may contain spaces and if they
	do are quoted.
	* lib-writ.adb (Write_ALI): Use new procedure
	Write_Info_Name_May_Be_Quoted to write file/path names on D lines.

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

	* sem_prag.adb (Analyze_Depends_In_Decl_Part,
	Analyze_Global_In_Decl_Part,
	Analyze_Pre_Post_Condition_In_Decl_Part): Install the subprogram
	and its formals only when it is not already installed.
	* sem_util.adb (Is_Refined_State): A state is refined when it
	has a non-empty list of constituents.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* adaint.c: Disable __gnat_get_executable_load_address for linux.
	* exp_prag.adb: Add comment in Expand_Pragma_Import_Export_Exception.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* s-vmexta.ads: Add comments.

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

	* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing
	for pragma Refined_State.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
	for aspect Refined_Depends.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part):
	Use Find_Related_Subprogram_Or_Body to find the related
	context. Use the current scope when determining whether to
	ensure proper visibility.
	(Analyze_Depends_In_Decl_Part):
	Add local variable Spec_Id. Update the comment on usage of
	Subp_Id. Use Find_Related_Subprogram_Or_Body to find the
	related context. Extract the corresponding spec of the body
	(if any). Use the current scope when determining when to
	ensure proper visibility.
	(Analyze_Global_In_Decl_Part):
	Add local variable Spec_Id. Update the comment on usage of
	Subp_Id. Use Find_Related_Subprogram_Or_Body to find the
	related context. Extract the corresponding spec of the body
	(if any). Use the current scope when determining when to
	ensure proper visibility.
	(Analyze_Global_Item): Use the
	entity of the subprogram spec when performing formal parameter
	checks. Perform state-related checks.
	(Analyze_Input_Output):
	Use Is_Attribute_Result to detect 'Result. Query the
	entity of a subprogram spec when verifying the prefix of
	'Result. Perform state-related checks.	(Analyze_Pragma):
	Merge the analysis of Refined_Depends and Refined_Global.
	(Analyze_Refined_Depends_In_Decl_Part): Provide implemenation.
	(Analyze_Refined_Global_In_Decl_Part): Move state-related checks
	to the body of Analyze_Global_In_Decl_Part. Rename local constant
	List to Items.	(Analyze_Refined_Pragma): Remove circuitry to
	find the proper context, use Find_Related_Subprogram_Or_Body
	instead.
	(Check_Function_Return): Query the entity of
	the subprogram spec when verifying the use of 'Result.
	(Check_In_Out_States, Check_Input_States, Check_Output_States):
	Avoid using Has_Null_Refinement to detect a state with
	a non-null refinement, use the Refinement_Constituents
	list instead.
	(Check_Matching_Constituent): Remove initialization code.
	(Check_Mode_Restriction_In_Function): Use the entity of the subprogram
	spec when verifying mode usage in functions.
	(Collect_Global_Items): New routine.
	(Collect_Subprogram_Inputs_Outputs): Add local
	variable Spec_Id. Add circuitry for bodies-as-specs. Use
	pragma Refined_Global when collecting for a body.
	(Create_Or_Modify_Clause): Use the location of the
	clause. Rename local variable Clause to New_Clause to avoid
	confusion and update all occurrences.  Use Is_Attribute_Result
	to detect 'Result.
	(Find_Related_Subprogram): Removed.
	(Find_Related_Subprogram_Or_Body): New routine.
	(Is_Part_Of): Move routine to top level.
	(Normalize_Clause): Update the
	comment on usage. The routine can now normalize a clause with
	multiple outputs by splitting it.
	(Collect_Global_Items):
	Rename local constant List to Items. Remove the check for
	a null list.
	(Requires_Profile_Installation): Removed.
	(Split_Multiple_Outputs): New routine.
	* sem_prag.ads: Update the comments on usage of various
	pragma-related analysis routines.
	* sem_util.adb (Contains_Refined_State): The routine can now
	process pragma [Refined_]Depends.
	(Has_Refined_State): Removed.
	(Has_State_In_Dependency): New routine.
	(Has_State_In_Global): New routine.
	(Is_Attribute_Result): New routine.
	* sem_util.ads (Is_Attribute_Result): New routine.

2013-10-14  Emmanuel Briot  <briot@adacore.com>

	* s-regpat.adb (Compile): Fix finalization of the automaton
	when its size was automatically computed to be exactly 1000 bytes.

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

	* sem_ch3.adb (Complete_Private_Subtype): If the full view of
	the base type is constrained, the full view of the subtype is
	known to be constrained as well.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add documentation for new attributes of package
	Clean: Artifacts_In_Object_Dir and Artifacts_In_Exec_Dir.

2013-10-14  Tristan Gingold  <gingold@adacore.com>

	* adaint.c, adaint.h (__gnat_get_executable_load_address):
	New function.
	* a-exexda.adb (Append_Info_Basic_Exception_Traceback): Add
	executable load address (Basic_Exception_Tback_Maxlength): Adjust.

2013-10-14  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New attributes in package Clean:
	Artifacts_In_Exec_Dir, Artifacts_In_Object_Dir.
	* prj-nmsc.adb (Process_Clean (Attributes)): New
	procedure to process attributes Artifacts_In_Exec_Dir and
	Artifacts_In_Object_Dir in package Clean.
	* prj.ads (Project_Configuration): New components
	Artifacts_In_Exec_Dir and Artifacts_In_Object_Dir.
	* snames.ads-tmpl: New standard names Artifacts_In_Exec_Dir and
	Artifacts_In_Object_Dir used only by gprclean.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add error
	entry for Library_Level attribute (which should not survive
	to expansion)
	* gnat_rm.texi: Document attribute Library_Level
	* sem_attr.adb (Analyze_Attribute, case Library_Level): Implement
	this new attribute (Set_Boolean_Result): Replaces Set_Result
	(Check_Standard_Prefix): Document that Check_E0 is called
	(Check_System_Prefix): New procedure
	* snames.ads-tmpl: Add entry for Library_Level attribute

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb, sinfo.ads: Minor reformatting.
	* checks.adb (Overlap_Check): Use identifier casing in messages.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Default_Aspect_Component_Value): Is on base type
	only.
	* exp_aggr.adb (Expand_Array_Aggregate): Handle proper
	initialization of <> component.
	* exp_ch3.adb, exp_tss.adb: Minor reformatting
	* sem_ch13.adb (Default_Aspect_Component_Value, Default_Aspect_Value):
	Is on base type only.
	* sinfo.ads: Minor comment revision.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* g-decstr.adb (Decode_Wide_Wide_Character): Fix failure
	to detect invalid sequences where longer than necessary
	sequences are used for encoding.
	(Validate_Wide_Character):
	Call Decode_Wide_Character to get the above validations.
	(Validate_Wide_Wide_Character): Same fix
	* g-decstr.ads: Add documentation making it clear that the UTF-8
	implementation here recognizes all valid UTF-8 sequences, rather
	than the well-formed subset corresponding to characters defined
	in Unicode.
	(Next_Wide_Character): Remove comment about this
	being more efficient than Decode_Wide_Character (because this
	no longer the case).
	(Prev_Wide_Character): Add note that valid encoding is assumed.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* a-wichha.adb (Character_Set_Version): New function.
	* a-wichha.ads: Remove comments for pragma Pure (final RM has
	this).
	(Character_Set_Version): New function.
	* gnat_rm.texi: Update doc.

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

	* einfo.adb: Flag263 is now known as Has_Null_Refinement.
	(Has_Null_Refinement): New routine.
	(Set_Has_Null_Refinement): New routine.
	(Write_Entity_Flags): Output the status of flag
	Has_Null_Refinement.
	* einfo.ads: Add new flag Has_Null_Refinement along with
	comment on usage and update all nodes subject to the flag.
	(Has_Null_Refinement): New routine along with pragma Inline.
	(Set_Has_Null_Refinement): New rouitine along with pragma Inline.
	* sem_prag.adb (Analyze_Constituent): Mark a state as having
	a null refinement when the sole constituent is "null".
	(Analyze_Global_List): Handle null input/output items.
	(Analyze_Refined_Global_In_Decl_Part): Add local variable
	Has_Null_State. Add logic to handle combinations of states
	with null refinements and null global lists and/or items.
	(Check_In_Out_States, Check_Input_States, Check_Output_States):
	Use attribute Has_Null_Refinement to detect states with
	constituents.
	(Check_Refined_Global_List): Handle null input/output items.
	(Process_Global_Item): Handle states with null refinements.
	(Process_Global_List): Handle null input/output items.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Reset Is_True_Constant for
	aliased object
	* gnat_ugn.texi: Update doc on aliased variables and constants.

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

	* exp_pakd.adb (Expand_Packed_Element_Reference): If the
	reference is an actual in a call, the prefix has not been fully
	expanded, to account for the additional expansion for parameter
	passing. the prefix itself is a packed reference as well,
	recurse to complete the transformation of the prefix.

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

	* exp_dbug.adb (Debug_Renaming_Declaration): Do not
	materialize the entity when the renamed object contains an
	N_Explicit_Dereference.
	* sem_ch8.adb (Analyze_Object_Renaming):
	If the renaming comes from source and the renamed object is a
	dereference, mark the prefix as needing debug information.

2013-10-14  Doug Rupp  <rupp@adacore.com>

	* system-vxworks-arm.ads (Stack_Check_Probes, Stack_Check_Limits):
	Enable Stack Probes, Disable Stack Limit Checking.
	* init.c [VxWorks] (__gnat_inum_to_ivec): Caste return value.
	(__gnat_map_signal): Fix signature.
	(__gnat_error_handler): Make
	static, fix signature, remove prototype, fix prototype warning.
	[ARMEL and VxWorks6] (__gnat_map_signal): Check and re-arm guard
	page for storage_error.
	* exp_pakd.adb: Minor reformatting.

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

	* sem_prag.adb (Analyze_Global_In_Decl_Part): Remove local
	variable Contract_Seen. Add local variable Proof_Seen.
	(Analyze_Global_List): Remove the processing for mode
	Contract_In. Add support for mode Proof_In.
	(Analyze_Pragma): Update the grammar of pragmas Global and
	Refined_Global.
	* snames.ads-tmpl: Remove predefined name Contract_In. Add
	predefined name Proof_In.

2013-10-14  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): Generate proper string
	for invariant
	* gnat_rm.texi: Add documentation for pragmas
	Type_Invariant[_Class]
	* par-prag.adb: Add entries for pragmas Type_Invariant[_Class]
	* sem_ch13.adb: Minor reformatting
	* sem_prag.adb: Implement pragmas Type_Invariant[_Class]
	* snames.ads-tmpl: Add entries for pragmas Type_Invariant[_Class]

2013-10-14  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: Release now unused debug switches that were only
	relevant for gnat2why backend, not the frontend
	* frontend.adb (Frontend) Do not stop when -gnatd.H is present,
	was unused

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

	* sem_prag.adb (Analyze_Global_Item): Allow
	references to enclosing formal parameters.

2013-10-14  Thomas Quinot  <quinot@adacore.com>

	* einfo.adb (Equivalent_Type): Add missing case
	E_Access_Subprogram_Type in guard (for remote access to
	subprograms) * sem_ch8.adb (Find_Direct_Name, Find_Expanded_Name):
	Add missing guards to account for the presence of RAS types
	that have already been replaced with the corresponding fat
	pointer type.

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

	* aspects.adb: Add an entry in table Canonical_Aspect for
	Initializes.
	* aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument,
	Aspect_Names and Aspect_Delay for Initializes.
	* atree.ads, atree.adb (Ekind_In): New seven argument versions of the
	routines.
	* einfo.adb: Remove Refined_State_Pragma from the list of node
	usage. Finalizer is now at position 28.
	(Contract): Package
	and package bodies now have a contract.
	(Finalizer): Update
	the assertion and node usage.
	(Get_Pragma): Update the Is_CDG
	flag to include Abstract_State, Initializes and Refined_State.
	(Refined_State_Pragma): Removed.
	(Set_Contract): Package and
	package bodies now have a contract.
	(Set_Finalizer): Update the
	assertion and node usage.
	(Set_Refined_State_Pragma): Removed.
	(Write_Field8_Name): Remove the output for Refined_State_Pragma.
	(Write_Field24_Name): Remove the output for Finalizer. Package
	and package bodies now have a contract.
	(Write_Field28_Name):
	Add output for Finalizer.
	* einfo.ads: Update the documentation and usage in entities
	of attribute Contract. Update the node position and usage in
	entities of attribute Finalizer. Remove the documentation
	and usage in entities for attribute Refined_State_Pragma.
	(Refined_State_Pragma): Removed along with pragma Inline.
	(Set_Refined_State_Pragma): Removed along with pragma Inline.
	* par-prag.adb: Add Initializes to the pragmas that do not
	require special processing by the parser.
	* sem_ch3.adb (Analyze_Declarations): Add local variable
	Prag. Update the retrieval of pragma Refined_State. Analyze
	aspect/pragma Initializes at the end of the visible declarations
	of the related package.
	* sem_ch6.adb (Analyze_Subprogram_Body_Contract):
	Add local variables Ref_Depends and Ref_Global. Analyze
	pragmas Refined_Global and Refined_Depends in that order.
	(Analyze_Subprogram_Contract): Add local variables Depends and
	Global. Analyze pragmas Global and Depends in that order.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Package
	bodies now have a contract. Move the analysis of the aspect
	specifications after the defining entity has been decorated.
	(Analyze_Package_Declaration): Packages now have a contract. Move
	the analysis of the aspect specifications after the defining
	entity has been decorated.
	* sem_ch12.adb (Analyze_Generic_Package_Declaration): Packages
	now have contracts.
	* sem_ch13.adb (Analyze_Pragma): Code cleanup for aspect
	Abstract_State. Add processing for aspect Initializes.
	(Check_Aspect_At_Freeze_Point): Add an entry for Initializes.
	* sem_prag.adb: Use Get_Pragma_Arg to extract the expression
	of a pragma argument. Add an entry in table Sig_Flags for
	Initializes.
	(Analyze_Initializes_In_Decl_Part): New routine.
	(Analyze_Pragma): Check the declaration order of pragmas
	Abstract_State and Initializes. Abstract_State is now part of
	the package contract. Analyze pragma Initializes. Check for
	duplicate Refined_State pragma. Refined_State is now part of
	the package contract.
	(Check_Declaration_Order): New routine.
	(Check_Test_Case): Alphabetized.
	* sem_prag.ads (Analyze_Initializes_In_Decl_Part): New routine.
	* sem_util.adb (Add_Contract_Item): Rename formal Subp_Id
	to Id. This routine can now support contracts on packages and
	package bodies.
	* sem_util.ads (Add_Contract_Item): Rename formal Subp_Id to
	Id. Update comment on usage.
	* sinfo.ads: Update the usage of N_Contract nodes.
	* snames.ads-tmpl: Add predefined name Initializes. Add new
	pragma id for Initializes.

2013-10-13  Nicolas Roche  <roche@adacore.com>
            Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (ada/%.o): Replace individual rules with
	generic rule and add $(POSTCOMPILE).
	(ADA_DEPS): New.
	(.adb.o): Add @$(ADA_DEPS).
	(.ads.o): Likewise.
	(ada/a-except.o): Likewise.
	(ada/s-excdeb.): Likewise.
	(ada/s-assert.o): Likewise.
	(ada/a-tags.o): Likewise.
	(ada_generated_files): New variable.
	Use them as dependency order for GNAT1_ADA_OBJS and GNATBIND_OBJS.
	(ADA_DEPFILES): New variable.
	Include them.
	(ada_OBJS): Define.

2013-10-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Force all local
	variables with aggregate types in memory if not optimizing.

2013-10-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Mode): Do
	not emit an error when we are looking at inputs and
	the item is an unconstrained or tagged out parameter.
	(Check_Mode_Restriction_In_Enclosing_Context): Use Get_Pragma
	to find whether the context is subject to aspect/pragma Global.
	(Collect_Subprogram_Inputs_Outputs): Unconstrained or tagged
	out parameters are now considered inputs. Use Get_Pragma to
	find wheher the subprogram is subject to aspect/pragma Global.
	(Is_Unconstrained_Or_Tagged_Item): New routine.

2013-10-13  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.

2013-10-13  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add documentation for pragmas Pre[_Class]
	Post[_Class].
	* par-ch2.adb (Skip_Pragma_Semicolon): Handle extra semicolon nicely.
	* par-prag.adb: Add entries for pragmas Pre[_Class] and
	Post[_Class].
	* sem_prag.adb: Add handling of pragmas Pre[_Class] and
	Post[_Class].
	* sem_util.adb (Original_Aspect_Name): Moved here from
	Sem_Prag.Original_Name, and modified to handle pragmas
	Pre/Post/Pre_Class/Post_Class.
	* sem_util.ads (Original_Aspect_Name): Moved here from
	Sem_Prag.Original_Name.
	* snames.ads-tmpl: Add entries for pragmas Pre[_Class] and
	Post[_Class].

2013-10-13  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, sem_ch6.adb: Minor reformatting.

2013-10-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Add node/list usage for Refined_State
	and Refinement_Constituents.
	(Get_Pragma): Update the
	initialization of Is_CDG to include Refined_Global and
	Refined_Depends. Rename constant Delayed to In_Contract and update
	all of its occurrences.
	(Is_Non_Volatile_State): New routine.
	(Is_Volatile_State): Removed.
	(Refined_State): New routine.
	(Refinement_Constituents): New routine.
	(Set_Refined_State): New routine.
	(Set_Refinement_Constituents): New routine.
	(Write_Field8_Name): Add output for Refinement_Constituents.
	(Write_Field10_Name): Add output for Refined_State.
	* einfo.ads: Add new synthesized attribute Is_Non_Volatile_State.
	Remove synthesized attribute Is_Volatile_State.  Add new
	attributes Refined_State and Refinement_Constituents along with
	usage in nodes.
	(Get_Pragma): Update the comment on usage.
	(Is_Non_Volatile_State): New routine.
	(Is_Volatile_State): Removed.
	(Refined_State): New routine and pragma Inline.
	(Refinement_Constituents): New routine and pragma Inline.
	(Set_Refined_State): New routine and pragma Inline.
	(Set_Refinement_Constituents): New routine and pragma Inline.
	* elists.ads, elists.adb (Clone): Removed.
	(New_Copy_Elist): New routine.
	(Remove): New routine.
	* sem_ch3.adb (Analyze_Declarations): Use Defining_Entity
	to get the entity of the subprogram [body].
	(Analyze_Object_Declaration): Add initialization for
	Refined_State.
	* sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add processing
	for Refined_Global and Refined_Depends. Emit an error when
	the body requires Refined_Global, but the aspect/pragma is
	not present.
	* sem_ch6.ads (Analyze_Subprogram_Body_Contract): Change
	procedure signature and add comment on usage.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
	for aspect Refined_Global.
	* sem_prag.adb (Analyze_Abstract_State): Add initialization
	of attributes Refined_State and Refinement_Constituents.
	(Analyze_Depends_In_Decl_Part, Analyze_Global_In_Decl_Part,
	Analyze_Contract_Cases_In_Decl_Part): Remove local
	constant Arg1.
	(Analyze_Pragma): Add processing for pragma
	Refined_Global. The analysis of Refined_Post and Refined_Pre
	has been merged. Update an error message in the processing of
	pragma Refined_State.
	(Analyze_Refined_Global_In_Decl_Part): Provide implementation.
	(Analyze_Refined_Pragma): New routine.
	(Analyze_Refined_Pre_Post_Condition): Removed.
	(Analyze_Refined_State_In_Decl_Part): Update the call to Clone.
	(Analyze_Refinement_Clause): Make State_Id visible to all
	nested subprogram.
	(Check_Matching_Constituent): Establish
	a relation between a refined state and its constituent.
	(Collect_Hidden_States_In_Decls): Remove ??? comment. Look at
	the entity of the object declaration to establish its kind.
	* sem_util.adb: Alphabetize with and use clauses.
	(Contains_Refined_State): New routine.
	* sem_util.ads (Contains_Refined_State): New routine.

2013-10-13  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Minor documentation clarification.

2013-10-13  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC when
	building on AIX 5.3 or later, and to CLOCK_REALTIME on older
	versions of AIX.
	* init.c (pthread_condattr_setclock): Remove now useless weak symbol.
	* thread.c(__gnat_pthread_condattr_setup): Remove bogus AIX 5.2
	compatibility shim.
	* s-osinte-aix.ads(clock_id_t): Fix C mapping (this is a 64-bit
	type).
	(clock_gettime): Import from C runtime library.
	* s-osinte-aix.adb (clock_gettime): Remove bogus emulation body,
	this routine is provided by the system in current supported
	versions of AIX.

2013-10-13  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2013-10-13  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): For a function whose return type
	is incomplete, do not replace the type with the full view if the
	type is a limited view.  In that case the full view appears in a
	different unit, and the back-end will retrieve it at the proper
	elaboration point.

2013-10-13  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_Call): Do not introduce temporaries for
	actuals.

2013-10-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: in Ada 2012 access_to_function types can have
	in-out parameters.
	(Derived_Type_Declaration): SPARK restriction
	must be flagged on the original node, since it may have been
	written as a subtype declaration.
	(Analyze_Subtype_Declaration): Do not enter name of
	entity in declaration if it is the current entity, because it may
	have been inserted in a previous analysis and it appears in the
	else_part of an if-statement that is rewritten during expansion.

2013-10-13  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove procedure.
	(Expand_SPARK): Remove call to Expand_SPARK_N_Attribute_Reference and
	Expand_SPARK_N_Simple_Return_Statement.
	(Expand_SPARK_N_Simple_Return_Statement,
 	Expand_SPARK_Simple_Function_Return): Remove procedures.

2013-10-13  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Minor editing.

2013-10-13  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Abstract_Overriding): If a synchronized
	operation implements an interface primitive, mark the operation
	as referenced, to prevent usually spurious messages about unused
	entities: such operations are called in dispatching select
	statements that are not visible to the compiler.

2013-10-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_param): Remove obsolete comment.

2013-10-11  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_8): Define.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* par-ch6.adb (Check_Junk_Semicolon_Before_Return): Remove
	junk code.

2013-10-10  Javier Miranda  <miranda@adacore.com>

	* sem_ch13.adb (Freeze_Entity_Checks): Avoid
	loosing errors on CPP entities in -gnatc mode.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb (Analyze_If_Statement): Only diagnose redundant
	if from source.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* restrict.adb (Check_SPARK_Restriction): Refine test (don't
	automatically go to the original node).
	* sem_ch11.adb (Analyze_Raise_Statement): Only raise
	statements that come from source violate SPARK restrictions.
	(Analyze_Raise_xxx_Error): Same fix.
	* sem_ch3.adb (Analyze_Object_Declaration): Check OK SPARK
	initialization on original node, not on possibly rewritten
	expression.
	* sem_ch4.adb (Analyze_If_Expression): Only if expressions that
	come from source violate SPARK mode restrictions.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Fix confusing documentation for -gnatyM.

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

	* errout.adb (Compilation_Errors): In formal verification mode,
	always return False.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Collect_Hidden_States_In_Decls): Only consider source
	non-constant objects.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Add an entry in table Canonical_Aspect for
	Refined_State.
	* aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument,
	Aspect_Names and Aspect_Delay for Refined_State.
	* einfo.adb: Add with and use clauses for Elists.
	Remove Refined_State from the list of node usage.
	Add Refined_State_Pragma to the list of node usage.
	(Has_Null_Abstract_State): New routine.
	(Refined_State): Removed.
	(Refined_State_Pragma): New routine.
	(Set_Refined_State): Removed.
	(Set_Refined_State_Pragma): New routine.
	(Write_Field8_Name): Add output for Refined_State_Pragma.
	(Write_Field9_Name): Remove the output for Refined_State.
	* einfo.ads: Add new synthesized attribute Has_Null_Abstract_State
	along with usage in nodes.  Remove attribute Refined_State along
	with usage in nodes.  Add new attribute Refined_State_Pragma along
	with usage in nodes.
	(Has_Null_Abstract_State): New routine.
	(Refined_State): Removed.
	(Refined_State_Pragma): New routine.
	(Set_Refined_State): Removed.
	(Set_Refined_State_Pragma): New routine.
	* elists.adb (Clone): New routine.
	* elists.ads (Clone): New routine.
	* par-prag.adb: Add Refined_State to the pragmas that do not
	require special processing by the parser.
	* sem_ch3.adb: Add with and use clause for Sem_Prag.
	(Analyze_Declarations): Add local variables Body_Id, Context and
	Spec_Id. Add processing for delayed aspect/pragma Refined_State.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Update the
	handling of aspect Abstract_State.  Add processing for aspect
	Refined_State. Remove the bizzare insertion policy for aspect
	Abstract_State.
	(Check_Aspect_At_Freeze_Point): Add an entry for Refined_State.
	* sem_prag.adb: Add an entry to table Sig_Flags
	for pragma Refined_State.
	(Add_Item): Update the
	comment on usage. The inserted items need not be unique.
	(Analyze_Contract_Cases_In_Decl_Part): Rename variable Restore to
	Restore_Scope and update all its occurrences.
	(Analyze_Pragma):
	Update the handling of pragma Abstract_State. Add processing for
	pragma Refined_State.
	(Analyze_Pre_Post_Condition_In_Decl_Part):
	Rename variable Restore to Restore_Scope and update all its
	occurrences.
	(Analyze_Refined_State_In_Decl_Part): New routine.
	* sem_prag.ads (Analyze_Refined_State_In_Decl_Part): New routine.
	* snames.ads-tmpl: Add new predefined name for Refined_State. Add
	new Pragma_Id for Refined_State.

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

	* sem_ch10.adb (Install_Limited_Withed_Unit): handle properly the
	case of a record declaration in a limited view, when the record
	contains a self-referential component of an anonymous access type.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Process_Transient_Object): For any context other
	than a simple return statement, insert the finalization action
	after the context, not as an action on the context (which will
	get evaluated before it).

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Write_Field19_Name): Correct the
	string name of attribute Default_Aspect_Value.

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

	* sem_type.adb (Interface_Present_In_Ancestor): The progenitor
	in a type declaration may be an interface subtype.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads (Do_Range_Check): Add special note on handling of
	range checks for Succ and Pred.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* erroutc.adb (Output_Msg_Text): Remove VMS special handling.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* a-chahan.ads, a-chahan.adb (Is_Line_Terminator): New function
	(Is_Mark): New function.
	(Is_Other_Format): New function.
	(Is_Punctuation_Connector): New function.
	(Is_Space): New function.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): Redo duplicate/missing
	choice circuit. Was not quite right in some cases, which showed
	up in ACATS test B43201C.
	* sem_attr.adb (Address_Checks): Make sure name is set right
	for some messages issued.
	* mlib-prj.adb: Minor code reorganization.
	* gnat_ugn.texi: Remove special VMS doc for tagging of warning msgs.
	* exp_ch9.adb: Minor reformatting.

2013-10-10  Tristan Gingold  <gingold@adacore.com>

	* lib-writ.adb (Write_Unit_Information): Adjust previous patch.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb (Analyze_If_Statement): Warn on redundant if
	statement.
	* sem_util.ads, sem_util.adb (Has_No_Obvious_Side_Effects): New
	function.

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

	* exp_ch9.adb (Expand_N_Timed_Entry_Call): Simplify expansion
	for the case of a dispatching trigger: there is no need to
	duplicate the code or create a subprogram to encapsulate the
	triggering statements. This allows exit statements in the
	triggering statements, that refer to enclosing loops.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting.
	* sem_ch13.adb (Freeze_Entity_Checks): New procedure
	(Analyze_Freeze_Entity): Call Freeze_Entity_Checks
	(Analyze_Freeze_Generic_Entity): Call Freeze_Entity_Checks.
	* sinfo.ads: Add syntax for sprint for Freeze_Generic_Entity.
	* sprint.ads: Add syntax for freeze generic entity node.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, einfo.ads: Minor comment updates.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* lib-writ.adb (Write_Unit_Information): Fatal error if linker
	options are detected in a predefined generic unit.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c (CLOCK_REALTIME): Always define, possibly using
	a dummy placeholder value.
	(NEED_PTHREAD_CONDATTR_SETCLOCK): Remove, not needed anymore.
	* thread.c: Adjust #if test accordingly.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Consequence_Error): Generate an
	implicit if statement.
	(Expand_Contract_Cases): Generate an implicit if statement.
	(Process_Contract_Cases): Do not expand Contract_Cases when no code
	is being generated.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb (Address_Checks): New procedure.

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

	* sinfo.ads, sinfo.adb: New Node Freeze_Generic_Entity, to trigger
	semantic actions at the proper point for entities that previously
	had no explicit freeze point.
	* freeze.adb (Freeze_Generic_Entities): generate new nodes to
	indicate the point at which semantic checks can be performed on
	entities declared in generic packages.
	* sem_ch13.ads, sem_ch13.adb: New procedure
	Analyze_Freeze_Generic_Entity.
	* exp_util.adb (Insert_Actions): Treat new node like Freeze_Entity.
	* sem.adb (Analyze): Call Analyze_Freeze_Generic_Entity.
	* sprint.adb (Sprint_Node): display Analyze_Freeze_Generic_Entity.
	* gcc-interface/trans.c: Ignore Analyze_Freeze_Generic_Entity.
	* gcc-interface/Make-lang.in: Update dependencies.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): Identify duplicated
	cases.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch9.adb (Analyze_Task_Body): Aspects are illegal
	(Analyze_Protected_Body): Aspects are illegal.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb, sem_ch13.adb: Minor reformatting.
	* sem_case.adb (Check_Choices): Fix bad listing of missing
	values from predicated subtype case (Check_Choices): List
	duplicated values.
	* errout.adb (Set_Msg_Text): Process warning tags in VMS mode
	* erroutc.adb (Output_Msg_Text): Handle VMS warning tags
	* gnat_ugn.texi: Document /WARNINGS=TAG_WARNINGS for VMS
	* ug_words: Add entries for -gnatw.d and -gnatw.D
	* vms_data.ads: Add [NO]TAG_WARNINGS for -gnatw.D/-gnatw.d
	* lib-writ.ads: Documentation fixes

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* a-wichha.adb, a-wichha.ads, a-zchhan.adb, a-zchhan.ads
	(Is_Other_Format): New name for Is_Other.
	(Is_Punctuation_Connector): New name for Is_Punctuation

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Add entries in table Canonical_Aspects for aspects
	Refined_Depends and Refined_Global.
	* aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument,
	Aspect_Names, Aspect_Declay, Aspect_On_Body_Or_Stub_OK for
	aspects Refined_Depends and Refined_Global.
	* einfo.adb (Contract): Subprogram bodies are now valid owners
	of contracts.
	(Set_Contract): Subprogram bodies are now valid
	owners of contracts.
	(Write_Field24_Name): Output the contract
	attribute for subprogram bodies.
	* exp_ch6.adb (Expand_Subprogram_Contract): New routine.
	* exp_ch6.ads (Expand_Subprogram_Contract): New routine.
	* par-prag.adb: Pragmas Refined_Depends and Refined_Global do
	not require any special processing by the parser.
	* sem_ch3.adb (Adjust_D): Renamed to Adjust_Decl.
	(Analyze_Declarations): Code reformatting. Analyze the contract
	of a subprogram body at the end of the declarative region.
	* sem_ch6.adb (Analyze_Generic_Subprogram_Body):
	Subprogram bodies can now have contracts.  Use
	Expand_Subprogram_Contract to handle the various contract
	assertions.
	(Analyze_Subprogram_Body_Contract): New null routine.
	(Analyze_Subprogram_Body_Helper): Subprogram bodies can now have
	contracts.  Use Expand_Subprogram_Contract to handle the various
	contract assertions.
	(Analyze_Subprogram_Contract): Add local
	variable Nam. Update the call to Analyze_PPC_In_Decl_Part. Capture
	the pragma name in Nam.
	(Process_PPCs): Removed.
	* sem_ch6.ads (Analyze_Subprogram_Body_Contract): New routine.
	(Analyze_Subprogram_Contract): Update the comment on usage.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add null
	implementations for aspects Refined_Depends and Refined_Global.
	(Check_Aspect_At_Freeze_Point): Aspects Refined_Depends and
	Refined_Global do not need to be checked at the freeze point.
	* sem_prag.adb: Add entries in table Sig_Flags
	for pragmas Refined_Depends and Refined_Global.
	(Analyze_Contract_Cases_In_Decl_Part): Add local
	variable Restore. Use Restore to pop the scope.
	(Analyze_Depends_In_Decl_Part): Add local variable Restore. Use
	Restore to pop the scope.
	(Analyze_Global_In_Decl_List): Add local variable Restore. Use Restore
	to pop the scope.
	(Analyze_PPC_In_Decl_Part): Renamed to
	Analyze_Pre_Post_Condition_In_Decl_Part.
	(Analyze_Pragma):
	Add null implementations for pragmas Refined_Depends and
	Refined_Global. Refined_Pre and Refined_Post are now
	handled by routine Analyze_Refined_Pre_Post_Condition
	exclusively.
	(Analyze_Refined_Depends_In_Decl_Part): New
	null routine.
	(Analyze_Refined_Global_In_Decl_Part):
	New null routine.
	(Analyze_Refined_Pre_Post):
	Renamed to Analyze_Refined_Pre_Post_Condition.
	(Analyze_Refined_Pre_Post_Condition): Analyze the boolean
	expression.
	(Check_Precondition_Postcondition): Update the call
	to Analyze_PPC_In_Decl_Part.
	* sem_prag.ads: Add entries in table
	Pragma_On_Body_Or_Stub_OK for pragmas Refined_Depends
	and Refined_Global.
	(Analyze_PPC_In_Decl_Part): Renamed
	to Analyze_Pre_Post_Condition_In_Decl_Part.  Update the
	comment on usage.
	(Analyze_Refined_Depends_In_Decl_Part): New routine.
	(Analyze_Refined_Global_In_Decl_Part): New routine.
	(Analyze_Test_Case_In_Decl_Part): Update the comment on usage.
	* sem_util.adb (Add_Contract_Item): Rename formal Item to Prag
	and update all occurrences.  Subprogram body contracts can now
	contain pragmas Refined_Depends and Refined_Global.
	* sem_util.ads (Add_Contract_Item): Rename formal Item to
	Prag. Update the comment on usage.
	* sinfo.ads: Update the comment on structure and usage of
	N_Contract.
	* snames.ads-tmpl: Add new predefined names for Refined_Depends
	and Refined_Global. Add entries in table Pragma_Id for
	Refined_Depends and Refined_Global.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* types.ads: Minor reformatting.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* s-taprop-posix.adb: Add missing comment.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Record_Type): Move choice checking to
	Analyze_Freeze_Entity (Freeze_Record_Type): Make sure all choices
	are properly frozen
	* sem_case.adb (Check_Choices): Remove misguided attempt to
	freeze choices (this is now done in Freeze_Record_Type where
	it belongs).
	(Check_Choices): Remove some analyze/resolve calls
	that are redundant since they are done in Analyze_Choices.
	* sem_ch13.adb (Analyze_Freeze_Entity): Do the error
	checking for choices in variant records here (moved here from
	Freeze.Freeze_Record_Type)

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, s-taprop-posix.adb (CLOCK_REALTIME): Always define,
	possibly using a dummy placeholder value.
	(Compute_Deadline): For the case of an
	Absolute_Calendar deadline, if the target uses another clock
	than CLOCK_REALTIME as CLOCK_RT_Ada, compensate for possible
	different epoch.

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

	* sem_ch8.adb (Find_Expanded_Name): Handle properly a fully
	qualified reference to a generic child unit within itself,
	in an instantiation.

2013-10-10  Pascal Obry  <obry@adacore.com>

	* prj-conf.adb: Minor typo fixes in comment.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* s-taprop-posix.adb (Compute_Deadline): New local subprogram,
	factors common code between Timed_Sleep and Timed_Delay.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Record_Type): Don't replace others if
	expander inactive. This avoids clobbering the ASIS tree in
	-gnatct mode.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Op_Expon): Avoid crash testing for
	fixed-point case in preanalysis mode (error will be caught during
	full analysis).

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Refined_Pre and Refined_Post are now allowed as
	assertion identifiers for pragma Assertion_Policy.
	* sem_prag.adb (Is_Valid_Assertion_Kind): Add Refined_Pre/Refined_Post
	* sem_ch13.adb: Minor reformatting.

2013-10-10  Pascal Obry  <obry@adacore.com>

	* prj-conf.adb: Code refactoring.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Remove Integrity_Level from the node usage list.
	(Has_Option): Update the implementation to match
	the new terminology.
	(Has_Property): Renamed to Has_Option.
	(Integrity_Level): Removed.
	(Is_External_State): New routine.
	(Is_Input_Only_State): Use Has_Option to determine whether a state
	is Input_Only.	(Is_Input_State): Renamed to Is_Input_Only_State.
	(Is_Output_Only_State): Use Has_Option to determine whether
	a state is Output_Only.
	(Is_Output_State): Renamed to
	Is_Output_Only_State.
	(Is_Volatile_State): Use Has_Option to determine whether a state is
	volatile.
	(Set_Integrity_Level): Removed.
	(Write_Field8): Remove the entry for Integrity_Level.
	* einfo.ads: Remove Integrity_Level along with its documentation
	and usage in nodes.  Rename Is_Input_State to Is_Input_Only_State.
	Rename Is_Output_State to Is_Output_Only_State.  Update the
	documentation of Is_Volatile_State.  Update the node structure of
	E_Abstract_Entity.
	(Integrity_Level): Removed along with pragma Inline.
	(Is_External_State): New routine.
	(Is_Input_State): Renamed to Is_Input_Only_State.
	(Is_Output_State): Renamed to Is_Output_Only_State.
	(Set_Integrity_Level): Removed along with pragma Inline.
	* sem_prag.adb (Analyze_Pragma): Update the checks regarding
	global items and abstract state modes. Update the implementation
	of pragma Abstract_State to reflect the new rules and terminology.
	* snames.ads-tmpl: Remove the predefined name for Integrity
	level. Add new predefined names for Input_Only, Non_Volatile,
	Output_Only and Part_Of.

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

	* lib-xref.adb (Generate_Reference): Do not generate a reference
	within a _postcondition procedure: a proper source reference has
	already been generated when pre- analyzing the original aspect
	specification, and the use of a formal in a pre/postcondition
	should not count as a proper use in a subprogram body.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb (Why_Non_Static): Fix bomb for deferred constant
	case

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Add an entry for Aspect_Refined_Post in table
	Canonical_Aspect.
	* aspects.ads: Add an entry for Aspect_Refined_Post in tables
	Aspect_Id, Aspect_Argument, Aspect_Names, Aspect_Delay,
	Aspect_On_Body_Or_Stub_OK. Update the comment on the use of
	table Aspect_On_Body_Or_Stub_OK.
	* par-prag.adb: Add pragma Refined_Post to the list of pragmas
	that do not require special processing by the parser.
	* sem_attr.adb (Analyze_Attribute): Add special analysis for
	attributes 'Old and 'Result when code generation is disabled and
	they appear in aspect/pragma Refined_Post.
	(In_Refined_Post): New routine.
	* sem_ch6.adb (Analyze_Expression_Function): Move various
	aspects and/or pragmas that apply to an expression function to the
	corresponding spec or body.
	(Collect_Body_Postconditions): New routine.
	(Process_PPCs): Use routine Collect_Body_Postconditions
	to gather all postcondition pragmas.
	* sem_ch10.adb (Analyze_Proper_Body): Use routine
	Relocate_Pragmas_To_Body to move all source pragmas that follow
	a body stub to the proper body.
	(Move_Stub_Pragmas_To_Body): Removed.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
	for aspect Refined_Post.
	(Check_Aspect_At_Freeze_Point): Aspect
	Refined_Post does not need delayed processing at the freeze point.
	* sem_prag.adb: Add an entry for pragma Refined_Post in
	table Sig_Flags.
	(Analyze_Pragma): Add processing for pragma
	Refined_Post. Update the processing of pragma Refined_Pre
	to use common routine Analyze_Refined_Pre_Post.
	(Analyze_Refined_Pre_Post): New routine.
	(Relocate_Pragmas_To_Body): New routine.
	* sem_prag.ads: Table Pragma_On_Stub_OK is now known as
	Pragma_On_Body_Or_Stub_OK. Update the comment on usage of
	table Pragma_On_Body_Or_Stub_OK.
	(Relocate_Pragmas_To_Body): New routine.
	* snames.ads-tmpl: Add new predefined name for Refined_Post. Add
	new Pragma_Id for Refined_Post.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb (Expand_N_Variant_Part): Now null, expansion of
	last choice to others is moved to Freeze_Record_Type.
	* freeze.adb (Freeze_Record_Type): Expand last variant to others
	if necessary (moved here from Expand_N_Variant_Part

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* lib-xref-spark_specific.adb, par-ch13.adb, sem_prag.adb, sem_prag.ads,
	sem_ch12.adb, sem_attr.adb, sem_ch6.adb, sem_ch13.adb, a-sequio.adb,
	s-atocou-builtin.adb: Minor reformatting.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c (NEED_PTHREAD_CONDATTR_SETCLOCK): This
	constant needs to be output to s-oscons.h, as it is tested
	by init.c.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb (Expand_N_Variant_Part): Don't expand choices, too early
	* exp_ch5.adb (Expand_N_Case_Statement): Use new Has_SP_Choice
	flag to avoid expanding choices when not necessary.
	* exp_util.adb: Minor reformatting
	* freeze.adb (Freeze_Record_Type): Redo expansion of variants
	* sem_aggr.adb: Minor reformatting
	* sem_case.ads, sem_case.adb: Major rewrite, separating Analysis and
	Checking of choices.
	* sem_ch3.adb (Analyze_Variant_Part): Rewrite to call new
	Analyze_Choices.
	* sem_ch4.adb (Analyze_Case_Expression): Call Analyze_Choices
	and Check_Choices
	* sem_ch5.adb (Analyze_Case_Statement): Call Analyze_Choices
	and Check_Choices
	* sem_util.adb: Minor reformatting
	* sinfo.ads, sinfo.adb (Has_SP_Choice): New flag.

2013-10-10  Vincent Celier  <celier@adacore.com>

	* mlib-prj.adb (Build_Library): Do not issue link dynamic
	libraries with an Rpath, if switch -R was used.

2013-10-10  Tristan Gingold  <gingold@adacore.com>

	* s-stalib.ads (Image_Index_Table_8, Image_Index_Table_16,
	Image_Index_Table_32): Remove as not used.
	* s-imgint.adb (Image_Integer): Call Set_Image_Integer and
	remove duplicated code.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Provide a
	more precise error message when pragma Refined_Pre applies to
	an expression function that is not a completion.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* sem_attr.adb (Analyse_Attribute, case
	Attribute_Scalar_Storage_Order): a 'Scalar_Storage_Order attribute
	reference for a generic type is permitted in GNAT runtime mode.
	* a-sequio.adb (Read, Write): Use the endianness of the actual
	type to encode length information written to the file.

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

	* par-ch13.adb (Aspect_Specifications_Present)): In earlier than
	Ada2012 mode, assume that a legal aspect name following "with"
	keyword is an older gnat switch and not a misplaced with_clause.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Add an entry for Aspect_Refined_Pre in
	table Canonical_Aspect.
	(Aspects_On_Body_OK): Renamed to
	Aspects_On_Body_Or_Stub_OK.
	(Aspects_On_Body_Or_Stub_OK):
	Update the query in table Aspect_On_Body_OK.
	* aspects.ads: Add an entry for Aspect_Refined_Pre in tables
	Aspect_Id, Aspect_Argument, Aspect_Names, Aspect_Delay,
	Aspect_On_Body_Or_Stub_OK. Table Aspect_On_Body_OK is now known as
	Aspect_On_Body_Or_Stub_OK.  Add a section of aspect specifications
	that apply to body stubs.
	(Aspects_On_Body_OK): Renamed to Aspects_On_Body_Or_Stub_OK.
	(Aspects_On_Body_Or_Stub_OK): Update the comment on usage.
	* par-prag.adb: Add pragma Refined_Pre to the list of pragmas
	that do not require special processing by the parser.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Delay the
	analysis of aspect specifications that apply to a body stub
	until the proper body is analyzed.
	* sem_ch10.adb: Add with and use clause for Sem_Ch13.
	(Analyze_Package_Body_Stub): Set the corresponding spec of the stub.
	(Analyze_Proper_Body): Relocate all pragmas that apply
	to a subprogram body stub to the declarations of the proper
	body. Analyze the aspect specifications of the stub when the
	proper body is not present.
	(Analyze_Protected_Body_Stub): Set the corresponding spec of the stub.
	(Analyze_Task_Body_Stub): Set the corresponding spec of the stub.
	(Move_Stub_Pragmas_To_Body): New routine.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
	for aspect Refined_Pre.
	(Check_Aspect_At_Freeze_Point): Aspect
	Refined_Pre does not need delayed processing at the freeze point.
	* sem_prag.adb: Remove with and use clause for Snames. Add
	an entry for Pragma_Refined_Pre in table Sig_Flags.
	(Analyze_Pragma): Add processing for pragma Refined_Pre.
	* sem_prag.ads: Add with and use clause for Snames. Add table
	Pragma_On_Stub_OK.
	* sinfo.adb (Corresponding_Spec_Of_Stub): New routine.
	(Set_Corresponding_Spec_Of_Stub): New routine.
	* sinfo.ads: Add new attribute Corresponding_Spec_Of_Stub
	along with comment on usage and occurrences in nodes.
	(Corresponding_Spec_Of_Stub): New routine along with pragma
	Inline.
	(Set_Corresponding_Spec_Of_Stub): New routine along
	with pragma Inline.
	* snames.ads-tmpl: Add new predefined name for Refined_Pre. Add
	new Pragma_Id for Refined_Pre.

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

	* sem_ch12.adb (Analyze_Package_Instantiation,
	Analyze_Subprogram_Instantiation): Improve error message when
	name in instantiation does not designate a generic unit of the
	right kind.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb (Expand_N_Variant_Part): Expand statically
	predicated subtype which appears in Discrete_Choices list.
	* exp_ch5.adb (Expand_N_Case_Statement): Expand statically
	predicated subtype which appears in Discrete_Choices list of
	case statement alternative.
	* exp_util.ads, exp_util.adb (Expand_Static_Predicates_In_Choices): New
	procedure.
	* sem_case.adb: Minor reformatting (Analyze_Choices): Don't
	expand out Discrete_Choices that are names of subtypes with
	static predicates. This is now done in the analyzer so that the
	-gnatct tree is properly formed for ASIS.
	* sem_case.ads (Generic_Choices_Processing): Does not apply
	to aggregates any more, so change doc accordingly, and remove
	unneeded Get_Choices argument.
	* sem_ch3.adb (Analyze_Variant_Part): Remove no
	longer used Get_Choices argument in instantiation of
	Generic_Choices_Processing.
	* sem_ch4.adb (Analyze_Case_Expression): Remove no
	longer used Get_Choices argument in instantiation of
	Generic_Choices_Processing.
	* sem_ch5.adb (Analyze_Case_Statement): Remove no
	longer used Get_Choices argument in instantiation of
	Generic_Choices_Processing.
	* sinfo.ads: For N_Variant_Part, and N_Case_Statement_Alternative,
	document that choices that are names of statically predicated
	subtypes are expanded in the code generation tree passed to the
	back end, but not in the ASIS tree generated for -gnatct.

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

	* sem_ch7.adb: Revert previous change.

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

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): In the case where
	the Storage_Pool aspect is specified by an aspect clause and a
	renaming is used to capture the evaluation of the pool name,
	insert the renaming in front of the aspect's associated entity
	declaration rather than in front of the corresponding attribute
	definition (which hasn't been appended to the declaration
	list yet).

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

	* sem_ch6.adb (Is_Interface_Conformant): The controlling type
	of the interface operation is obtained from the ultimate alias
	of the interface primitive parameter, because that may be in
	fact an implicit inherited operation whose signature involves
	the type extension and not the desired interface.

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

	* par-ch13.adb (Aspect_Specifications_Present): In Ada 2012,
	recognize an aspect specification with a misspelled name if it
	is followed by a a comma or semicolon.

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

	* s-atocou.adb, s-atocou.ads, s-atocou-x86.adb, s-atocou-builtin.adb:
	Fix copyright notice.

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

	* lib-xref-spark_specific.adb (Enclosing_Subprogram_Or_Package): Get
	enclosing subprogram for precondition/postcondition/contract cases.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor fix.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
	Address): Remove the Comes_From_Source test for the overlap
	warning.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor code reorganization (use Nkind_In).
	* sem_warn.adb: Minor code reorganization (optimization in
	Check_Unset_Reference).
	* exp_ch9.adb, exp_ch4.adb, sinfo.ads: Minor reformatting.

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

	* sem_ch7.adb (Install_Parent_Private_Declarations): When
	instantiating a child unit, do not install private declaration of
	a non-generic ancestor of the generic that is also an ancestor
	of the current unit: its private part will be installed when
	private part of ancestor itself is analyzed.

2013-10-10  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): Retrieve component
	aliased status from type entities directly instead of going back
	to original component definition.
	* sem_ch7.adb: Minor reformatting.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For Address
	attribute, consider it to be set in source, because of aliasing
	considerations.
	(Analyze_Attribute_Definition_Clause): For the
	purpose of warning on overlays, take into account the aspect case.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, a-cforse.ads,
	a-cofove.ads: Minor reformatting.

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

	* gnat_ugn.texi: Remove obsolete mention to -laddr2line.

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

	* exp_ch4.adb (Expand_N_Case_Expression):  Indicate that the
	generated variable used as a target of the expression needs
	no initialization.

2013-10-10  Jose Ruiz  <ruiz@adacore.com>

	* exp_util.adb (Corresponding_Runtime_Package): Remove the condition
	related to No_Dynamic_Attachment which was wrong. Protected types
	with interrupt handlers (when not using a restricted profile)
	are always treated as protected types with entries, regardless
	of the No_Dynamic_Attachment restriction.
	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Simplify the code
	using the result of Corresponding_Runtime_Package.
	(Install_Private_Data_Declarations): When having
	static handlers and a non restricted profile, we use the
	type Static_Interrupt_Protection always, so we removed an
	extra wrong condition looking at the No_Dynamic_Attachment
	restriction. Simplify the code using the result of
	Corresponding_Runtime_Package.
	(Make_Initialize_Protection): Simplify the code using
	the result of Corresponding_Runtime_Package.
	(Install_Private_Data_Declaration): The No_Dynamic_Attachment
	restriction has nothing to do with static handlers. Remove the extra
	erroneous condition that was creating the wrong data type.

2013-10-10  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Is_Object_Reference): Attribute
	'Old produces an object reference.
	* gnat_rm.texi: Define accessibility level of
	X'Update(...) result.

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

	* gnat_rm.texi, a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
	a-cforse.ads, a-cofove.ads: Update comment and doc of formal containers

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

	* sem_ch13.adb (Analyze_Aspect_Specifications): For Pre/Post
	conditions that apply to a subprogram body, preserve the placement
	and order of the generated pragmas, which must appear before
	other declarations in the body.

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

	* gnat_ugn.texi: Add gnat2xml doc.

2013-10-10  Doug Rupp  <rupp@adacore.com>

	* s-vxwork-arm.ads: Fix interface to FP_CONTEXT.

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

	* sem_ch13.adb (Analyze_Aspect_Specification): An aspect Import
	on a variable need not have a convention specified, as long as
	the implicit convention of the object, obtained from its type,
	is Ada or Ada-related.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* cstand.adb (Standard_Unsigned_64): New internal type.
	* gnat_rm.texi: Update documentation on To_Address.
	* sem_attr.adb (Analyze_Attribute, case To_Address): Fix
	problem with out of range static values given as literals or
	named numbers.
	* stand.ads (Standard_Unsigned_64): New internal type.
	* stand.adb: Minor reformatting.

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

	* sem_ch4.adb (Analyze_Selected_Component,
	Has_Mode_Conformant_Spec): If selected component may be an
	indexing of a parameterless call to a protected function, and
	expansion is disabled, this is a valid candidate interpretation.

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

	* gnat_ugn.texi: Minor editing.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* gnatlink.adb: Minor reformatting.

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

	* debug.adb: Free flag d.E and change doc for flag d.K.

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

	* sem_prag.adb (Check_Precondition_Postcondition): If the
	pragma comes from an aspect spec, and the subprogram is a
	library unit, treat as a ppc in a declarative part in ASIS mode,
	so that expression in aspect is properly analyzed. In this case
	there is no later point at which the aspect specification would
	be examined.

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

	* opt.ads: Minor comment fix.

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

	* a-coinho-shared.ads, a-coinho-shared.adb: New file.
	* s-atocou.ads: Add procedure to initialize counter.
	* s-atocou.adb: Likewise.
	* s-atocou-builtin.adb: Likewise.
	* s-atocou-x86.adb: Likewise.
	* gcc-interface/Makefile.in: Select special version of
	Indefinite_Holders package on platforms where atomic built-ins
	are supported. Update tools target pairs for PikeOS.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sinput-c.adb (Load_File): Ensure Source_Align alignment.
	* sinput-d.adb (Create_Debug_Source): Ensure Source_Align alignment.
	* sinput-l.adb (Create_Instantiation_Source): Ensure Source_Align
	alignment.
	(Load_File): Ditto.
	* sinput.ads, sinput.adb (Get_Source_File_Index): New optimized (single
	line) version.
	* types.ads (Source_Align): New definition.
	(Source_Buffer): Document new alignment requirement.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Linker_Section): Allow
	this for types.

2013-10-10  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor adjustment to doc for To_Address attribute.

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

	* s-stopoo.ads (Root_Storage_Pool): Add pragma
	Preelaborable_Initialization.

2013-09-25  Tom Tromey  <tromey@redhat.com>

	* gcc-interface/Makefile.in (OUTPUT_OPTION): Define as "-o $@".

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

	PR ada/58264
	* gcc-interface/trans.c (Attribute_to_gnu): Define GNAT_PREFIX local
	variable and use it throughout.
	<Attr_Length>: Note whether the prefix is the dereference of a pointer
	to unconstrained array and, in this case, capture the result for both
	Attr_First and Attr_Last.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Abstract_State>: New.

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

	* gcc-interface/trans.c (gigi): Remove dead code.

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

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Pop the stack of
	return variables for subprograms using the CICO mechanism.

2013-09-13  Dominique Dhumieres  <dominiq@lps.ens.fr>

	* gcc-interface/Makefile.in: Fix darwin Filter to match on $target_os,
	not $target_cpu.

2013-09-11  Thomas Schwinge  <thomas@codesourcery.com>
            Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/Makefile.in: Import target_cpu, target_vendor,
	target_os and their host_ counterparts. Remove host_canonical and
	target_cpu_default, unused. Remove local ad-hoc computations of
	"host", "targ", "arch", "osys" and "manu". Replace uses of these by
	uses of the now imported family, hence back to filters against
	canonical values. Remove filters on e500 for target_cpu, expected to
	be canonicalized into powerpc. Invert the logic filtering on 64bit
	sparc for VxWorks. Simplify the filtering logic for bareboard tools
	target pairs, now using straight elf/eabi filters on the target_os
	part only.

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

	* sem_ch3.adb (Replace_Anonymoous_Access_To_Protected_Subprogram): If
	the return type is itself an access to function, recurse to emit
	another anonymous type.
	* gcc-interface/Make-lang.in: Update dependencies.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* err_vars.ads (Warning_Doc_Switch): Ignored in VMS mode.
	* errout.adb (Warning_Doc_Switch): Ignored in VMS mode.
	* errout.ads (Warning_Doc_Switch): Ignored in VMS mode.
	* inline.ads (Warnings): New component in Pending_Body_Info.
	* sem_ch12.adb (Pending_Body_Info): Save and restore warnings
	at instantiation point.
	* warnsw.adb (Save_Warnings): New function (Restore_Warnings):
	New procedure Remove special handling of Warning_Doc_Switch,
	cleaner to handle the VMS case in errout, than to introduce
	undocumented oddities here.
	* warnsw.ads (Warning_Record) : New type.
	(Save_Warnings): New function.
	(Restore_Warnings): New procedure.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* sinput.adb (Check_For_BOM): Avoid reading past end of file.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Error_Msg_Ada_2012_Feature): New procedure.
	* errout.ads (Error_Msg_Ada_2012_Feature): New procedure.
	* inline.ads: Save/Restore Ada_Version_Pragma.
	* opt.adb: Save/Restore Ada_Version_Pragma.
	* opt.ads (Ada_Version_Pragma): New variable.
	* par-ch11.adb, par-ch12.adb, par-ch13.adb, par-ch4.adb, par-ch5.adb,
	par-ch6.adb, par-ch8.adb, par-prag.adb: Use Error_Msg_Ada_2012_Feature.
	* prj.adb: Initialize Ada_Version_Pragma.
	* sem_attr.adb: Use Error_Msg_Ada_2012_Feature.
	* sem_ch12.adb, sem_ch8.adb: Save/restore Ada_Version_Pragma.
	* sem_prag.adb (Analyze_Pragma, cases Ada_xx): Set Ada_Version_Pragma.
	* switch-c.adb: Initialize Ada_Version_Pragma.
	* sem_ch12.adb: Minor reformatting.

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

	* sem_ch3.adb (Process_Subtype): Discard constraint on access
	to class-wide type. Such constraints are not supported and are
	considered a language pathology.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* gnatbind.adb: Correct starting date in --version string.
	* gnatdll.adb: Use Check_Version_And_Help_G to implement --help
	and --version.
	* gnatkr.adb: Use Check_Version_And_Help_G to implement --help
	and --version.
	* gnatlink.adb: Correct starting date in --version string.
	* gnatls.adb: Correct starting date in --version string.
	* make.adb: Correct starting date in --version string.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* switch-c.adb: Minor reformatting.
	* atree.ads (Original_Nodes): Add documentation on ASIS usage.
	* sinfo.ads: Add section on ASIS mode (documentation only).

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Warnings): Don't allow
	REASON parameter in compiler units (bootstrap issues).

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Output warning if
	-gnateE specified for a target that does not support it.

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

	* sem_prag.adb (Analyze_Pragma, case SPARK_Mode): Handle properly
	a subprogram body without previous spec.

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

	* sem_ch4.adb: Minor typo fixes.

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

	* aspects.adb (Aspects_On_Body_OK): New routine.
	* aspects.ads: Modify type Aspect_Expression to include
	the Optional_XXX variants. Update the contents of
	table Aspect_Argument. Add table Aspect_On_Body_OK.
	(Aspects_On_Body_OK): New routine.
	* par-ch13.adb (Get_Aspect_Specifications): Account for optional
	names and expressions when parsing an aspect.
	* sem_ch6.adb: Add with and use clause for Aspects.
	(Analyze_Subprogram_Body_Helper): Do not emit an error when
	analyzing a body with aspects that can be applied simultaneously
	to both spec and body.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Insert the
	corresponding pragma of an aspect that applies to a subprogram
	body in the declarative part.
	(Make_Aitem_Pragma): Do not generate a pragma with an empty argument
	list.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* switch-c.adb: Diagnose -gnatc given after -gnatRm.
	* gnat_ugn.texi: Add documentation for -gnatRm.
	* usage.adb: Minor reorganization (put style entries in proper
	order) Document -gnatRm switch.
	* sinfo.ads: Minor comment fix.

2013-09-10  Sergey Rybin  <rybin@adacore.com frybin>

	* tree_io.ads: Update ASIS_Version_Number.

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

	* sem_ch3.adb (Access_Subprogram_Declaration): Check whether the
	designated type can appear in a parameterless call.
	* sem_ch4.adb (Analyze_Call): Do not insert an explicit dereference
	in the case of an indirect call through an access function that
	returns an array type.
	(Analyze_One_Call): Handle properly legal parameterless calls
	whose result is indexed, in constructs of the for F.all (I)
	* sem_ch6.ads (May_Need_Actuals): Make public, for use on access
	to subprogram types.
	* sem_res.adb (Resolve_Call): If the call is indirect, there is
	no entity to set on the name in the call.

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

	* aspects.adb: Add entries in the Has_Aspect_Specifications_Flag
	table for package body and body stubs.
	(Move_Or_Merge_Aspects): New routine.
	(Remove_Aspects): New routine.
	* aspects.ads (Move_Aspects): Update comment on usage.
	(Move_Or_Merge_Aspects): New routine.
	(Remove_Aspects): New routine.
	* par-ch3.adb: Update the grammar of private_type_declaration,
	private_extension_declaration, object_renaming_declaration,
	and exception_renaming_declaration.
	(P_Subprogram): Parse the
	aspect specifications that apply to a body stub.
	* par-ch6.adb: Update the grammar of subprogram_body_stub and
	generic_instantiation.
	* par-ch7.adb: Update the grammar of package_declaration,
	package_specification, package_body, package_renaming_declaration,
	package_body_stub.
	(P_Package): Parse the aspect specifications
	that apply to a body, a body stub and package renaming.
	* par-ch9.adb: Update the grammar of entry_declaration,
	protected_body, protected_body_stub, task_body,
	and task_body_stub.
	(P_Protected): Add local variable
	Aspect_Sloc. Add local constant Dummy_Node.  Parse the aspect
	specifications that apply to a protected body and a protected
	body stub.
	(P_Task): Add local variable Aspect_Sloc. Add local
	constant Dummy_Node. Parse the aspect specifications that apply
	to a task body and a task body stub.
	* par-ch12.adb: Update the grammar of
	generic_renaming_declaration.
	(P_Generic): Parse the aspect
	specifications that apply to a generic renaming.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not emit
	an error when analyzing aspects that apply to a body stub. Such
	aspects are relocated to the proper body.
	* sem_ch7.adb (Analyze_Package_Body_Helper): Analyze the aspect
	specifications that apply to a body.
	* sem_ch9.adb (Analyze_Protected_Body): Warn about user-defined
	aspects not being supported on protected bodies. Remove the
	aspect specifications.	(Analyze_Single_Protected_Declaration):
	Analyze the aspects that apply to a single protected declaration.
	(Analyze_Task_Body): Warn about user-defined aspects not being
	supported on task bodies. Remove the aspect specifications.
	* sem_ch10.adb: Add with and use clause for Aspects.
	(Analyze_Package_Body_Stub): Propagate the aspect specifications
	from the stub to the proper body.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Insert the
	corresponding pragma of an aspect that applies to a body in the
	declarations of the body.
	* sinfo.ads: Update the gramma of expression_function,
	private_type_declaration, private_extension_declaration,
	object_renaming_declaration, exception_renaming_declaration,
	package_renaming_declaration, subprogram_renaming_declaration,
	generic_renaming_declaration, entry_declaration,
	subprogram_body_stub, package_body_stub, task_body_stub,
	generic_subprogram_declaration.

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

	* sem_prag.adb (Analyze_Pragma): Add processing
	for aspect/pragma SPARK_Mode when it applies to a [library-level]
	subprogram or package [body].

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document that -gnatc and -gnatR cannot be
	given together.
	* switch-c.adb (Scan_Front_End_Switches): Give error if both
	-gnatR and -gnatc given.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* g-table.ads, g-table.adb (For_Each): New generic procedure
	(Sort_Table): New generic procedure.

2013-09-10  Thomas Quinot  <quinot@adacore.com>

	* adaint.c (__gnat_is_executable_file_attr): Should be true
	for an executable regular file only only (not for a directory
	that has the executable permission).

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

	* sem_res.adb: Further work on operator calls in ASIS.

2013-09-10  Yannick Moy  <moy@adacore.com>

	* sinfo.ads, sem_prag.ads, sem_ch13.adb: Minor correction and comment
	update.

2013-09-10  Thomas Quinot  <quinot@adacore.com>

	* aspects.ads, sem_ch13.adb: Minor reformatting.
	* adaint.c (__gnat_set_close_on_exec): Add comment documenting
	that this routine is shared between OS_Lib and Sockets.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): Ignore pragma if Is_Ignored set.
	* sem_ch13.adb (Make_Aitem_Pragma): Set Is_Checked if needed.
	* sem_prag.adb (Check_Kind): Moved from spec (Analyze_Pragma):
	Make sure Is_Ignored/Is_Checked are set right (Analyze_Pragma,
	case Check): Ditto (Check_Applicable_Policy): Handle
	Statement_Assertion case Throughout, set and check the Is_Checked
	flag as appropriate.
	* sem_prag.ads (Check_Kind): Moved to body.
	* sinfo.ads, sinfo.adb (Is_Checked): New flag.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* aspects.ads (Delay_Type): New type (Aspect_Delay): New table.
	* einfo.adb (Has_Delayed_Rep_Aspects): New flag
	(May_Inherit_Delayed_Rep_Aspects): New flag (Rep_Clause): Removed
	(use Get_Attribute_Representation_Clause).
	* einfo.ads (Has_Delayed_Rep_Aspects): New flag
	(May_Inherit_Delayed_Rep_Aspects): New flag
	* freeze.adb: Minor reformatting
	* sem_ch13.adb (Analyze_Aspect_Speficifications): Redo
	handling of delayed evaluation, including optimizing some cases
	and avoiding delays.
	(Analyze_Aspects_At_Freeze_Point): Now
	handled inheriting delayed rep aspects for type derivation case.
	(Inherit_Delayed_Rep_Aspects): New procedure
	* sem_ch13.ads (Analyze_Aspects_At_Freeze_Point): Now handled
	inheriting delayed rep aspects for type derivation case.
	* sem_ch3.adb (Build_Derived_Type): Set
	May_Inherit_Derived_Rep_Aspects if parent type flag
	Has_Delayed_Rep_Aspects is set

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Finalize): Don't delete real errors with specific
	warning control.

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

	* exp_ch9.adb (Expand_N_Timed_Entry_Call,
	Expand_N_Conditional_Entry_Call, Expand_N_Asynchronous_Select):
	Handle properly a trigger that is  a call to a primitive operation
	of a type that implements a limited interface, if the type itself
	is not limited.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sinfo.ads, exp_ch9.adb, sem_prag.adb, sem_ch12.adb,
	exp_ch4.adb, sprint.adb: Minor reformatting.

2013-09-10  Yannick Moy  <moy@adacore.com>

	* sinfo.ads: Document splitting of pre/post in N_Contract description.

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

	* exp_ch4.adb (Expand_N_Op_Multiply): If the operation is of the
	form X * 2 ** N and it has been marked Is_Power_Of_2_For_Shift,
	add a mod operation if the result type is a binary modular type.

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

	* sem_prag.adb (Check_Mode_Restriction_In_Enclosing_Context): Add local
	variable Context.  Remove local variable Subp_Id. Start the
	context traversal from the current subprogram rather than the
	current scope. Update the scope traversal and error reporting.

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

	* exp_ch9.adb (Expand_N_Timed_Entry_Call): New procedure
	Rewrite_Triggering_Statements, to encapsulate the statements that
	follow the trigger of the entry call. This procedure is needed
	when the trigger is a dispatching call, because the expansion
	requires several copies of those statements. The procedure is
	more efficient, and preserves non-local references when the
	construct is within an instance.

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

	* sem_ch12.adb (Analyze_Package_Instantiation): If the
	instantiation is a compilation unit, analyze aspects before
	analyzing the package declaration for the instance.
	* sem_ch13.adb (Analyze_Aspect_Specifications): If the
	corresponding node is a package instantiation, insert generated
	pragmas at the head of visible declarations.
	* sem_prag.adb (Analyze_Pragma, case Preelaborate): In an instance
	do not ignore the pragma if it comes from an aspect specification
	in the instance, and not from the generic unit.
	* sprint.adb (Sprint_Node_Actual): For a package declaration that
	is an instantiation, print aspects after declaration.

2013-09-10  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, sem_prag.adb, rtsfind.ads: Minor reformatting.

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

	* sem_prag.adb (Get_SPARK_Mode_Id): Handle the
	case where the pragma may appear without an argument.
	(Analyze_Global_List): Add expanded_name to the list of constructs
	that denote a single item.
	(Collect_Global_List): Add expanded_name to the list of constructs
	that denote a single item.

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

	* exp_ch4.adb (Apply_Accessibility_Check): Add local constant
	Pool_Id and local variables Fin_Call and Free_Stmt. Finalize
	and deallocate a heap-allocated class-wide object after it
	has been determined that it violates the accessibility rules.
	* rtsfind.ads: Add new RTU_Id for System.Memory. Add new RE_Id
	and entry in RE_Unit_Table for RE_Free.

2013-09-01  Eric Botcazou  <ebotcazou@adacore.com>
	    Iain Sandoe  <iain@codesourcery.com>

	PR ada/58239
	* gcc-interface/Makefile.in (GCC_LINK_FLAGS): Add -static-libstdc++.
	(GCC_LINK): Use CXX instead of CC.
	* gcc-interface/Make-lang.in (CXX_LFLAGS): New.
	(ADA_TOOLS_FLAGS_TO_PASS): Pass CXX, and CXX_LFLAGS for native.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not bother about alias
	sets of derived types in ASIS mode.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Replace True with true.
	(is_cplusplus_method): Likewise, and False with false.
	(components_need_strict_alignment): Likewise.
	* gcc-interface/misc.c (gnat_init_gcc_fp): Likewise.
	* gcc-interface/trans.c (Loop_Statement_to_gnu): Likewise.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(add_cleanup): Likewise.
	(Sloc_to_locus1): Likewise.
	(Sloc_to_locus): Likewise.
	(set_expr_location_from_node): Likewise.
	* gcc-interface/utils.c (potential_alignment_gap): Likewise.

2013-08-13  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/trans.c (set_end_locus_from_node): Clear column info
	for the end_locus of a block if it does not come from an End_Label.

2013-08-13  Thomas Quinot  <quinot@adacore.com>

	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): If
	there is no End_Label, attach cleanup actions to the sloc of the HSS
	node instead.
	(Exception_Handler_to_gnu_zcx): Associate cleanup actions with the sloc
	of the handler itself.
	(add_cleanup): Clear column information in sloc of cleanup actions.
	(Sloc_to_locus1): New static function.
	(Sloc_to_locus): Call it.
	(set_expr_location_from_node1): New static function.
	(set_expr_location_from_node): Call it.

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

	* gcc-interface/trans.c (Call_to_gnu): Deal with specific conditional
	expressions for misaligned actual parameters.

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

	* gcc-interface/trans.c (can_equal_min_or_max_val_p): Be prepared for
	values outside of the range of the type.

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

	* gcc-interface/utils2.c (build_atomic_load): Do a mere view-conversion
	to the original type before converting to the result type.
	(build_atomic_store): First do a conversion to the original type before
	view-converting to the effective type, but deal with a padded type
	specially.

2013-08-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (TOOLS_LIBS): Pick C object files from the
	compiler build and use standard library variables.
	(../../vxaddr2line$(exeext): Do not depend on targext.o and adjust.
	(gnatmake-re): Do not depend on targext.o.
	(gnatlink-re): Do not depend on link.o and targext.o.
	(../../gnatmake$(exeext): Likewise.
	(../../gnatlink$(exeext): Likewise.

2013-07-21   OndÅej BÃ­lka  <neleai@seznam.cz>

	* gcc-interface/gigi.h: Fix typos.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils2.c: Likewise.
	* gnat_rm.texi: Likewise.
	* gnat_ugn.texi: Likewise.
	* raise-gcc.c: Likewise.
	* sigtramp-ppcvxw.c: Likewise.
	* sysdep.c: Likewise.
	* terminals.c: Likewise.

2013-07-20  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/57934
	* gcc-interface/ada.h (CAT): Fix typo.

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Get_Pragma): Handle the retrieval of delayed
	pragmas stored in N_Contract nodes.
	* einfo.ads (Get_Pragma): Update the comment on usage.
	* sem_prag.adb (Check_Precondition_Postcondition): Retain a copy
	of the pragma when it applies to a body that acts as a spec. The
	copy is preanalyzed and chained on the contract of the body.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* rtsfind.adb: Minor comment fix.

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Check_Ghost_Subprogram_Call): Do not check the placement
	of a Ghost function call when the enclosing context is being
	preanalyzed.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call, Process_Formals): If the
	expression in a return statement is a numeric literal, qualify
	it with the return type for proper resolution.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* sem.ads: Minor comment updates.
	* s-restri.ads, exp_ch6.adb, lib-load.ads, exp_ch3.adb, sem_ch10.adb:
	Minor reformatting.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add dummy entry
	for Restriction_Set.
	* gnat_rm.texi: Add missing menu entry for Attribute Ref Add
	documentation for attribute Restriction_Set.
	* lib-writ.adb (Write_With_Lines): Generate special W lines
	for Restriction_Set.
	* lib-writ.ads: Document special use of W lines for
	Restriction_Set.
	* lib.ads (Restriction_Set_Dependences): New table.
	* par-ch4.adb (Is_Parameterless_Attribute): Add Loop_Entry to
	list (Scan_Name_Extension_Apostrophe): Remove kludge test for
	Loop_Entry (Scan_Name_Extension_Apostrophe): Handle No_Dependence
	for Restricton_Set.
	* restrict.adb (Check_SPARK_Restriction): Put in Alfa order
	(OK_No_Dependence_Unit_Name): New function.
	* restrict.ads (OK_No_Dependence_Unit_Name): New function.
	* rtsfind.adb: Minor reformatting Minor code reorganization.
	* sem_attr.adb (Analyze_Attribute): Add processing for
	Restriction_Set.
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Remove Check_Unit_Name and use new function
	OK_No_Dependence_Unit_Name instead.
	* sinfo.ads: Minor comment updates.
	* snames.ads-tmpl: Add entry for Restriction_Set attribute.

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Apply_Accessibility_Check): Remove local constant
	Pool_Id and local variable Free_Stmt. Do not deallocate the faulty
	object as "free" is not available on all targets/profiles.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Handle
	Storage_Size aspect for task type in case discriminant is
	referenced.
	(Analyze_Attribute_Definition_Clause): Do not flag Storage_Size
	attribute definition clause as obsolescent if from aspect.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add documentation for Img returning a function.
	* par-prag.adb: Minor reformatting.
	* restrict.adb: Minor reformatting and code reorganization.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb: add guard to ASIS transform.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Expand_N_Asynchronous_Select): If the trigger
	of the asynchronous select is a dispatching call, transform the
	abortable part into a procedure, to avoid duplication of local
	loop variables that may appear within.

2013-07-08  Vincent Celier  <celier@adacore.com>

	* projects.texi: Update the documentation of suffixes in package
	Naming.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Conforming_Types): Anonymous_access_to_subprograsm
	types are type conformant if the designated type of one is
	protected and the other is not. Convention only matters when
	checking subtype conformance.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Make_Call_Into_Operator): In ASIS mode, propagate
	back the fully resolved operands to the original function call
	so that all semantic information remains available to ASIS.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb: minor reformatting (remove obsolete comment).
	* sem_ch9.adb: improve error message on illegal trigger.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb: Minor reformatting.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* targparm.adb (Get_Target_Parameters): Recognize pragma
	Partition_Elaboration_Policy.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Minor update to mention partition elaboration policy.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Comple_Object_Operation): Revert previous change.
	(Analyze_Indexed_Component_Form): In ASIS mode, if node has been
	transformed but not rewritten as a function call (as is the case
	in a generic), analyze it as such.

2013-07-08  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi: Minor rewording: add missing word "operators"
	in documentation for restriction No_Direct_Boolean_Operator.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Set_Msg_Txt): No longer sets Is_Style_Msg,
	Is_Warning_Msg, or Is_Unconditional_Msg (all are set elsewhere
	now).
	* errout.ads: Insertions ! and !! no longer have to be at the
	end of the message, they can be anywhere in the message.
	* erroutc.adb (Test_Style_Warning_Serious_Unconditional_Msg):
	Replaces Test_Style_Warning_Serious_Msg
	* erroutc.ads (Has_Double_Exclam): New flag New comments for
	existing flags (Test_Style_Warning_Serious_Unconditional_Msg):
	Replaces Test_Style_Warning_Serious_Msg
	* errutil.adb (Test_Style_Warning_Serious_Unconditional_Msg):
	Replaces Test_Style_Warning_Serious_Msg

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* par-prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Recognize SPARK_05 as synonym for SPARK in restrictions pragma.
	* restrict.ads, restrict.adb (SPARK_Hides): Table moved to body, only
	referenced there.
	* scng.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch8.adb,
	sem_res.adb, sem_util.adb: Use restriction SPARK_05 instead of SPARK.
	* snames.ads-tmpl (Name_No_Obsolescent_Features): New entry.

2013-07-08  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Check_Files): Use a response file for gnatls
	when possible.

2013-07-08  Gary Dismukes  <dismukes@adacore.com>

	* freeze.adb: Minor typo fixes.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document SPARK_05 (replaces SPARK) Document
	obsolete recognition of SPARK Document all other obsolete synonyms
	for old restrictions.
	* restrict.adb (Check_SPARK_Restriction): SPARK_05 replaces
	SPARK (Process_Restriction_Synonyms): Handle SPARK as synonym
	for SPARK_05.
	* restrict.ads: Restriction SPARK_05 replaces SPARK.
	* s-rident.ads: Replace restriction SPARK by SPARK_05 Add SPARK
	as synonym for SPARK_05.
	* sem_prag.adb: Minor reformatting.
	* snames.ads-tmpl: Add entries for Name_SPARK and Name_SPARK_05.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* sem_dim.adb: Minor error message change.
	* freeze.adb (Freeze_Entity, array type case): Extend handling
	of Implicit_Packing to handle multi-dimensional array case.
	* gnat_rm.texi: Update doc on Implicit_Packing.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Complete_Object_Operation): In ASIS mode, if
	the parent node is a selected component and the analysis as a
	call is successful, set the type of the selector in the parent
	node for subsequent checks, because the rewriting of the node
	does not take place during pre-analysis.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb, exp_ch3.adb: Minor reformatting.

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Eq): When comparing two
	Bounded_Strings, use the predefined equality function of the
	root Super_String type.

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Create_Alternative): Removed.
	(Expand_N_If_Expression): Remove constant
	In_Case_Or_If_Expression. Add local variable
	Ptr_Typ. Inspect the "then" and "else" action lists
	for transient controlled objects and generate code to
	finalize them.	(Is_Controlled_Function_Call): Removed.
	(Process_Action): Update the comment on usage. Update the call
	to Process_Transient_Object. There is no need to continue the
	traversal of the object itself.
	(Process_Actions): New routine.
	(Process_Transient_Object): Moved to the top level of Exp_Ch4. Add
	a new formal and update the related comment on usage.
	* exp_util.adb (Within_Case_Or_If_Expression): Start the search
	from the parent of the node.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* a-cusyqu.ads, a-cbprqu.ads, s-interr.ads, a-cuprqu.ads,
	a-cbsyqu.ads: Minor reformatting (proper formatting of overriding).

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Attribute_Renaming): Treat 'Img as an attribute
	that can be renamed as a function.

2013-07-08  Thomas Quinot  <quinot@adacore.com>

	* g-socket.ads: Document target dependency: FIONBIO may or may not
	be inherited from listening socket by accepted socket.

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Apply_Accessibility_Check): Do not deallocate the object
	on targets that can't deallocate.

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Freeze_Type): Generate a
	subpools-related accessibility check only on profiles that
	include the corresponding library unit.

2013-07-08  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch8.adb: Minor typo fixes.

2013-07-08  Javier Miranda  <miranda@adacore.com>

	* sem_ch8.adb (Save_Scope_Stack): Adding documentation.
	(Restore_Scope_Stack): Remove the elements of the list when the
	visibility of each entity is restored.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, sem.ads, sem_util.adb: Minor reformatting.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb, sem_ch8.ads: Minor reformatting.

2013-07-08  Gary Dismukes  <dismukes@adacore.com>

	* gnat_rm.texi: Minor reformatting and rewording for consistency.

2013-07-08  Bob Duff  <duff@adacore.com>

	* exp_ch3.adb (Build_Master): If Desig_Type is an incomplete
	view coming from a limited-with'ed package, use the nonlimited
	view in case it has tasks.

2013-07-08  Javier Miranda  <miranda@adacore.com>

	* sem_ch8.ad[sb] (Save_Scope_Stack): Modified to return the list
	of entities which have been temporarily removed from immediate
	visibility.
	(Restore_Scope_Stack): Modified to receive an
	additional parameter with the list of entities whose immediate
	visibility must be restored.
	* sem.adb (Do_Analyze): Use new version of
	Save_Scope_Stack/Restore_Scope_Stack
	* sem_ch12.adb (Inline_Instance_Body): Use new version of
	Save_Scope_Stack and Restore_Scope_Stack

2013-07-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Remove
	variable Unit_Prag. Remove the check on duplicate mode for the
	configuration form of the pragma.
	(Redefinition_Error): Removed.

2013-07-08  Robert Dewar  <dewar@adacore.com>

	* lib.ads, gnat_rm.texi, einfo.ads, sem_ch13.adb: Minor reformatting
	and editing.

2013-07-08  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_PPC_In_Decl_Part): In ASIS mode,
	pre-analyze only the original expression attached to the source
	aspect, not the relocated expression of the pragma, to prevent
	malformed trees in ASIS mode.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Revert previous
	patch: the expression in the aspect for pre/post must be relocated
	to the pragma for proper analysis.

2013-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Add an entry for SPARK_Mode in table Canonical_Aspect.
	* aspects.ads: Add an entry for SPARK_Mode in tables Aspect_Id,
	Aspect_Argument, Aspect_Names.
	* atree.adb (Node32): New routine.
	(Set_Node32): New routine.
	* atree.ads (Node32): New routine.
	(Set_Node32): New routine.
	* einfo.adb: Node32 is now used as SPARK_Mode_Pragmas.
	(Set_SPARK_Mode_Pragmas): New routine.
	(SPARK_Mode_Pragmas): New routine.
	(Write_Field32_Name): Add and entry for SPARK_Modes.
	* einfo.ads: Add attribute SPARK_Mode_Pragmas along with usage
	in various entities.
	(Set_SPARK_Mode_Pragmas): New routine and
	pragma Inline.
	(SPARK_Mode_Pragmas): New routine and pragma Inline.
	* gnat_rm.texi: Add sections explaining the syntax and semantics
	of aspect/pragma SPARK_Mode.
	* gnat_ugn.texi: Add pragma SPARK_Mode to the list of
	configuration pragmas.
	* lib.adb (Set_SPARK_Mode_Pragma): New routine.
	(SPARK_Mode_Pragma): New routine.
	* lib.ads: Alphabetize the comments on fields of record
	Unit_Record. Add new field SPARK_Mode_Pragma along with
	comment on its usage. Update the layout of record Unit_Record.
	(Set_SPARK_Mode_Pragma): New routine and pragma Inline.
	(SPARK_Mode_Pragma): New routine and pragma Inline.
	* lib-load.adb (Create_Dummy_Package_Unit): Initialize
	field SPARK_Mode_Pragma.
	(Load_Main_Source): Initialize field SPARK_Mode_Pragma.
	(Load_Unit): Initialize field SPARK_Mode_Pragma.
	* lib-writ.adb (Add_Preprocessing_Dependency): Initialize field
	SPARK_Mode_Pragma.
	(Ensure_System_Dependency): Initialize field SPARK_Mode_Pragma.
	* opt.ads: Alphabetize verification flags. Store the
	compilation-wide SPARK mode in variable Global_SPARK_Mode.
	* par-prag.adb: Pragma SPARK_Mode does not need special processing
	by the parser.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Convert aspect
	SPARK_Mode into a pragma.
	(Check_Aspect_At_Freeze_Point): Aspect SPARK_Mode does not need
	delayed processing.
	* sem_prag.adb: Add an entry for SPARK_Mode in table Sig_Flags.
	(Analyze_Pragma): Add processing for pragma SPARK_Mode.
	(Get_SPARK_Mode_Id): New routine.
	(Is_Elaboration_SPARK_Mode): New routine.
	(Is_Private_SPARK_Mode): New routine.
	* sem_prag.ads (Get_SPARK_Mode_Id): New routine.
	(Is_Elaboration_SPARK_Mode): New routine.
	(Is_Private_SPARK_Mode): New routine.
	* sinfo.ads: Update the comment on the usage of field Next_Pragma.
	* snames.ads-tmpl: Add new predefined name for SPARK_Mode and
	Auto. Add new pragma Id for SPARK_Mode.
	* types.ads: Add new type SPARK_Mode_Id.

2013-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For
	pre/postconditions copy the expression to the generated pragma,
	to avoid sharing between the original aspect and the pragma node,
	because in ASIS_Mode both will be independently analyzed.

2013-07-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Variant_Record_Equality): Add pairs of
	formals for each discriminant of an unchecked union.
	(Make_Eq_Case): Suprogram accepts a list of discriminants. Nested
	variants are supported. New helper function Corresponding_Formal.
	* exp_ch4.adb (Build_Equality_Call): For unchecked unions,
	loop through discriminants to create list of inferred values,
	and modify call to equality routine accordingly.

2013-07-05  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads, a-cfhama.ads, a-cfhase.ads, a-cforma.ads,
	a-cforse.ads, a-cofove.ads: Add preconditions when needed +
	container types are not tagged any more.

2013-07-05  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Freeze_Entity): For an object with captured
	initialization statements, do not remove Init_Stmts from the
	enclosing list, as Freeze_All might rely on it to know where to
	stop freezing.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb, a-cfdlli.ads, a-ngelfu.ads, s-bignum.adb: Minor
	reformatting.

2013-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_Composite_Equality): Use the full view
	when the base type is private.

2013-07-05  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads: Add preconditions when needed.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb: Minor reformatting.

2013-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Subprogram_Declaration): Use
	Generate_Reference_To_Formals.
	* lib-xref.adb (Generate_Reference_To_Formals): In the case of
	access to subprograms, the formals are found in the designated
	subprogram type.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document that comments can be lined up with
	previous non-blank line.
	* styleg.adb (Check_Comment): Allow indentation to match previous
	non-blank line (Same_Column_As_Previous_Line): New function

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Update doc on missing pragmas.
	* sem_ch12.adb: Minor comment additions.

2013-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Ensure that
	Contract_Cases, Depends and Global are analyzed when they apply
	to a subprogram compilation unit. The pragmas are all added
	unconditionally to the construct's contract. This ensures that
	proof tools can locate the pragmas.

2013-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Freeze_Actual_Profile): An instance within
	a generic unit does not freeze a generic private type of the
	enclosing generic. This rule must also apply to a type derived
	from a generic private type.

2013-07-05  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi: Add missing documentation for pragmas.

2013-07-05  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb: Minor comment.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document that -gnatR and -gnatD cannot be used
	together.
	* switch-c.adb: Do not allow -gnatD and -gnatR to both be
	specified.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add missing documentation for pragmas.
	* sem_ch8.adb: Minor reformatting.
	* gnat_ugn.texi: Document that -gnatR and -gnatD cannot be used
	together.

2013-07-05  Yannick Moy  <moy@adacore.com>

	* sem_ch12.ads, sem_ch12.adb (Need_Subprogram_Instance_Body): Force
	instance of subprogram body in SPARK mode, by testing Expander_Active
	(set in SPARK mode) instead of Full_Expander_Active (not set in
	SPARK mode).
	* sem_ch8.adb: Minor reformatting.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Remove test of obsolete flag
	Propagate_Exceptions, and associated useless code that did
	nothing.
	* gnat_rm.texi: Add documentation for obsolete pragma
	Propagate_Exceptions.
	* opt.ads (Propagate_Exceptions): Obsolete flag removed.
	* sem_prag.adb (Analyze_Pragma, case Propagate_Exceptions):
	Remove useless and obsolete setting of Propagate_Exceptions flag.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, sem_prag.adb: Minor comment/text fixes.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add missing doc for various pragmas.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, sem_ch12.adb, par-ch5.adb: Minor reformatting.
	* gnat_rm.texi: Document pragma Profile_Warnings.
	* restrict.ads, sem_prag.adb: Minor reformatting.

2013-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Formal_Package_Instance): Handle properly
	a formal subprogram that was defaulted in the formal package.

2013-07-05  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statements): Ignore
	N_Implicit_Label_Declaration nodes.

2013-07-05  Robert Dewar  <dewar@adacore.com>

	* a-cfhase.adb, sem_prag.adb, a-cfhama.adb: Minor reformatting.

2013-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Copy_Generic_Node): Check that name in function
	call is a valid entity name before preserving entity in generic
	copy.

2013-07-05  Thomas Quinot  <quinot@adacore.com>

	* par-ch5.adb: Minor reformatting.

2013-07-05  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads: Minor clarification to documentation for
	N_Implicit_Label_Declaration.

2013-07-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-except-2005.adb, a-except.adb: Add constant Rmsg_17. Correct the
	values of all remaining constants.
	(Rcheck_35): New routine along with pragmas Export and No_Return.
	(Rcheck_PE_Aliased_Parameters): New routine along with pragmas
	Export and No_Return.
	(Rcheck_PE_All_Guards_Closed,
	Rcheck_PE_Bad_Predicated_Generic_Type,
	Rcheck_PE_Current_Task_In_Entry_Body,
	Rcheck_PE_Duplicated_Entry_Address, Rcheck_PE_Explicit_Raise,
	Rcheck_PE_Implicit_Return, Rcheck_PE_Misaligned_Address_Value,
	Rcheck_PE_Missing_Return, Rcheck_PE_Overlaid_Controlled_Object,
	Rcheck_PE_Potentially_Blocking_Operation
	Rcheck_PE_Stubbed_Subprogram_Called,
	Rcheck_PE_Unchecked_Union_Restriction,
	Rcheck_PE_Non_Transportable_Actual, Rcheck_SE_Empty_Storage_Pool,
	Rcheck_SE_Explicit_Raise, Rcheck_SE_Infinite_Recursion,
	Rcheck_SE_Object_Too_Large, Rcheck_PE_Finalize_Raised_Exception):
	Update the use of Rmsg_XX.
	(Rcheck_17, Rcheck_18, Rcheck_19,
	Rcheck_20, Rcheck_21, Rcheck_22, Rcheck_23, Rcheck_24, Rcheck_25,
	Rcheck_26, Rcheck_27, Rcheck_28, Rcheck_29, Rcheck_30, Rcheck_31,
	Rcheck_32, Rcheck_33, Rcheck_34, Rcheck_35): Update corresponding
	renamed subprograms.
	* checks.adb: Add with and use clause for Stringt.
	(Apply_Parameter_Aliasing_Checks): Make constant Loc visible in
	all subprograms of Apply_Parameter_Aliasing_Checks. Remove local
	variable Cond. Initialize Check at the start of the routine. Use
	routine Overlap_Check to construct a simple or a detailed run-time
	check. Update the creation of the simple check.
	(Overlap_Check): New routine.
	* exp_ch11.adb (Get_RT_Exception_Name): Add a value for
	PE_Aliased_Parameters.
	* types.ads: Add new enumeration literal
	PE_Aliased_Parameters. Update the corresponding integer values
	of all RT_Exception_Code literals.
	* types.h: Add new constant PE_Aliased_Parameters. Correct the
	values of all remaining constants.

2013-07-05  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor renaming of SPARK into SPARK 2005 in
	documentation.

2013-07-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_PPC_In_Decl_Part): For a class-wide
	condition, when replacing the name of a formal by a conversion
	to the class-wide type, exempt selector names that appear in
	parameter associations.

2013-06-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): Delete.
	* gcc-interface/gigi.h (annotate_object): Adjust prototype.
	(convert_vms_descriptor): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_param): Do not pass fat pointer
	types by double dereference.
	(annotate_object): Remove BY_DOUBLE_REF parameter and adjust.
	(gnat_to_gnu_entity): Adjust calls to annotate_object.
	* gcc-interface/trans.c (Identifier_to_gnu): Do not deal with double
	dereference.
	(Call_to_gnu): Likewise.
	(build_function_stub): Adjust call to convert_vms_descriptor.
	(Subprogram_Body_to_gnu): Adjust call to annotate_object.
	* gcc-interface/utils.c (convert_vms_descriptor): Remove BY_REF
	parameter and adjust.

2013-05-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (arm% androideabi): Robustify.

2013-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c: (gnat_to_gnu_entity): In ASIS mode, do not
	check that access types have a set size.

2013-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (vinfo_t): New type and associated vector.
	(components_to_record): Change return type to bool.
	Lay out the variants in two passes.  Do not force a specific layout for
	the variant part if the variants do not have a representation clause.
	Take the alignment of the variant part into account when laying out
	variants without rep clause in a record type with a partial rep clause.
	(create_rep_part): Do not set the position of the field.

2013-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Last_Bit>: Add kludge
	to avoid generating an overflow for -1.

2013-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (create_type_decl): Adjust prototype.
	(create_label_decl): Complete prototype.
	(process_attributes): Declare.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust multiple calls to
	create_type_decl throughout.
	<E_Enumeration_Type>: Do the layout of the type manually and call
	process_attributes on it.  Reindent.
	<E_Enumeration_Subtype>: Minor tweak.
	<E_Floating_Point_Subtype>: Reindent.
	<E_Array_Subtype>: Call process_attributes on the array type built
	for a packed array type.
	<E_Record_Type>: Call process_attributes on the type.
	<E_Record_Subtype>: Likewise.
	<E_Access_Type>: Likewise.
	<E_Subprogram_Type>: Likewise.
	Likewise for all types at the end of the processing.
	* gcc-interface/utils.c (make_aligning_type): Adjust call to
	create_type_decl.
	(maybe_pad_type): Likewise.
	(create_index_type): Likewise.
	(create_type_decl): Remove attr_list parameter and associated code.
	(create_var_decl_1): Call process_attributes on the variable.
	(process_attributes): Take a pointer to the object and add in_place
	and gnat_node parameters and adjust throughout.
	<ATTR_MACHINE_ATTRIBUTE>: Pass ATTR_FLAG_TYPE_IN_PLACE only on demand
	and set the input location.
	Zap the attribute list at the end.
	(create_subprog_decl): Call process_attributes on the subprogram.
	(build_unc_object_type): Adjust call to create_type_decl.
	(handle_vector_type_attribute): Remove dead code.

2013-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (make_aligning_type): Adjust prototype.
	* gcc-interface/utils.c (make_aligning_type): Take GNAT_NODE parameter
	for the position of the associated TYPE_DECL.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust call to above.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.

2013-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not prematurely
	elaborate the full view of a type with a freeze node.
	* gcc-interface/trans.c (process_type): Add explicit predicate.

2013-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Always build the
	UNC variable for aliased objects with unconstrained nominal subtype.

2013-05-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (gnat_init_gcc_fp): Declare.
	* gcc-interface/trans.c (gigi): Call it.
	* gcc-interface/misc.c (gnat_init_gcc_fp): New function.

2013-05-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (enum inline_status_t): New type.
	(create_subprog_decl): Adjust prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Adjust
	calls to create_subprog_decl.
	(get_minimal_subprog_decl): Likewise.
	* gcc-interface/trans.c (gigi): Likewise.
	(build_raise_check): Likewise.
	(establish_gnat_vms_condition_handler): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils.c (create_subprog_decl): Change inline_flag
	parameter to inline_status and implement for suppressed inlining.

2013-05-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (LOOP_STMT_NO_UNROLL): New define.
	(LOOP_STMT_UNROLL): Likewise.
	(LOOP_STMT_NO_VECTOR): Likewise.
	(LOOP_STMT_VECTOR): Likewise.
	* gcc-interface/trans.c (struct loop_info_d): Replace label field
	with stmt field.
	(Pragma_to_gnu) <Pragma_Loop_Optimize>: New case.
	(Loop_Statement_to_gnu): Save the loop statement onto the stack
	instead of the label.
	(gnat_to_gnu) <N_Exit_Statement>: Retrieve the loop label.

2013-05-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c: Include diagnostic.h and opts.h.
	(Pragma_to_gnu) <Pragma_Warnings>: New case.

2013-05-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Constify
	a handful of local variables.
	For a derived untagged type that renames discriminants, change the type
	of the stored discriminants to a subtype with the bounds of the type
	of the visible discriminants.
	(build_subst_list): Rename local variable.

2013-05-16  Jason Merrill  <jason@redhat.com>

	* gcc-interface/Make-lang.in (gnat1$(exeext)): Use link mutex.

2013-05-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR ada/57188
	* gcc-interface/Makefile.in: Allow for amd64 solaris2.

2013-05-07  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/56474
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Use
	int_const_binop to shift bounds by 1 when they are integer constants.

2013-04-25  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Exclude s-init.ad{s,b}

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Predicate_Check): Update the comment associated
	with the call to Check_Expression_Against_Static_Predicate.
	* sem_ch3.adb (Analyze_Object_Declaration): Update the comment
	associated with the call to Check_Expression_Against_Static_Predicate.
	* sem_util.adb (Check_Expression_Against_Static_Predicate):
	Broaden the check from a static expression to an expression with
	a known value at compile time.
	* sem_util.ads (Check_Expression_Against_Static_Predicate): Update
	comment on usage.

2013-04-25  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, cases Position,
	First_Bit, and Last_Bit): Fix incorrect test in implementation of
	RM 2005 13.5.2(3/2).

2013-04-25  Claire Dross  <dross@adacore.com>

	* a-cfhase.adb, a-cfhase.ads, a-cforma.adb, a-cforma.ads, a-cfhama.adb,
	a-cfhama.ads, a-cforse.adb, a-cforse.ads, a-cofove.adb, a-cofove.ads
	(Query_Element): Removed.
	(Update_Element): Removed.
	(Insert): The version with no New_Item specified is removed.
	(Iterate): Removed.
	(Write): Removed.
	(Read): Removed.
	Every check of fields Busy and Lock has been removed.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Contract_Cases): Remove
	call to S14_Pragma (Find_Related_Subprogram): Require proper
	placement in subprogram body (Find_Related_Subprogram): Detect
	duplicates for all cases (Find_Related_Subprogram): Handle case
	of spec nested inside body.

2013-04-25  Arnaud Charlet  <charlet@adacore.com>

	* par-prag.adb: Fix typo.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Predicate_Check): If the type has a static
	predicate and the expression is also static, check whether the
	expression satisfies the predicate.
	* sem_ch3.adb (Analyze_Object_Declaration): If the type has a
	static predicate and the expression is also static, see if the
	expression satisfies the predicate.
	* sem_util.adb: Alphabetize several routines.
	(Check_Expression_Against_Static_Predicate): New routine.
	* sem_util.ads (Check_Expression_Against_Static_Predicate): New routine.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document Reason argument for pragma Warnings.
	* par-prag.adb: Handle Reason parameter for pragma Warnings.
	* sem_prag.adb (Analyze_Pragma, case Warnings): Allow Reason argument.
	* snames.ads-tmpl (Name_Reason): New name entry.

2013-04-25  Yannick Moy  <moy@adacore.com>

	* exp_spark.adb (Expand_SPARK_N_In): Remove procedure.
	(Expand_SPARK): Remove special expansion for membership tests.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Update all places
	that should use constant Base_Typ. When building an invariant
	check, account for invariants coming from the base type. Prevent
	the creation of a junk invariant check when the related object
	is of an array type and it is initialized with an aggregate.
	* exp_util.adb (Make_Invariant_Call): Typ is now a variable. Use
	the base type to create an invariant call when the type of the
	expression is a composite subtype.

2013-04-25  Vasiliy Fofanov  <fofanov@adacore.com>

	* a-cborse.adb: Fix minor typo.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Different_Generic_Profile): A spec and body
	match in an instance if a subtype declaration that renames a
	generic actual with the same name appears between spec and body.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor reformatting.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Expand_N_Aggregate): Use special circuitry to
	fold strings with a single others choice only if there are no
	expressions in the aggregate.

2013-04-25  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Update doc on Ada 2012 default mode.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Add with and use clause for Stringt.
	(Expand_Contract_Cases): Moved from sem_ch6. Add formal parameters
	Decls and Stmts along with comments on their usage.
	* exp_ch6.ads (Expand_Contract_Cases): Moved from sem_ch6.
	* sem_ch6.adb (Expand_Contract_Cases): Moved to exp_ch6.
	(Process_Contract_Cases): Update the call to Expand_Contract_Cases.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* gnat_rm.texi: Minor editing, to clarify use of dimension aspects.
	* sem_util.adb (Is_OK_Variable_For_Out_Formal): Reject an
	aggregate for a packed type, which may be converted into an
	unchecked conversion of an object.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor code reorganization (correct misspelling
	Restiction).
	* sem_util.adb, aspects.ads, sem_ch6.adb: Minor reformatting.
	* gnat_rm.texi: Document impl-defined aspects.
	* sem_dim.adb, sem_dim.ads, gnat_ugn.texi, s-dimmks.ads: Minor
	reformatting.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Set_Abstract_States): The attribute now applies
	to generic packages.
	* sem_ch4.adb (Referenced): Moved to sem_util.
	* sem_ch7.adb (Unit_Requires_Body): A [generic] package with
	a non-null abstract state needs a body.
	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Update the calls
	to Collect_Subprogram_Inputs_Outputs.
	(Analyze_Global_Item): Verify the proper usage of an item with mode
	In_Out or Output relative to the enclosing context.
	(Analyze_Pragma): Abstract_State can now be applied to a generic
	package. Do not reset the Analyzed flag for pragmas Depends and Global
	as this is not needed.
	(Appears_In): Moved to library level.
	(Check_Mode_Restiction_In_Enclosing_Context): New routine.
	(Collect_Subprogram_Inputs_Outputs): Moved to library level. Add
	formal parameters Subp_Id, Subp_Inputs, Subp_Outputs and Global
	seen along with comments on usage.
	* sem_util.ads, sem_util.adb (Referenced): New routine.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Expand_Contract_Cases): Generate
	detailed error messages only when switch -gnateE is in effect.

2013-04-25  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Do not issue
	an error for a possibly misplaced 'Result or 'Old attribute when
	analyzing the aspect.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb, sem_util.adb, sem_ch4.adb: Minor reformatting.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Analyze_Quantified_Expression):
	Add local variable Loop_Id. Verify that the loop variable
	is used within the condition of the quantified expression.
	(Referenced): New routine.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_case.adb (Analyze_Choices): Enhance the error message
	given on a bad use of subtype predicate.
	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Enhance
	the error message given on a bad use of subtype predicate.
	* sem_util.adb (Bad_Predicated_Subtype_Use): Add formal parameter
	Suggest_Static. Emit an extra error message advising how to
	remedy the bad use of the predicate if the context warrants it.
	* sem_util.ads (Bad_Predicated_Subtype_Use): Add formal parameter
	Suggest_Static along with a comment explaining its usage.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): Further refinement
	to checks for AI05-0125: the check for a hidden primitive that
	may be overridden by the new declaration only applies if the
	hidden operation is never declared. This is not the case if the
	operation is declared in a parent unit.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Remove d.X and d.Y entries and documentation.
	* exp_ch4.adb (Expand_N_If_Expression): Remove special code used
	if expression with actions not available (now always available).
	(Expand_Short_Circuit_Operator): Same change.
	* gnat1drv.adb (Adjust_Global_Switches) Remove setting
	Use_Expression_With_Actions flag, since this is now obsolete.
	* opt.ads (Use_Expression_Actions): Removed (always True now).
	* sinfo.ads: Minor comment updates.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Generic_Actuals): If an actual is an array
	subtype whose base type is currently private, install full view
	when compiling instance body.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): Refine checks for
	AI05-0125: the check for a hidden primitive that may be overridden
	by the new declaration is only performed if the declaration comes
	from source, and it must carry an explicit overriding indicator.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Abstract_States): The attribute now applies to
	generic packages.
	* sem_ch3.adb (Analyze_Object_Declaration): Check whether an
	object declaration introduces an illegal hidden state.
	* sem_prag.adb (Analyze_Abstract_State): Check whether a state
	declaration introduces an illegal hidden state.
	* sem_util.ads, sem_util.adb (Check_No_Hidden_State): New routine.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function_Call): The call may
	be to a protected function, in which case the name in the call
	is a selected component.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Analyze_Quantified_Expression):
	Warn on a suspicious use of quantifier "some" when "all" was meant.
	(No_Else_Or_Trivial_True): New routine.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb: Put back with/use for Namet.
	(Get_Pragma): New name (wi new spec) for Find_Pragma.
	* sem_ch6.adb: Change name Find_Pragma to Get_Pragma with
	different interface.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Is_Visible_Component): In an instance all
	components are visible.

2013-04-25  Matthew Heaney  <heaney@adacore.com>

	* a-rbtgbo.adb, a-crbtgo.adb (Generic_Equal): do not test for
	tampering when container empty.
	* a-crbtgk.adb (Ceiling, Find, Floor): ditto.
	(Generic_Conditional_Insert, Generic_Conditional_Insert_With_Hint):
	ditto.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* par-ch12.adb: Move aspects from package specification to
	generic package declaration.
	* sem_ch12.adb: Analyze aspect specifications before building
	and analyzing the generic copy, so that the generated pragmas
	are properly taken into account.
	* sem_ch13.adb: For compilation unit aspects that apply to a
	generic package declaration, insert corresponding pragmas ahead
	of visible declarations.
	* sprint.adb: Display properly the aspects of a generic type
	declaration.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* frontend.adb: Minor reformatting.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads: Extend documentation on use of Is_Private_Ancestor
	for untagged types.
	* sem_ch3.adb (Is_Visible_Component): Refine predicate for the
	case of untagged types derived from private types, to reject
	illegal selected components.

2013-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Test
	for case of selecting from an unexpanded implicit dereference
	and do not make a recursive call on such a prefix.

2013-04-25  Doug Rupp  <rupp@adacore.com>

	* targparm.adb (VXF{_Str}): New tag for vaxfloat.
	(Get_Target_Parameters): Handle VXF tag.
	* targparm.ads (VAX_Float_On_Target): New boolean.
	* system-vms-ia64.ads (VAX_Float): New boolean.
	* frontend.adb (Frontend): Handle VAX float boolean.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads, einfo.adb: Remove with and use clauses for Namet.
	(Find_Pragma): New routine.
	* sem_util.ads, sem_util.adb (Find_Pragma): Moved to einfo.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Add_Call): Do not capture the nature of the inherited
	predicate.
	(Add_Predicates): Save the static predicate for diagnostics and error
	reporting purposes.
	(Process_PPCs): Remove local variables Dynamic_Predicate_Present and
	Static_Predicate_Present. Add local variable Static_Pred. Ensure that
	the expression of a static predicate is static.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Is_Ghost_Subprogram): Remove useless code.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor addition of index entry.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Check_Access_Invariants): Test whether an
	invariant procedure is empty before generating a call to it.
	(Has_Enabled_Predicate): New routine.
	(Has_Null_Body): New routine.
	(Process_PPCs): Test whether an invariant procedure is
	empty before generating a call to it. Test whether predicates are
	enabled for a particular type before generating a predicate call.
	* sem_util.ads, sem_util.adb (Find_Pragma): New routine.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* sem_ch7.adb, einfo.adb, repinfo.adb, snames.adb-tmpl,
	snames.ads-tmpl: Minor reformatting.

2013-04-25  Thomas Quinot  <quinot@adacore.com>

	* sem_ch7.adb: Minor reformatting.

2013-04-25  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor fix to Loop_Variant doc (Loop_Entry allowed).
	* s-tarest.adb: Minor reformatting.

2013-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.ads, aspects.adb: Remove aspect Ghost from all relevant
	tables.
	* einfo.adb: Remove with and use clause for Aspects.
	(Is_Ghost_Function): Removed.
	(Is_Ghost_Entity): New routine.
	(Is_Ghost_Subprogram): New routine.
	* einfo.ads: Remove synthesized attribute Is_Ghost_Function
	along with its uses in entities.  Add synthesized attributes
	Is_Ghost_Entity and Is_Ghost_Subprogram along with uses in related
	entities.
	(Is_Ghost_Function): Removed.
	(Is_Ghost_Entity): New routine.
	(Is_Ghost_Subprogram): New routine.
	* par-prag.adb: Remove pragma Ghost from the processing machinery.
	* repinfo.adb (List_Mechanisms): Add a value for convention Ghost.
	* sem_attr.adb (Analyze_Access_Attribute): Update the check
	for ghost subprograms.
	* sem_ch4.adb (Analyze_Call): Update the check for calls
	to ghost subprograms.
	(Check_Ghost_Function_Call): Removed.
	(Check_Ghost_Subprogram_Call): New routine.
	* sem_ch6.adb (Check_Convention): Rewritten.
	(Check_Overriding_Indicator): Remove the check for overriding
	ghost functions.
	(Convention_Of): New routine.
	* sem_ch12.adb (Preanalyze_Actuals): Update the check for ghost
	generic actual subprograms.
	* sem_mech.adb (Set_Mechanisms): Add an entry for convention Ghost.
	* sem_prag.adb: Remove the value for pragma Ghost from
	table Sig_Flags.
	(Analyze_Pragma): Remove the processing for pragma Ghost.
	(Process_Convention): Emit an error when a ghost
	subprogram attempts to override.
	(Set_Convention_From_Pragma): Emit an error when a ghost subprogram
	attempts to override.
	* sinfo.ads: Clarify the usage of field Label_Construct.
	* snames.adb-tmpl (Get_Convention_Id): Add an entry for
	predefined name Ghost.
	(Get_Convention_Name): Add an entry for convention Ghost.
	* snames.ads-tmpl: Move predefined name Ghost to the sublist
	denoting conventions. Add convention id Ghost. Remove pragma
	id Ghost.

2013-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Swap_Private_Dependents): Do no recurse on child
	units if within a generic hierarchy.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Expand_Actuals): Add a predicate check on an
	actual the related type has a predicate function.
	* sem_ch3.adb (Constant_Redeclaration): Ensure that the related
	type has an invariant procedure before building a call to it.
	* sem_ch6.adb (Append_Enabled_Item): New routine.
	(Check_Access_Invariants): Use routine
	Append_Enabled_Item to chain onto the list of postconditions.
	(Contains_Enabled_Pragmas): Removed.
	(Expand_Contract_Cases): Use routine Append_Enabled_Item to chain onto
	the list of postconditions.
	(Invariants_Or_Predicates_Present): Removed.
	(Process_PPCs): Partially reimplemented.

2013-04-24  Sergey Rybin  <rybin@adacore.com frybin>

	* tree_io.ads: Update ASIS_Version_Number because of changes
	in the way how entities are chained in a scope by means of
	Next_Entity link.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case
	Storage_Size): If the clause is not from an aspect, insert
	assignment to size variable of task type at the point of the
	clause, not after the task definition, to prevent access before
	elaboration in the back-end.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Sig_Flags): Set correct value for Pragma_Assume.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Document 'Loop_Entry.

2013-04-24  Jose Ruiz  <ruiz@adacore.com>

	* s-tassta.adb, s-tarest.adb (Task_Wrapper): Start looking for
	fall-back termination handlers from the parents, because they apply
	only to dependent tasks.
	* s-solita.adb (Task_Termination_Handler_T): Do not look for fall-back
	termination handlers because the environment task has no parent,
	and if it defines one of these handlers it does not apply to
	itself because they apply only to dependent tasks.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* sem_type.adb, exp_attr.adb, exp_ch4.adb: Minor reformatting.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document 'Update attribute.
	* sem_attr.adb (Analyze_Attribute, case Update): Remove call
	to S14_Attribute (S14_Attribute): removed.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* interfac.ads: Add size clauses for IEEE_Float_32/64

2013-04-24  Claire Dross  <dross@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Remove
	special assignment of Use_Expression_With_Actions for SPARK_Mode.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Predicate_Check): Check for the presence
	of the dynamic predicate aspect when trying to determine if the
	predicate of a type is non-static.
	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Check
	for the presence of the dynamic predicate aspect when trying to
	determine if the predicate of a type is non- static.
	* sem_ch13.adb (Add_Call): Capture the nature of the
	inherited ancestor predicate.
	(Build_Predicate_Functions): Update comments. Rewrite the checks on
	static predicate application. Complain about the form of a non-static
	expression only when the type is static.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb: Add guard to tree traversal.

2013-04-24  Vincent Celier  <celier@adacore.com>

	* clean.adb (Clean): Remove local variable Root_Environment,
	use Makeutl.Root_Environment instead.
	* gnatcmd.adb: Remove local variable Root_Environment, use
	Makeutl.Root_Environment instead.
	* make.adb (Gnatmake): Remove local variable Root_Environment,
	use Makeutl.Root_Environment instead.
	* prj-makr.adb: Remove local variable Root_Environment, use
	Makeutl.Root_Environment instead.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute): Clarify the
	extraction of the declarative part of the conditional block. Move
	the processing of simple infinite loops to the start of the
	expansion logic. Correct the check which determines whether the
	proper scope is installed in visibility.
	* sem_attr.adb (Analyze_Attribute): Add local variable Attr
	to keep track of the attribute in case the enclosing indexed
	component has to be rewritten. When searching for the enclosing
	loop, start from the proper attribute reference in case of a
	rewriting. Do not allow for 'Loop_Entry to appear in pragma
	Assert. Replace loop variable J with Index. Set the type of the
	proper attribute.
	* sem_ch5.adb (Check_Unreachable_Code): Detect a specialized
	block that services a loop statement subject to at least one
	'Loop_Entry attribute.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Disambiguate): In Ada 2012 mode, when trying to
	resolve a fixed point operation, use first subtype to determine
	whether type and operator are declared in the same list of
	declarations.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch6.adb (P_Subprogram): Detect an illegal
	placement of the aspect specification list in the context of
	expression functions.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator):  If the designated object
	has tasks, and the pointer type is an itype that has no master
	id, create a master renaming in the current context, which can
	only be an init_proc.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_ch7.adb: Minor reformatting.
	* gnat_rm.texi: Document pragma Loop_Invariant.
	* sem_attr.adb (Analyze_Attribute, case Loop_Entry): This is
	no longer an S14_Attribute.
	* sem_prag.adb (Analyze_Pragma, case Loop_Invariant): Combine
	processing with Assert, allow message parameter, remove call
	to S14_Pragma.

2013-04-24  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Swap_Private_Dependents): New internal routine
	to Install_Private_Declarations, to make the installation of
	private dependents recursive in the presence of child units.
	* sem_ch3.adb (Build_Discriminated_Subtype): Initialize properly
	the Private_Dependents of a private subtype.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute): Update the
	retrieval of the block declarations.
	* par-ch4.adb (P_Name): Let the name parsing machinery create
	a sequence of nested indexed components for attribute Loop_Entry.
	* sem_attr.adb (Analyze_Attribute): Add local constant
	Context. Reimplement part of the analysis of attribute Loop_Entry.
	(Convert_To_Indexed_Component): Removed.
	* sem_ch4.adb (Analyze_Indexed_Component_Form): Do not analyze
	an indexed component after it has been rewritten into attribute
	Loop_Entry.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* snames.ads-tmpl: Minor change to list
	Loop_(In)variant not in configuration pragma.
	* sem_ch3.adb (Analyze_Declarations): Do not look at the original node
	for analyzing the expressions in pre/postconditions.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb, xref_lib.adb, gnatls.adb, sem_ch13.adb: Minor
	reformatting.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Analyze_Generic_Subprogram_Body,
	Analyze_Subprogram_Body_Helper): Reset contract node to Empty
	before setting entity to E_Subprogram_Body.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Reset contract node to
	Empty before setting entity to E_Subprogram_Body.

2013-04-24  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Document new gnatls switch -aPdir.
	* gnatcmd.adb: Pass switch -aP<dir> to gnatls.
	* gnatls.adb (Scan_Ls_Arg): Process new switch -aP<dir>. Issue
	a warning for unknown switches.
	(Usage): Add line for new switch -aPdir.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb, sem_util.ads (Is_Limited_Class_Wide_Type): Return true
	if the type comes from a limited view, so that task attributes can be
	constructed.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Float_Conversion_Check): Do not apply checks if
	full expansion is not enabled.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Create_Extra_Formals): In Ada 2012, create extra
	formals if the type does not yet have a completion, and thus
	has no underlying view.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Treat an aspect
	specification for Address as a reference, to suppress warnings
	on entities that may be read by an external device.

2013-04-24  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: Add description of '--help' and '--version'
	options for ASIS tools: gnatelim, gnatmetric, gnatstub, gnatpp.

2013-04-24  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi: Minor syntax fix.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute): Add extra comments on
	what and why is being analyzed. Remove the decoration of renamings as
	this simply falls out of the general analysis mechanism.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Explain_Redundancy): New routine.
	(Resolve_Equality_Op): Place the error concerning a redundant
	comparison to True at the "=". Try to explain the nature of the
	redundant True.

2013-04-24  Javier Miranda  <miranda@adacore.com>


	* checks.adb, exp_ch6.adb (Install_Null_Excluding_Check): No
	check in interface thunks since it is performed at the caller
	side.
	(Expand_Simple_Function_Return): No accessibility check
	needed in thunks since the check is done by the target routine.

2013-04-24  Vincent Celier  <celier@adacore.com>

	* xref_lib.adb (Add_Entity): Use the canonical file names
	so that source file names with capital letters are found on
	platforms where file names are case insensitive.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch4.adb (P_Name): Continue to parse the name extension when the
	construct is attribute Loop_Entry. Do not convert the attribute
	reference into an indexed component when there is at least one
	expression / range following 'Loop_Entry.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Contains_Enabled_Pragmas): New routine.
	(Process_PPCs): Generate procedure _Postconditions
	only when the context has invariants or predicates or enabled
	aspects/pragmas.

2013-04-24  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Host_Entry): Introduce intermediate copy of
	memory location pointed to by Hostent_H_Addr, as it might not
	have sufficient alignment.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* repinfo.adb (List_Rep_Info): Set the value of Unit_Casing before
	calling subprograms which may read it.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Remove Loop_Entry_Attributes from the usage of
	nodes. Flag 260 is now used.
	(Has_Loop_Entry_Attributes): New routine.
	(Loop_Entry_Attributes): Removed.
	(Set_Has_Loop_Entry_Attributes): New routine.
	(Set_Loop_Entry_Attributes): Removed.
	(Write_Entity_Flags): Write out Flag 260.
	(Write_Field10_Name): Remove the output for Loop_Entry_Attributes.
	* einfo.ads: Remove attribute Loop_Entry_Attributes,
	its related comment and uses in nodes.	Add new attribute
	Has_Loop_Entry_Attributes, related comment and uses in loop nodes.
	(Has_Loop_Entry_Attributes): New routine and pragma Inline.
	(Loop_Entry_Attributes): Removed along with pragma Inline.
	(Set_Has_Loop_Entry_Attributes): New routine and pragma Inline.
	(Set_Loop_Entry_Attributes): Removed along with pragma Inline.
	* exp_attr.adb (Expand_Loop_Entry_Attribute): New routine.
	(Expand_N_Attribute_Reference): Expand attribute 'Loop_Entry.
	* exp_ch5.adb: Remove with and use clause for Elists.
	(Expand_Loop_Entry_Attributes): Removed.
	(Expand_N_Loop_Statement): Add local variable Stmt. Rename local
	constant Isc to Scheme. When a loop is subject to attribute
	'Loop_Entry, retrieve the nested loop from the conditional
	block. Move the processing of controlled object at the end of
	loop expansion.
	* sem_attr.adb (Analyze_Attribute): Do not chain attribute
	'Loop_Entry to its related loop.
	* sem_ch5.adb (Analyze_Loop_Statement): Add local variable
	Stmt. When the iteration scheme mentions attribute 'Loop_Entry,
	the entire loop is rewritten into a block.  Retrieve the nested
	loop in such cases to complete the analysis.
	* sem_util.ads, sem_util.adb (Find_Loop_In_Conditional_Block): New
	routine.
	(Subject_To_Loop_Entry_Attributes): New routine.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb (Expand_Loop_Variant): Generate pragma Check
	(Loop_Variant, xxx) rather than Assert (xxx).
	* gnat_rm.texi: Document pragma Loop_Variant.
	* sem_prag.adb (Analyze_Pragma, case Loop_Variant): Remove call
	to S14_Pragma.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* adabkend.adb, ali-util.adb, ali.adb, debug.adb,
	errout.adb, errout.ads, erroutc.adb, exp_ch3.adb, exp_ch4.adb,
	exp_ch6.adb, exp_ch7.adb, exp_dbug.adb, exp_util.adb,
	expander.adb, freeze.adb, gnat1drv.adb, lib-writ.adb,
	lib-writ.ads, lib-xref.adb, lib-xref.ads, opt.adb, opt.ads,
	restrict.adb, sem_aggr.adb, sem_attr.adb, sem_ch3.adb,
	sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_eval.adb, sem_prag.adb,
	sem_res.adb, sem_util.adb: Everything with name
	'Alfa' renamed in 'SPARK'. Update comments.
	Renaming of units with name 'Alfa', renamed with 'SPARK' instead.
	* exp_alfa.adb: renamed exp_spark.adb.
	* exp_alfa.ads: renamed exp_spark.ads.
	* get_alfa.adb: renamed get_spark_xrefs.adb.
	* get_alfa.ads: renamed get_spark_xrefs.ads.
	* lib-xref-alfa.adb: renamed lib-xref-spark_specific.adb.
	* put_alfa.adb: renamed put_spark_xrefs.adb.
	* put_alfa.ads: renamed put_spark_xrefs.ads.
	* alfa.adb: renamed spark_xrefs.adb.
	* alfa.ads: renamed spark_xrefs.ads.
	* alfa_test.adb: renamed spark_xrefs_test.adb.
	* gcc-interface/Make-lang.in: Update dependencies.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document pragma Assume.
	* sem_prag.adb (Analyze_Pragma, case Assume): Now processed as
	part of Assert, and no longer requires -gnatd.F

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document pragma Assert_And_Cut.
	* sem_prag.adb (Analyze_Pragma, case Assert_And_Cut): Remove
	S14_Pragma call.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb: Add guard in Available_View.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Use
	Find_Related_Subprogram to find the associated subprogram.
	(Analyze_Global_In_Decl_List): Use Find_Related_Subprogram
	to find the associated subprogram.
	(Analyze_Pragma): Use Find_Related_Subprogram to find the associated
	subprogram.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Remove with and use clause for Sem_Prag.
	(Freeze_Subprogram): Call Analyze_Subprogram_Contract to analyze
	the contract of a subprogram.
	* sem_ch3.adb: Remove with and use clause for Sem_Prag.
	(Analyze_Declarations): Call Analyze_Subprogram_Contract to
	analyze the contract of a subprogram.
	* sem_ch6.adb (Analyze_Subprogram_Contract): New routine.
	(Check_Subprogram_Contract): Removed.
	* sem_ch6.ads (Analyze_Subprogram_Contract): New routine.
	(Check_Subprogram_Contract): Removed.
	(Expand_Contract_Cases): Add a guard against malformed contract cases.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Call
	Decorate_Delayed_Aspect_And_Pragma to decorate aspects
	Contract_Cases, Depends and Global. Reimplement the analysis of
	aspect Contract_Cases.
	(Decorate_Delayed_Aspect_And_Pragma): New routine.
	* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): New routine.
	(Analyze_CTC_In_Decl_Part): Removed.
	(Analyze_Pragma): Reimplement the analysis of pragma Contract_Cases.
	(Analyze_Test_Case_In_Decl_Part): New routine.
	(Find_Related_Subprogram): New routine.
	(Requires_Profile_Installation): Add new formal Prag. Update
	the logic to take into account the origin of the pragma.
	* sem_prag.ads (Analyze_Contract_Cases_In_Decl_Part): New routine.
	(Analyze_CTC_In_Decl_Part): Removed.
	(Analyze_Test_Case_In_Decl_Part): New routine.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Process_Convention): Move Stdcall tests to
	Set_Convention_From_Pragma so that they are applied to each
	entry of a homonym set.
	(Process_Convention): Don't try to set convention if already set.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* gnatbind.adb: Minor reformatting.

2013-04-24  Vincent Celier  <celier@adacore.com>

	* clean.adb (Gnatclean): Add the default project search
	directories in the project search path after scanning the
	switches on the command line.
	(Initialize): Do not put the default project search directories in the
	project search path.
	* gnatcmd.adb (GNATcmd): Add the default project search
	directories in the project search path after scanning the switches
	on the command line.
	* make.adb (Initialize): Add the default project search
	directories in the project search path after scanning the switches
	on the command line.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* restrict.ads (Restriction_Warnings): Initialize with all False value.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* checks.ads, checks.adb (Predicate_Checks_Suppressed): New function.
	* exp_util.ads, exp_util.adb (Make_Predicate_Check): Check setting of
	Predicate_Check.
	* snames.ads-tmpl (Name_Predicate_Check): New check name.
	* types.ads (Predicate_Check): New definition.
	* gnat_rm.texi: Add documentation for Predicate_Check.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration): If this
	is a renaming of predefined equality for an untagged record,
	add generated body to the freeze actions for the subprogram, to
	prevent freezing issues when the record has incomplete components.
	* exp_ch4.adb (Expand_Composite_Equality): If the type is a type
	without completion, return a predefined comparison instead of
	just False.  This may happen when building the expression for
	record equality, when some component has a type whose completion
	has not been seen yet. The operation will be analyzed an expanded
	after the type has been frozen, at which point all component
	types will have been completed, or an error reported.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Do not delay
	analysis of a Convention aspect.

2013-04-24  Eric Botcazou  <ebotcazou@adacore.com>

	* fe.h (Machine_Overflows_On_Target): New macro and declaration.
	(Signed_Zeros_On_Target): Likewise.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Add with and use clause for Sem_Prag.
	(Freeze_Subprogram): Analyze all delayed aspects for a null
	procedure so that they are available when analyzing the
	internally-generated _Postconditions routine.
	* exp_ch13.adb: Remove with and use clause for Sem_Prag.
	(Expand_N_Freeze_Entity): Move the code that analyzes delayed
	aspects of null procedures to exp_ch6.Freeze_Subprogram.
	* sem_prag.adb (Analyze_Abstract_State): Update the check on
	volatile requirements.

2013-04-24  Bob Duff  <duff@adacore.com>

	* ali-util.ads (Source_Record): New component Stamp_File
	to record from whence the Stamp came.
	* ali-util.adb (Set_Source_Table): Set Stamp_File component.
	* bcheck.adb (Check_Consistency): Print additional information in
	Verbose_Mode.
	* gnatbind.adb (Gnatbind): Print additional information in
	Verbose_Mode.

2013-04-24  Robert Dewar  <dewar@adacore.com>

	* exp_ch13.adb, sem_prag.adb: Update comments.
	* sem_ch3.adb, exp_ch9.adb, g-socket.adb, sem_ch13.adb: Minor
	reformatting.

2013-04-24  Doug Rupp  <rupp@adacore.com>

	* vms_data.ads (/{NO}INHIBIT-EXEC): Document new default behavior.

2013-04-24  Yannick Moy  <moy@adacore.com>

	* sinfo.ads: Minor correction of typo.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Create packed array only when expander is
	active.

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Depends_In_Decl_Part): Install the formals only
	when the context warrants it.
	(Analyze_Global_In_Decl_List): Install the formals only when
	the context warrants it.
	(Requires_Profile_Installation): New routine.

2013-04-24  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_N_Simple_Return_Statement): When the return
	type is a discriminated private type that does not require use
	of the secondary stack, a constrained subtype of the underlying
	type is created to convey the proper object size to the backend.
	If the return type is originally a private type, the return
	expression is wrapped in an unchecked_conversion. If the return
	expression is used subsequently in a call to the postcondition
	function, this conversion must be undone to prevent a spurious
	error on the analysis of that call.

2013-04-23  Kai Tietz  <ktietz@redhat.com>

	PR target/55445
	* raise-gcc.c (__SEH__): Additional check that SjLj isn't active.

2013-04-23  Eric Botcazou  <ebotcazou@adacore.com>
	    Pascal Obry    <obry@adacore.com>

	* gcc-interface/Makefile.in (targ): Fix target name check.
	(../../gnatmake$(exeext)): Add '+' for LTO.
	(../../gnatlink$(exeext)): Likewise.

2013-04-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Build_PPC_Wrapper): Correct the traversal of
	pre- and post-conditions.
	(Expand_N_Task_Type_Declaration):
	Use the correct attribute to check for pre- and post-conditions.
	* exp_ch13.adb (Expand_N_Freeze_Entity): Correct the traversal of
	pre- and post-conditions.  Analyze delayed classification items.
	* freeze.adb (Freeze_Entity): Use the correct attribute to
	check for pre- and post- conditions.
	* sem_ch3.adb (Analyze_Declarations): Correct the traversal
	of pre- and post-conditions as well as contract- and
	test-cases. Analyze delayed pragmas Depends and Global.
	* sem_ch6.adb (Check_Subprogram_Contract): Use the correct
	attribute to check for pre- and post-conditions, as well as
	contract-cases and test-cases.	(List_Inherited_Pre_Post_Aspects):
	Correct the traversal of pre- and post- conditions.
	(Process_Contract_Cases): Update the comment on usage. Correct
	the traversal of contract-cases.
	(Process_Post_Conditions): Update the comment on usage. Correct the
	traversal of pre- and post-conditions.
	(Process_PPCs): Correct the traversal of pre- and post-conditions.
	(Spec_Postconditions): Use the correct
	attribute to check for pre- and post- conditions, as well as
	contract-cases and test-cases.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Reimplement the
	actions related to aspects Depends and Global. Code refactoring
	for pre- and post-conditions.
	(Insert_Delayed_Pragma): New routine.
	* sem_prag.adb (Add_Item): New routine.
	(Analyze_Depends_In_Decl_Part): New routine.
	(Analyze_Global_In_Decl_Part): New routine.
	(Analyze_Pragma): Reimplement the actions related to aspects Depends and
	Global. Verify that a body acts as a spec for pragma Contract_Cases.
	(Chain_PPC): Use Add_Contract_Item to chain a pragma.
	(Chain_CTC): Correct the traversal of contract-
	and test-cases. Use Add_Contract_Item to chain a pragma.
	(Chain_Contract_Cases): Correct the traversal of contract-
	and test-cases. Use Add_Contract_Item to chain a pragma.
	(Check_Precondition_Postcondition): Update the comment on usage.
	(Check_Test_Case): Update the comment on usage.
	* sem_prag.ads (Analyze_Depends_In_Decl_Part): New routine.
	(Analyze_Global_In_Decl_Part): New routine.
	* sem_util.ads, sem_util.adb (Add_Contract_Item): New routine.
	* sinfo.adb (Classifications): New routine.
	(Contract_Test_Cases): New routine.
	(Pre_Post_Conditions): New routine.
	(Set_Classifications): New routine.
	(Set_Contract_Test_Cases): New routine.
	(Set_Pre_Post_Conditions): New routine.
	(Set_Spec_CTC_List): Removed.
	(Set_Spec_PPC_List): Removed.
	(Spec_CTC_List): Removed.
	(Spec_PPC_List): Removed.
	* sinfo.ads: Update the structure of N_Contruct along with all
	related comments.
	(Classifications): New routine and pragma Inline.
	(Contract_Test_Cases): New routine and pragma Inline.
	(Pre_Post_Conditions): New routine and pragma Inline.
	(Set_Classifications): New routine and pragma Inline.
	(Set_Contract_Test_Cases): New routine and pragma Inline.
	(Set_Pre_Post_Conditions): New routine and pragma Inline.
	(Set_Spec_CTC_List): Removed.
	(Set_Spec_PPC_List): Removed.
	(Spec_CTC_List): Removed.
	(Spec_PPC_List): Removed.

2013-04-23  Doug Rupp  <rupp@adacore.com>

	* init.c (GNAT$STOP) [VMS]: Bump sigargs[0] count by 2
	to account for LIB$STOP not having the chance to add the PC and
	PSL fields.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb: Minor code reorganization (remove some redundant
	assignments).
	* sem_ch3.adb, sem_prag.adb: Minor reformatting.

2013-04-23  Yannick Moy  <moy@adacore.com>

	* einfo.ads: Minor typo fix.
	* sem_ch13.adb (Build_Predicate_Functions): Reject cases where
	Static_Predicate is applied to a non-scalar or non-static type.
	* sem_prag.adb: Minor typo fix.

2013-04-23  Doug Rupp  <rupp@adacore.com>

	* init.c (GNAT$STOP) [VMS]: New function.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Add exp_pakd to context.
	(Constrain_Component_Type): If the component of the parent is
	packed, and the record subtype being built is already frozen,
	as is the case for an itype, the component type itself will not
	be frozen, and the packed array type for it must be constructed
	explicitly.

2013-04-23  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb, g-socket.ads (Set_Close_On_Exec): New subprogram.

2013-04-23  Yannick Moy  <moy@adacore.com>

	* err_vars.ads (Error_Msg_Qual_Level): Set variable to zero
	at declaration.
	* opt.ads (Multiple_Unit_Index): Set variable to zero at declaration.
	* sem_util.adb (NCT_Table_Entries): Set variable to zero at declaration.
	* set_targ.ads (Num_FPT_Modes): Set variable to zero at declaration.
	* stylesw.adb (Save_Style_Check_Options): Protect testing the
	value of Style_Check_Comments_Spacing by a previous test that
	Style_Check_Comments is True.

2013-04-23  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb, sem_prag.ads (Effective_Name): Rename to
	Original_Name, and move declaration to package body as this
	subprogram is not used from outside. Also clarify documentation.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Body): When compiling with
	initialize_scalars, disable predicate checks on the generated
	assignment to an out scalar parameter.

2013-04-23  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Remove error
	check for "constrained in partial view" constraints entirely.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, sem_prag.ads: Minor reformatting.
	* errout.ads: Comment update.

2013-04-23  Yannick Moy  <moy@adacore.com>

	* exp_ch5.adb: Minor typo.

2013-04-23  Thomas Quinot  <quinot@adacore.com>

	* gnat_ugn.texi: Fix typo.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads: Minor documentation clarification.

2013-04-23  Bob Duff  <duff@adacore.com>

	* types.ads: Fix incorrect comment.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb sem_aux.ads (Effectively_has_Constrained_Partial_View):
	Rename subprogram as Object_Type_Has_Constrained_Partial_View, better
	description of purpose.
	* checks.adb (Apply_Discriminant_Check): Use above renaming.
	* sem_ch4.adb (Analyze_Allocator): Check Has_Constrained_Partial_View
	of the base type, rather than using the Object_Type predicate.
	* sem_attr.adb (Analyze_Attribute, case 'Access): Use above renaming.
	* sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): ditto.
	* exp_attr.adb (Expand_N_Attribute_Reference, case 'Constrained): Ditto.
	* exp_ch4.adb (Expand_N_Allocator): Ditto.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): Check for Assert rather
	than Assertion.
	* sem_prag.adb (Is_Valid_Assertion_Kind): Moved to spec
	(Effective_Name): New function (Analyze_Pragma, case Check):
	Disallow [Statement_]Assertions (Check_Kind): Implement
	Statement_Assertions (Check_Applicable_Policy): Use Effective_Name
	(Is_Valid_Assertion_Kind): Allow Statement_Assertions.
	* sem_prag.ads (Is_Valid_Assertion_Kind): Moved here from body
	(Effective_Name): New function.
	* sem_res.adb: Minor reformatting.
	* snames.ads-tmpl (Name_Statement_Assertions): New entry.
	* gnat_rm.texi: Add documentation of new assertion kind
	Statement_Assertions.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads, einfo.adb, sem_res.adb, exp_ch6.adb, aspects.adb: Minor
	reformatting and code clean up.

2013-04-23  Vincent Celier  <celier@adacore.com>

	* prj-part.ads, prj-conf.ads: Minor comment updates.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb (Predicate_Function): For a private type, retrieve
	predicate function from full view.
	* aspects.adb (Find_Aspect): Ditto.
	* exp_ch6.adb (Expand_Actuals): If the formal is class-wide and
	the actual is a definite type, apply predicate check after call.
	* sem_res.adb: Do not apply a predicate check before the call to
	a generated Init_Proc.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Significant
	rewrite to make sure Is_Ignore is properly captured when aspect
	is declared.
	* sem_ch6.adb: Minor reformatting.
	* sem_prag.adb (Analyze_Pragma): Do not test policy at time of
	pragma for the case of a pragma coming from an aspect (already
	tested when we analyzed the aspect).

2013-04-23  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Parse_Project_And_Apply_Config): New
	Boolean parameter Implicit_Project, defaulted to False. Call
	Prj.Part.Parse with Implicit_Project.
	* prj-conf.ads (Parse_Project_And_Apply_Config): New Boolean
	parameter Implicit_Project, defaulted to False.
	* prj-part.adb (Parse_Single_Project): New Boolean parameter
	Implicit_Project, defaulted to False. When Implicit_Project is
	True, change the Directory of the project node to the Current_Dir.
	* prj-part.ads (Parse): New Boolean parameter, defaulted to False

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Minor reformatting.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* xoscons.adb: Minor reformatting.

2013-04-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Mode): Ensure that a
	self-referential output appears in both input and output lists of
	the subprogram as categorized by aspect Global.
	(Check_Usage): Rename formal parameters to better illustrate their
	function. Update all uses of the said formals.

2013-04-23  Thomas Quinot  <quinot@adacore.com>

	* exp_util.adb, exp_util.ads (Fully_Qualified_Name_String): New
	parameter Append_NUL to make NUL-termination optional.
	* exp_dist.adb: Consistently use the above throughout instead of
	Get_Library_Unit_Name_String.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, sem_res.adb, prj-tree.adb, prj-tree.ads: Minor
	reformatting.

2013-04-23  Pascal Obry  <obry@adacore.com>

	* xoscons.adb: Remove unused use clause, minor code clean-up.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb: Code cleanup for Is_Expression_Function
	(can apply to any scope entity).
	* sem_res.adb (Resolve_Call):  If the call is within another
	expression function it does not constitute a freeze point.

2013-04-23  Yannick Moy  <moy@adacore.com>

	* exp_ch6.adb (Expand_Actuals): Test that Subp
	is overloadable before testing if it's an inherited operation.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* a-envvar.adb, a-envvar.ads, exp_util.adb, sem_ch12.adb: Minor
	reformatting.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declarations): Undo previous patch.
	* exp_util.adb (Expand_Subtype_From_Expr): If the expression
	is a source entity and the declaration is for an aliased
	unconstrained array, create a new subtype so that the flag
	Is_Constr_Subt_For_UN_Aliased does not pollute other entities.

2013-04-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Move tables Base_Aspect and Inherited_Aspect
	from the spec to the body.
	(Find_Aspect): Update the call to Get_Aspect_Id.
	(Get_Aspect_Id): New version that takes an aspect specification.
	* aspects.ads: Reorganize all aspect related tables.
	(Get_Aspect_Id): New version that takes an aspect specification.
	* par_sco.adb (Traverse_Aspects): Update the call to Get_Aspect_Id.
	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Update
	the call to Get_Aspect_Id.
	* sem_ch13.adb (Analyze_Aspect_At_Freeze_Point): Update the
	call to Get_Aspect_Id.	(Analyze_Aspect_Specifications): Update
	the call to Get_Aspect_Id. Update the call to Impl_Defined_Aspect.

2013-04-23  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Fix_Error): Rewrite to do more accurate job
	of getting proper name in the case where pragma comes from
	aspect.
	* sem_ch3.adb, sinfo.ads, par-ch6.adb, exp_ch6.adb: Minor reformatting.

2013-04-23  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Process_PPCs): Do not filter postconditions based on
	applicable policy.

2013-04-23  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Aux_Decls): Minor code reorganization.

2013-04-23  Doug Rupp  <rupp@adacore.com>

	* init.c: Move facility macros outside IN_RTS.

2013-04-23  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Freeze_Entity): For the case of a bit-packed
	array time that is known at compile time to have more that
	Integer'Last+1 elements, issue an error, since such arrays are
	not supported.

2013-04-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Dependency_Clause): Update all calls to
	Analyze_Input_Output.
	(Analyze_Input_List): Update all calls to Analyze_Input_Output.
	(Analyze_Input_Output): Add formal parameter Self_Ref along with
	comment on its usage. Update all calls to Analyze_Input_Output.
	(Analyze_Pragma): Add new local variable Self_Ref to capture
	the presence of a self-referential dependency clause. Update
	all calls to Analyze_Input_Output.
	(Check_Mode): Add formal parameter Self_Ref along with comment on its
	usage. Verify the legality of a self-referential output.

2013-04-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb: Add predicate checks on by-copy parameter.

2013-04-23  Vincent Celier  <celier@adacore.com>

	* a-envvar.adb, a-envvar.ads (Value): New.

2013-04-22  Yannick Moy  <moy@adacore.com>

	* exp_prag.adb (Expand_Pragma_Loop_Variant): Rewrite pragma as
	null statement if ignored.
	* sem_ch6.adb (Expand_Contract_Cases): Do nothing if pragma is ignored.
	* sem_prag.adb (Analyze_Pragma): Keep analyzing ignored pragmas.

2013-04-22  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Contract_Case): New routine.
	(Analyze_Pragma): Aspect/pragma Contract_Cases can
	now be associated with a library level subprogram.
	Add circuitry to detect illegal uses of aspect/pragma Contract_Cases
	in a subprogram body.
	(Chain_Contract_Cases): Rename formal parameter Subp_Decl to
	Subp_Id. Remove local constant Subp. The entity of the subprogram
	is now obtained via the formal paramter.

2013-04-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Do not set
	Is_Constr_Subt_For_Unc_Aliased on the subtype of the expression,
	if the expression is a source entity.

2013-04-22  Yannick Moy  <moy@adacore.com>

	* exp_prag.adb, sinfo.ads, sem_prag.ads: Minor correction of typos in
	comments.
	* sem_ch6.adb (Expand_Contract_Cases): Add location to message.

2013-04-22  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb (Fix_Error): For a pragma rewritten from another
	pragma, fix up error message to include original pragma name.
	* par_sco.adb: Minor reformatting.

2013-04-22  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_util.adb, sem_util.ads, sem_res.adb, exp_ch6.adb,
	sem_ch6.adb, opt.ads: Minor reformatting.

2013-04-22  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi, prj-nmsc.adb, projects.texi: Add check for
	Library_Standalone and Library_Kind.

2013-04-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals): If the call is to an
	inherited operation and the actual is a by-reference type with
	predicates, add predicate call to post-call actions.
	* sem_util.adb (Is_Inherited_Operation_For_Type): Fix coding
	error: a type declaration has a defining identifier, not an Etype.
	* sem_res.adb: Restore code removed because of above error.

2013-04-22  Doug Rupp  <rupp@adacore.com>

	* init.c (__gnat_handle_vms_condition): Also match C$_SIGINT.

2013-04-22  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi, exp_util.adb, sem_prag.adb, sem_prag.ads, par-ch2.adb,
	opt.ads, sem_ch13.adb: Minor correction of typos in comments/doc.

2013-04-22  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Library_Attributes): Set Library_Dir to
	No_Path_Information only when Directories_Must_Exist_In_Projects
	is False.
	(Get_Directories): Set Object_Directory
	or Exec_Directory to No_Path_Information only when
	Directories_Must_Exist_In_Projects is False.

2013-04-22  Yannick Moy  <moy@adacore.com>

	* par-prag.adb, sem_attr.adb, sem_ch6.adb, sem_prag.adb, sem_warn.adb,
	snames.ads-tmpl, sinfo.ads, sem_util.ads: Remove all references to
	Pragma_Contract_Case and Name_Contract_Case.

2013-04-22  Yannick Moy  <moy@adacore.com>

	* aspects.ads, aspects.adb, sem_ch13.adb: Removal of references to
	Contract_Case.
	* gnat_ugn.texi, gnat_rm.texi Description of Contract_Case replaced by
	description of Contract_Cases.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* makeutl.adb, prj-nmsc.adb: Minor reformatting.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb (Make_Invariant_Call): Use Check_Kind instead
	of Check_Enabled.
	* gnat_rm.texi (Check_Policy): Update documentation for new
	Check_Policy syntax.
	* sem_prag.adb (Check_Kind): Replaces Check_Enabled
	(Analyze_Pragma, case Check_Policy): Rework to accomodate new
	syntax (like Assertion_Policy).
	* sem_prag.ads (Check_Kind): Replaces Check_Enabled.

2013-04-12  Doug Rupp  <rupp@adacore.com>

	* init.c (SS$_CONTROLC, SS$_CONTINUE) [VMS]: New macros.
	(__gnat_handle_vms_condition) [VMS]: Dispatch on the Crtl/C user
	handler if installed.
	* ctrl_c.c (__gnat_install_int_handler)
	[VMS]: Install a dummy sigaction handler to trigger the real
	user handler dispatch in init.c/__gnat_handle_vms_condition.
	(__gnat_uninstall_int_handler) [VMS]: Likewise.

2013-04-12  Vincent Celier  <celier@adacore.com>

	* clean.adb (Parse_Cmd_Line): Set Directories_Must_Exist_In_Projects
	to False if switch is specified.
	* makeutl.adb (Initialize_Source_Record): Do not look for the
	object file if there is no object directory.
	* opt.ads (Directories_Must_Exist_In_Projects): New Boolean
	variable, defaulted to True.
	* prj-nmsc.adb (Check_Library_Attributes): Do not fail if library
	directory does not exist when Directories_Must_Exist_In_Projects is
	False.
	(Get_Directories): Do not fail when the object or the exec directory
	do not exist when Directories_Must_Exist_In_Projects is False.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* namet.adb, namet.ads: Minor addition (7 arg version of Nam_In).
	* exp_prag.adb, sem_ch3.adb, sem_intr.adb, sem_type.adb, exp_util.adb,
	sem_aux.adb, exp_ch9.adb, sem_ch7.adb, sem_ch10.adb, sem_prag.adb,
	par-ch2.adb, tbuild.adb, rtsfind.adb, freeze.adb, sem_util.adb,
	sem_res.adb, sem_attr.adb, exp_ch2.adb, prj-makr.adb, sem_elab.adb,
	exp_ch4.adb, sem_ch4.adb, sem_mech.adb, sem_ch6.adb, par-prag.adb,
	prj-nmsc.adb, exp_disp.adb, sem_ch8.adb, sem_warn.adb, par-util.adb,
	sem_eval.adb, exp_intr.adb, sem_ch13.adb, exp_cg.adb, lib-xref.adb,
	sem_disp.adb, exp_ch3.adb: Minor code reorganization (use Nam_In).

2013-04-12  Doug Rupp  <rupp@adacore.com>

	* init.c: Don't clobber condition code on VMS.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb: Minor reformatting.
	* namet.ads, namet.adb (Nam_In): New functions.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Has_Dynamic_Predicate_Aspect): New flag.
	(Has_Static_Predicate_Aspect): New flag.
	* einfo.ads (Has_Dynamic_Predicate_Aspect): New flag.
	(Has_Static_Predicate_Aspect): New flag.
	* exp_ch9.adb: Minor reformatting.
	* exp_util.adb (Make_Invariant_Call): Check_Enabled now handles
	synonyms.
	* gnat1drv.adb: Remove setting of Debug_Pragmas_Enabled,
	since this switch is gone and control of Debug is done with
	Assertions_Enabled.
	* gnat_rm.texi: Update documentation for Assertion_Policy and
	Check_Policy pragmas.
	* opt.adb (Debug_Pragmas_Disabled[_Config]): Removed
	(Debug_Pragmas_Enabled[_Config]): Removed Since debug now
	controlled by Assertion_Enabled.
	* opt.ads (Debug_Pragmas_Disabled[_Config]): Removed
	(Debug_Pragmas_Enabled[_Config]): Removed Since debug now
	controlled by Assertion_Enabled.
	* par-ch2.adb (Scan_Pragma_Argument_Association): Allow new
	'Class forms.
	* sem_attr.adb: Minor reformatting.
	* sem_ch13.adb (Analyze_Aspect_Specification): Disable aspect
	if DISABLE policy applies.
	* sem_ch6.adb (Grab_PPC): Check original name of aspect for
	aspect from pragma (Process_PPCs): Properly check assertion policy.
	* sem_prag.adb (Check_Enabled): Rewritten for new Assertion_Policy
	(Check_Appicable_Policy): New procedure.
	(Is_Valid_Assertion_Kind): New function.
	(Rewrite_Assertion_Kind): New procedure.
	(Analyze_Pragma): Handle case of disabled assertion pragma.
	(Analyze_Pragma, case Assertion_Policy): Rewritten for Ada 2012.
	(Analyze_Pragma, case Check): Deal with 'Class possibilities.
	(Analyze_Pragma, case Check_Policy): Deal with 'Class possibilities.
	(Analyze_Pragma, case Contract_Class): New handling of ignored pragma.
	(Analyze_Pragma, case Debug): New control with Assertion_Policy.
	(Analyze_Pragma, case Debug_Policy): Now consistent with
	Assertion_Policy.
	(Analyze_Pragma, case Loop_Invariant): New handling of ignored
	pragma.
	(Analyze_Pragma, case Loop_Variant): New handling of ignored pragma.
	(Analyze_Pragma, case Precondition): Use proper name for Check pragma.
	(Analyze_Pragma, case Check_Enabled): Rewritten for new policy stuff.
	* sem_prag.ads (Check_Enabled): Rewritten for new
	Assertion_Policy stuff.
	(Check_Appicable_Policy): New procedure.
	* sinfo.adb (Is_Disabled): New flag.
	(Is_Ignored): New flag.
	* sinfo.ads (Is_Disabled): New flag.
	(Is_Ignored): New flag.
	(N_Pragma_Argument_Association): New 'Class forms.
	* snames.ads-tmpl: New names Name_uPre, Name_uPost,
	Name_uType_Invariant, Name_uInvariant.
	* switch-c.adb: Remove setting of Debug_Pragmas_Enabled for -gnata.
	* tree_io.ads (ASIS_Version_Number): Updated (remove
	read write of obsolete flags Debug_Pragmas_Disabled and
	Debug_Pragmas_Enabled.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Get_Explicit_Discriminant_Value): Subsidiary
	of Build_Record_Aggr_Code, used to retrieve explicit values
	for inherited discriminants in an extension aggregate, when the
	ancestor type is unconstrained.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Check_Stream_Attribute): If restriction
	No_Default_Stream_Attributes is active, it is illegal to use a
	predefined elementary type stream attribute either by itself,
	or more importantly as part of the attribute subprogram for a
	composite type. However, if the broader restriction No_Streams
	is active, then stream operations are not generated, and there
	is no error.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* gnatbind.adb: Minor reformatting.

2013-04-12  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Analyze_Access_Attribute): Treat P'Access like a
	call only in the static elaboration model.

2013-04-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Input_List): Detect an illegal dependency
	clause where both input and output lists are null.
	(Analyze_Pragma): Update the grammar of pragma Depends.

2013-04-12  Vincent Celier  <celier@adacore.com>

	* gnatbind.adb (No_Restriction_List): Exclude restrictions that
	take a parameter value, not a count.
	* prj.ads, prj.adb (Remove_All_Restricted_Languages): New procedure.
	* projects.texi: Complete documentation of attribute Roots.

2013-04-12  Thomas Quinot  <quinot@adacore.com>

	* exp_ch3.adb, exp_util.ads, checks.adb, freeze.adb, sem_attr.adb,
	sem_ch3.adb: Minor reformatting.
	* exp_ch4.adb (Size_In_Storage_Elements): Minor documentation
	improvement: note that the computation is pessimistic for bit
	packed arrays.
	* gnat_rm.texi (Range_Length): Fix minor error in description
	of attribute.

2013-04-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb (Find_Aspect): New routine.
	(Find_Value_Of_Aspect): New routine.
	(Has_Aspect): Reimplemented.
	* aspects.ads (Find_Aspect): New routine.
	(Find_Value_Of_Aspect): New routine, previously known as Find_Aspect.
	* exp_ch5.adb (Expand_Iterator_Loop): Update the call to Find_Aspect.
	* exp_util.adb (Is_Iterated_Container): Update the call to Find_Aspect.
	* sem_ch4.adb (Try_Container_Indexing): Update calls to Find_Aspect.
	* sem_ch5.adb (Analyze_Iterator_Specification): Update
	the call to Find_Aspect. Use function Has_Aspect for better
	readability.
	(Preanalyze_Range): Use function Has_Aspect for better readability.
	* sem_ch13.adb (Check_One_Function): Update the call to Find_Aspect.
	* sem_prag.adb (Analyze_Pragma): There is no longer need to
	look at the parent to extract the corresponding pragma for
	aspect Global.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* checks.adb, sem_elab.adb, repinfo.adb, sem_ch4.adb, restrict.adb,
	restrict.ads: Minor reformatting.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb: Retrieve original name of classwide type if any.

2013-04-12  Thomas Quinot  <quinot@adacore.com>

	* exp_ch11.ads: Minor reformatting.

2013-04-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Alphabetize subprogram bodies in this unit. Add
	an entry for Aspect_Ghost in the table of canonical aspects.
	(Has_Aspect): New routine.
	* aspects.ads: Add Aspect_Ghost to all relevant
	tables. Alphabetize subprograms in this unit.
	(Has_Aspect): New routine.
	* einfo.adb: Add with and use clauses for Aspects.
	(Is_Ghost_Function): New routine.
	* einfo.ads: Add new synthesized attribute Is_Ghost_Function and
	update the structure of the related nodes.
	(Is_Ghost_Function): New routine.
	* exp_ch4.adb (Find_Enclosing_Context): Use routine
	Is_Body_Or_Package_Declaration to terminate a search.
	(Is_Body_Or_Unit): Removed.
	* exp_util.adb (Within_Case_Or_If_Expression): Use routine
	Is_Body_Or_Package_Declaration to terminate a search.
	* par-prag.adb: Add pragma Ghost to the list of pragmas that do
	not need special processing by the parser.
	* sem_attr.adb (Analyze_Access_Attribute): Detect an
	illegal use of 'Access where the prefix is a ghost function.
	(Analyze_Attribute): Use routine Is_Body_Or_Package_Declaration
	to terminate a search.	(Check_References_In_Prefix): Use routine
	Is_Body_Or_Package_Declaration to terminate a search.
	* sem_ch4.adb (Analyze_Call): Mark a function when it appears
	inside an assertion expression.  Verify the legality of a call
	to a ghost function.
	(Check_Ghost_Function_Call): New routine.
	* sem_ch6.adb (Analyze_Function_Call): Code reformatting. Move
	the setting of attribute In_Assertion_Expression to Analyze_Call.
	(Check_Overriding_Indicator): Detect an illegal attempt to
	override a function with a ghost function.
	* sem_ch12.adb (Preanalyze_Actuals): Detect an illegal use of
	a ghost function as a generic actual.
	* sem_elab.adb (Check_Internal_Call_Continue): Update the call
	to In_Assertion.
	* sem_prag.adb: Add an entry for pragma Ghost in the table
	of significant arguments.
	(Analyze_Pragma): Do not analyze
	an "others" case guard. Add processing for pragma Ghost. Use
	Preanalyze_Assert_Expression when analyzing the expression of
	pragmas Loop_Invariant and Loop_Variant.
	* sem_util.adb (Get_Subprogram_Entity): Reimplemented.
	(Is_Body_Or_Package_Declaration): New routine.
	* sem_util.ads: Alphabetize subprotrams in this unit.
	(Is_Body_Or_Package_Declaration): New routine.
	* sinfo.adb (In_Assertion): Rename to In_Assertion_Expression.
	(Set_In_Assertion): Rename to Set_In_Assertion_Expression.
	* sinfo.ads: Rename flag In_Assertion to In_Assertion_Expression
	to better reflect its use.  Update all places that mention the flag.
	(In_Assertion): Rename to In_Assertion_Expression. Update
	related pragma Inline.	(Set_In_Assertion): Rename to
	Set_In_Assertion_Expression. Update related pragma Inline.
	* snames.ads-tmpl: Add new predefined name Ghost. Add new pragma
	id Pragma_Ghost.

2013-04-12  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Set_Imported): Do not generate error for multiple
	Import in CodePeer mode.
	* s-rident.ads: Fix minor typo.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not insert validity check
	in the body of the generated predicate function, to prevent
	infinite recursion.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* s-rident.ads: Add various missing Ada 2012 restrictions:
	No_Access_Parameter_Allocators, No_Coextensions,
	No_Use_Of_Attribute, No_Use_Of_Pragma.
	* snames.ads-tmpl: Add corresponding names.
	* restrict.ads restrict.adb: Subprograms and data structures to
	handle aspects No_Use_Of_Attribute and No_Use_Of_Pragma.
	* sem_ch4.adb: Correct name of restrictions is
	No_Standard_Allocators_After_Elaboration.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Check
	violation of restriction No_Use_Of_Attribute.
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Set restrictions No_Use_Of_Pragma and No_Use_Of_Attribute.
	(Analyze_Pragma): Check violation of restriction No_Use_Of_Pragma.
	* sem_res.adb: Check restrictions No_Access_Parameter_Allocators
	and No_Coextensions.
	* bcheck.adb: Correct name of restrictions is
	No_Standard_Allocators_After_Elaboration.
	* gnatbind.adb: Correct name of restrictions is
	No_Standard_Allocators_After_Elaboration.

2013-04-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma, (Check_Mode_Restriction_In_Function):
	Correct error message format.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb: Minor reformatting.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_elab.adb (Within_Elaborate_All): Do not examine a context
	item that has not been analyzed, because the unit may have errors,
	or the context item may come from a proper unit inserted at the
	point of a stub and not analyzed yet.

2013-04-12  Thomas Quinot  <quinot@adacore.com>

	* gnat1drv.adb, repinfo.adb, repinfo.ads (Repinfo.List_Array_Info,
	List_Record_Info): Also include scalar storage order information in
	output.

2013-04-12  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Process_Contract_Cases): Update code to apply to
	Contract_Cases instead of Contract_Case pragma.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* a-cfdlli.ads, g-socket.adb, s-fileio.adb: Minor reformatting.

2013-04-12  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Update analyse of
	Attribute_Old and Attribute_Result so they are allowed in the
	right-hand-side of an association in a Contract_Cases pragma.
	* sem_prag.adb (Analyze_CTC_In_Decl_Part): Add pre-analysis of
	the expressions in a Contract_Cases pragma.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* sem.ads, opt.ads: Minor comment edits.
	* sem_warn.adb, sem_ch6.adb: Minor reformatting.

2013-04-12  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb a-cfdlli.ads (List, Not_No_Element, Iterate,
	Reverse_Iterate, Query_Element, Update_Element, Read, Write): Removed,
	not suitable for formal analysis.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Abstract_State): Use Defining entity
	to locate package entity, which may be a child unit.

2013-04-12  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb, g-socket.ads (Connect_Socket, version with timeout): If
	the specified timeout is 0, do not attempt to determine whether the
	connection succeeded.

2013-04-12  Doug Rupp  <rupp@adacore.com>

	* s-fileio.adb (Form_RMS Context_Key): Fix some thinkos.

2013-04-12  Doug Rupp  <rupp@adacore.com>

	* s-fileio.adb: Minor reformatting.

2013-04-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Check_Infinite_Loop_Warning): Do not warn if
	the last statement in the analyzed loop is an unconditional
	exit statement.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* opt.ads (Style_Check_Main): New switch.
	* sem.adb (Semantics): Set Style_Check flag properly for new
	unit to be analyzed.
	* sem_ch10.adb (Analyze_With_Clause): Don't reset Style_Check,
	the proper setting of this flag is now part of the Semantics
	procedure.
	* switch-c.adb (Scan_Front_End_Switches): Set Style_Check_Main
	for -gnatg and -gnaty

2013-04-12  Doug Rupp  <rupp@adacore.com>

	* s-crtl.ads (fopen, freopen): Add vms_form parameter
	* i-cstrea.ads (fopen, freopen): Likewise.
	* adaint.h (__gnat_fopen, __gnat_freopen): Likewise.
	* adaint.c (__gnat_fopen, __gnat_freopen): Likewise.
	[VMS]: Split out RMS keys and call CRTL function appropriately.
	* s-fileio.adb (Form_VMS_RMS_Keys, Form_RMS_Context_Key): New
	subprograms.
	(Open, Reset): Call Form_VMS_RMS_Keys. Call fopen,freopen with
	vms_form
	* gnat_rm.texi: Document implemented RMS keys.

2013-04-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications):
	Insert the corresponding pragma for aspect Abstract_State at
	the top of the visible declarations of the related package.
	Previously this was only done when the package is a compilation
	unit.

2013-04-12  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Further menu clean ups.
	* sem_prag.adb, opt.ads: Minor reformatting.
	* sem_util.ads: Minor comment fix.

2013-04-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect
	Depends is now a delayed aspect. The delay is required
	due to the interplay between aspects Depends and Global.
	(Check_Aspect_At_Freeze_Point): Add an entry for aspect Depends.
	* sem_prag.adb: Reformat various error messages.
	(Add_Item): New subsidiary routine.
	(Analyze_Pragma): Add new variables
	Global_Seen, Result_Seen, Subp_Inputs and Subp_Outputs. The
	analysis of pragma Depends now has the capability to check
	the proper mode and usage of subprogram inputs and outputs.
	(Appears_In): New routine.
	(Check_Function_Return): New routine.
	(Check_Mode): New routine.
	(Check_Usage): New routine.
	(Collect_Subprogram_Inputs_Outputs): New routine.

2013-04-12  Bob Duff  <duff@adacore.com>

	* par-ch7.adb (P_Package): Initialize Sloc in the newly-pushed scope
	stack entry.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* switch-c.adb: Minor fix to wording of error message for
	-gnatet/eT.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* impunit.adb: Add s-multip and s-mudido to list of impl defined
	system units.
	* gnat_rm.texi: Add documentation for
	System.Multiprocessors[.Dispatching_Domains].

2013-04-12  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Completion of menu cleanups.

2013-04-12  Arnaud Charlet  <charlet@adacore.com>

	* sem_prag.adb (Diagnose_Multiple_Pragmas): Relax the rules
	in Relaxed_RM_Semantics.

2013-04-12  Arnaud Charlet  <charlet@adacore.com>

	* set_targ.adb (elab code): Add support for non gcc back-ends
	where save_argv is null.

2013-04-12  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb (Gnat1drv): Test Target_Dependent_Info_Write_Name.
	* opt.ads (Target_Dependent_Info_Read): Add _Name, now an access
	type (Target_Dependent_Info_Write): Add _Name, now an access type.
	* set_targ.adb (Write_Target_Dependent_Values): Use name
	from -gnatet switch stored in Target_Dependent_Info_Write_Name
	(Read_Target_Dependent_Values): Use name from -gnateT switch
	stored in Target_Dependent_Info_Read_Name.
	* switch-c.adb: New form of -gnatet and -gnateT switches.
	* usage.adb: New form of -gnatet and -gnateT switches with
	file name.

2013-04-11  Eric Botcazou  <ebotcazou@adacore.com>

        * gcc-interface/decl.c (elaborate_expression_1): Skip only constant
        arithmetics when looking for a read-only variable in the expression.

2013-04-11  Javier Miranda  <miranda@adacore.com>

	* check.ads, exp_ch6.adb (Install_Null_Excluding_Check): No check in
	interface thunks since it is performed at the caller side.
	(Expand_Simple_Function_Return): No accessibility check needed in thunks
	since the check is done by the target routine.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Priority): pre-analyze
	expression with type Any_Priority.
	* exp_ch9.adb (Initialize_Protection): Check that the value
	of the priority expression is within the bounds of the proper
	priority type.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, prj-env.adb: Minor reformatting.

2013-04-11  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Clean ups.

2013-04-11  Yannick Moy  <moy@adacore.com>

	* set_targ.adb: Minor comment update.

2013-04-11  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi: Remove obsolete comment about DLL calling
	convention.

2013-04-11  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Call): For the call to the target primitive
	of an interface thunks do not compute the extra actuals; just
	propagate the extra actuals received by the thunk.
	* exp_disp.adb (Expand_Interface_Thunk): Decorate new attribute
	Thunk_Entity.
	* sem_ch6.adb (Create_Extra_Formals): Do not generate extra
	formals in interface thunks whose target primitive has no extra
	formals.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Detect
	a renaming by looking at the Renamed_Object attribute.
	(Is_Renaming): Removed.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (Initialize_Default_Project_Path): Take
	into account a project path file, specified by environment
	variable GPR_PROJECT_PATH_FILE, before taking into account
	GPR_PROJECT_PATH.
	* projects.texi: Add documentation for GPR_PROJECT_PATH_FILE

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* a-cdlili.adb, a-cdlili.ads, a-cihama.adb, a-cihama.ads, a-coinve.adb,
	a-coinve.ads, a-ciorse.adb, a-ciorse.ads, a-coorma.adb, a-coorma.ads,
	a-cfdlli.adb, a-cfdlli.ads, a-cborma.adb, a-cborma.ads, a-cidlli.adb,
	a-cidlli.ads, a-ciormu.adb, a-ciormu.ads, a-cihase.adb, a-cihase.ads,
	a-cohama.adb, a-cohama.ads, a-coorse.adb, a-coorse.ads, a-cbhama.adb,
	a-cbhama.ads, a-cborse.adb, a-cborse.ads, a-ciorma.adb, a-cobove.adb,
	a-ciorma.ads, a-cobove.ads, a-coormu.adb, a-coormu.ads, a-cohase.adb,
	a-cohase.ads, a-cbdlli.adb, a-cbdlli.ads, a-cbhase.adb, a-cbhase.ads:
	Move Iterator operations from body to private part of spec.

2013-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* ttypes.ads, get_targ.ads: More minor rewording of comments.

2013-04-11  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: Document use of switch -gnatd.Z.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Both pragma Depends and Global can now
	support renamings of entire objects. Legal renamings are replaced by
	the object they rename.
	(Is_Renaming): New routine.

2013-04-11  Yannick Moy  <moy@adacore.com>

	* set_targ.adb, opt.ads: Minor changes in comments.

2013-04-11  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Minor clean ups.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* nlists.ads, nlists.adb, treepr.adb, treepr.ads: Move debugging
	function p from Nlists to Treepr.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Context): If the context is
	a contract for a null procedure defer error reporting until
	postcondition body is created.
	* exp_ch13.adb (Expand_N_Freeze_Entity): If the entity is a
	null procedure, complete the analysis of its contracts so that
	calls within classwide conditions are properly rewritten as
	dispatching calls.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* sem_ch10.adb, sem_ch12.adb: Minor reformatting.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb, sem_res.adb, sem_attr.adb: Minor reformatting.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* atree.adb, atree.ads (Node31): New function.
	(Set_Node31): New procedure.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Minor typo correction.

2013-04-11  Javier Miranda  <miranda@adacore.com>

	* einfo.ad[sb] (Thunk_Entity/Set_Thunk_Entity): New attribute.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* back_end.adb (Register_Back_End_Types): Moved to Get_Targ
	* back_end.ads (C_String): Moved to Get_Targ
	(Register_Type_Proc): Moved to Get_Targ (Register_Back_End_Types):
	Moved to Get_Targ.
	* cstand.adb (Register_Float_Type): New interface
	(Create_Back_End_Float_Types): Use entries in FPT_Mode_Table.
	* get_targ.adb (Register_Back_End_Types): Moved here from
	Back_End.
	* get_targ.ads (C_String): Moved here from Back_End
	(Register_Type_Proc): Moved here from Back_End
	(Register_Back_End_Types): here from Back_End.
	* gnat1drv.adb (GGnat11drv): Add call to
	Write_Target_Dependent_Values;
	* lib-writ.ads, lib-writ.adb (Write_ALI): Remove section writing
	obsolete target dependent info.
	* opt.ads (Generate_Target_Dependent_Info):
	Removed (Target_Dependent_Info_Read): New flag
	(Target_Dependent_Info_Write): New flag
	* output.adb: Minor comment change
	* s-os_lib.ads: Minor reformatting
	* set_targ.ads, set_targ.adb: Minor reformatting.
	* switch-c.adb (Scan_Switches.First_Ptr): New variable
	(Scan_Front_End_Switches): Check -gnatd.b, -gnateT come first
	(Scan_Front_End_Switches): Handle -gnatet, -gnateT
	* ttypes.ads: Remove documentation section on target dependent
	info in ali file Remove four letter codes, no longer used Instead
	of using Get_Targ.Get_xxx, we use Set_Targ.xxx
	* usage.adb: Add usage lines for -gnatet/-gnateT
	* gcc-interface/Make-lang.in: Update dependencies.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb: Update documentation.
	* sinfo.ads (N_Expression_With_Actions): Ditto.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications):
	Add a guard to prevent the double insertion of the same aspect
	into a rep item list. This previously led to a circularity.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Eval_Attribute, case 'Access): Reject attribute
	reference if the prefix is the dereference of an anonymous access
	to subprogram type.
	* exp_attr.adb (Expand_N_Attribute_Reference, Access_Cases): Handle
	properly a reference to the current instance of a protected type
	from within a protected subprogram.
	* sem_res.adb (Find_Unique_Access_Type): Treat
	Attribute_Access_Type like Allocator_Type when resolving an
	equality operator.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* xgnatugn.adb: Remove obsolete comments.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* back_end.ads, back_end.adb: Minor reformatting.
	* set_targ.ads, set_targ.adb: New files.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_case.adb (Check_Against_Predicate): New routine.
	(Check_Choices): When the type covered by the list of choices
	is a static subtype with a static predicate, check all choices
	agains the predicate.
	(Issue_Msg): All versions removed.
	(Missing_Choice): New routines.
	* sem_ch4.adb: Code and comment reformatting.
	(Analyze_Case_Expression): Do not check the choices when the case
	expression is being preanalyzed and the type of the expression
	is a subtype with a static predicate.
	(Has_Static_Predicate): New routine.
	* sem_ch13.adb: Code and comment reformatting.	(Build_Range):
	Always build a range even if the low and hi bounds denote the
	same value. This is needed by the machinery in Check_Choices.
	(Build_Static_Predicate): Always build a range even if the low and
	hi bounds denote the same value. This is needed by the machinery
	in Check_Choices.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, sem_util.adb, exp_ch6.adb, xgnatugn.adb: Minor
	reformatting.

2013-04-11  Doug Rupp  <rupp@adacore.com>

	* gnatlink.adb: Fold program basename to lower case on VMS for
	consistency.

2013-04-11  Matthew Heaney  <heaney@adacore.com>

	* a-rbtgbo.adb (Generic_Equal): Initialize Result variable before
	entering loop.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* xgnatugn.adb: Remove dead code (handling of @ifset/@ifclear).

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Remove some use of ifset in menus. Not strictly
	needed, and seems to confuse some versions of makeinfo.

2013-04-11  Javier Miranda  <miranda@adacore.com>

	* einfo.adb (Is_Thunk): Remove assertion.
	(Set_Is_Thunk): Add assertion.
	* einfo.ads (Is_Thunk): Complete documentation.
	* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Code cleanup.
	* exp_ch3.ad[sb] (Is_Variable_Size_Array): Moved to sem_util
	(Is_Variable_Size_Record): Moved to sem_util
	* exp_ch6.adb (Expand_Call): Code cleanup.
	(Expand_N_Extended_Return_Statement): Code cleanup.
	(Expand_Simple_Function_Return): Code cleanup.
	* exp_disp.adb Remove dependency on exp_ch3
	(Expand_Interface_Thunk): Add minimum decoration needed to set
	attribute Is_Thunk.
	* sem_ch3.ad[sb] (Is_Constant_Bound): moved to sem_util
	* sem_util.ad[sb] (Is_Constant_Bound): Moved from
	sem_ch3 (Is_Variable_Size_Array): Moved from exp_ch3
	(Is_Variable_Size_Record): Moved from exp_ch3

2013-04-11  Javier Miranda  <miranda@adacore.com>

	* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Do
	not add cleanup actions in thunks associated with interface types.
	* exp_ch3.ad[sb] (Is_Variable_Size_Record): Move declaration to
	the package spec.
	* exp_ch4.adb (Tagged_Conversion): Update call to
	Expand_Interface_Conversion since the parameter Is_Static is no
	longer needed.
	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Adding
	assertion to ensure that interface thunks are never handled by
	this routine.
	(Expand_N_Simple_Function_Return): Do not rewrite this statement
	as an extended return statement in interface thunks, and do not
	perform copy in the secondary stack if the return statement is
	located in a thunk.
	* exp_disp.adb (Expand_Dispatching_Call): No longer displace
	the pointer to the returned object in functions returning interface
	types.
	(Expand_Interface_Thunk): For functions returning interface types
	displace the pointer to the returned object.
	(Expand_Interface_Conversion): Remove formal
	Is_Static since this subprogram can now evaluate it locally.
	* sem_ch3.adb (Add_Internal_Interface_Entities): For functions
	propagate the type returned by the covered interface primitive to
	the internal interface entity. Needed by the thunk to generate
	the code which displaces "this" to reference the corresponding
	secondary dispatch table.
	* sem_disp.adb (Propagate_Tag): Update call to
	Expand_Interface_Conversion since the parameter Is_Static is no
	longer needed.
	* sem_res.adb (Resolve_Type_Conversion): Update calls to
	Expand_Interface_Conversion since the parameter Is_Static is no
	longer needed plus code cleanup.

2013-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c (RETURN_ADDR_OFFSET): Delete as unused.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* a-crbtgk.adb, a-ciorse.adb, a-crbtgo.adb, a-coorse.adb, a-rbtgbo.adb,
	a-cborse.adb, a-rbtgso.adb, exp_ch3.adb: Minor reformatting.

2013-04-11  Yannick Moy  <moy@adacore.com>

	* exp_ch4.adb (Expand_N_Selected_Component): Do not expand
	discriminant check for Unchecked_Union.
	* sem_res.adb (Resolve_Selected_Component): Set flag
	Do_Discriminant_Check even when expansion is not performed.
	* sinfo.ads (Do_Discriminant_Check): Update documentation for the case
	of Unchecked_Union.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Same_Representation): Two types with different scalar
	storage order never have the same representation.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* xgnatugn.adb (Push_Conditional): Simplify handling,
	no longer need to keep track of "excluding" sections.
	(Currently_Excluding): Removed.
	(Process_Source_File):
	Set unw/vms flag so that texinfo can do the whole handling of
	@ifset/@ifclear sections.  Fix handling of nested @ifset/@ifclear
	sections.
	* gnat_ugn.texi: Add a section on performing unassisted install
	on Windows.

2013-04-11  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: Document usage of -gnatd.Q switch.

2013-04-11  Matthew Heaney  <heaney@adacore.com>

	* a-crbtgk.adb (Ceiling, Find, Floor): Adjust locks
	before element comparisons.
	(Generic_Conditional_Insert, Generic_Conditional_Insert_With_Hint):
	Ditto.
	* a-crbtgo.adb, a-rbtgbo.adb (Generic_Equal): Adjust locks before
	element comparisons.
	* a-rbtgso.adb (Difference, Intersection): Adjust locks
	before element comparisons.
	(Is_Subset, Overlap): Ditto
	(Symmetric_Difference, Union): Ditto
	* a-btgbso.adb (Set_Difference, Set_Intersection): Adjust locks
	before element comparisons.
	(Set_Subset, Set_Overlap): Ditto
	(Set_Symmetric_Difference, Set_Union): Ditto
	* a-coorse.adb, a-ciorse.adb, a-cborse.adb
	(Update_Element_Preserving_Key): Adjust locks before element
	comparisons (Replace_Element): Ditto

2013-04-11  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, projects.texi, snames.ads-tmpl: Remove Build_Slaves
	attribute.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Equivalent_Aggregate): Subsidiary of
	Expand_N_Object_Declaration, used to construct an aggregate
	with static components whenever possible, so that objects of a
	discriminated type can be initialized without calling the init.
	proc for the type.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* prj-makr.adb (Process_Directory): On VMS, always delete,
	then recreate the temporary file with Create_Output_Text_File,
	otherwise the output redirection does not work properly.

2013-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* urealp.ads: Fix minor typo.

2013-04-11  Fabien Chouteau  <chouteau@adacore.com>

	* cio.c (mktemp): Don't use tmpnam function from the
	system on VxWorks in kernel mode.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* make.adb (Compile): Clarify the error message reported
	when gnatmake refuses to compile a runtime source.
	(Start_Compile_If_Possible): Ditto.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Add documentation about -gnatc and gnatmake.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* switch-c.adb: Document internal switches.
	* usage.adb: Remove lines for internal switches: -gnatea, -gnateO,
	-gnatez and -gnateO.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* par-ch6.adb (P_Subprogram): Attach aspects to subprogram stub.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Allow aspects on
	subprogram stubs.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Analyze generated
	pre/post pragmas at once before analyzing the proper body.
	* sem_prag.adb (Chain_PPC): Handle pragma that comes from an
	aspect on a subprogram stub.
	* aspects.adb: Aspect specifications can appear on a
	subprogram_Body_Stub.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnatname.adb: Minor comment fix.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* prj-makr.adb (Process_Directory): Create a new temporary
	file for each invocation of the compiler, in directory pointed
	by environment variable TMPDIR if it exists.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Minor editing/clean ups.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Null_Procedure): New subprogram, mostly
	extracted from Analyze_Subprogram_Declaration, to handle null
	procedure declarations that in ada 2012 can be completions of
	previous declarations.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Entity_Of): Moved to Exp_Util.
	* exp_util.ads, exp_util.adb (Entity_Of): New routine.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* g-spipat.ads: Minor comment fix.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_util.adb, sem_res.adb, exp_ch4.adb: Minor
	reformatting.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* exp_util.ads (Fully_Qualified_Name_String): Document that the
	constructed literal is the entity name in all upper case.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb (Set_Entity_With_Style_Check): Fix logic of
	check for implementation defined identifiers.

2013-04-11  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Type_Conversion_Checks): Add an explanation
	of why range check and length are put on different nodes.
	* exp_ch4.adb (Apply_Type_Conversion_Checks): Remove check marks
	when doing their expansion.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Get_Incomplete_View_Of_Ancestor):
	New function to implement the notion introduced in RM 7.3.1
	(5.2/3): in a child unit, a derived type is within the derivation
	class of an ancestor declared in a parent unit, even if there
	is an intermediate derivation that does not see the full view
	of that ancestor.
	* sem_res.adb (Valid_Conversion): if all else fails, examine if an
	incomplete view of an ancestor makes a numeric conversion legal.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: in Ada2012 operators can only have in
	parameters.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Create_Binder_Mapping_File): Do not put into
	the mapping file ALI files of sources that have been replaced.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add subsection Duplicate Sources in Projects.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Add documentation for gnatmake switch -droot_dir/**

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* init.c (__gnat_install_handler): Only set up an alternate
	stack when installing a signal handler for SIGSEGV.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Connect_Socket, timeout version): Call
	underlying connect operation directly, not through the 2-argument
	Connect_Socket thick binding, in order to avoid raising a junk
	exception for the EINPROGRESS return.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* a-cdlili.adb: Minor addition of pragma Warnings (Off).

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* hostparm.ads: Minor reformatting.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.ads, aspects.adb: Add Aspect_Depends to all the relevant
	tables.
	* elists.ads, elists.adb (Contains): New routine.
	* par-prag.adb: Pragma Depends does not need any special treatment
	by the parser.
	* sem_ch13.adb (Analyze_Aspect_Specifications):
	Transform aspect Depends into a corresponding pragma.
	(Check_Aspect_At_Freeze_Point): Aspect Depends does not need
	inspection at its freeze point.
	* sem_prag.adb (Analyze_Pragma): Perform analysis and
	normalization of pragma Depends. Remove the use of function
	Is_Duplicate_Item. Use End_Scope to uninstalle the formal
	parameters of a subprogram. Add a value for pragma Depends in
	table Sig_Flags.
	(Is_Duplicate_Item): Removed.
	* snames.ads-tmpl: Add predefined name for Depends as well as
	a pragma identifier.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb: Minor code clean up.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* debug.adb, sem_ch13.adb (Analyze_Enumeration_Representation_Clause):
	Ignore enumeration rep clauses by default in CodePeer mode, unless
	-gnatd.I is specified.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Safe_To_Capture_Value): If the node belongs to
	an expression that has been attached to the else_actions of an
	if-expression, the capture is not safe.

2013-04-11  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Type_Conversion_Checks): Put check mark on type
	conversion for arrays.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb: Minor reformatting.

2013-04-11  Johannes Kanig  <kanig@adacore.com>

	* adabkend.adb: Minor comment addition.

2013-04-11  Matthew Heaney  <heaney@adacore.com>

	* a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb ("="): Increment
	lock counts before entering loop.
	(Find): Ditto.
	(Is_Sorted, Merge, Sort): Ditto.
	(Reverse_Find): Ditto.
	(Splice_Internal): Internal operation to refactor splicing logic.
	(Splice): Some logic moved into Splice_Internal.

2013-04-11  Johannes Kanig  <kanig@adacore.com>

	* adabkend.adb (Scan_Compiler_Arguments): Do not call
	Set_Output_Object_File_Name in Alfa_Mode
	* gnat1drv.adb (Adjust_Global_Switches): Take Alfa_Mode into account.
	* opt.ads: Fix documentation.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor code reorganization and comment fixes.
	* sem_type.adb: Minor reformatting.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Process_Transient_Object): Add new
	local variable Fin_Call. Remove and explain ??? comment. Use the
	Actions of logical operators "and then" and "or else" to insert
	the generated finalization call.

2013-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_rm.texi: Fix typo.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb: Minor reformatting.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* atree.h: Add declarations for Flag255-Flag289 Fix declaration
	of Field30 (was wrong, but no effect, since not yet referenced by
	back end) Add declarations for Field31-Field35 Add declarations
	for Node31-Node35.
	* einfo.ads, einfo.adb (Has_Invariants): No longer applies to
	procedures.
	(Has_Predicates): No longer applies to functions.
	(Is_Predicate_Function): New flag.
	(Is_Predicate_Function_M): New flag.
	(Is_Invariant_Procedure): New flag.
	(Predicate_Function_M): New function.
	(Set_Predicate_Function_M): New procedure.
	* exp_ch11.adb (Expand_N_Raise_Expression): Take care of special
	case of appearing in predicate used for membership test.
	* exp_ch3.adb (Insert_Component_Invariant_Checks): Set
	Is_Invariant_Procedure flag.
	* exp_ch4.adb (Expand_Op_In): Call special predicate function
	that takes care of raise_expression nodes in the predicate.
	* exp_util.ads, exp_util.adb (Make_Predicate_Call): Add argument Mem for
	membership case.
	* sem_ch13.adb (Build_Predicate_Functions): New name for
	Build_Predicate_Function.  Major rewrite to take care of raise
	expression in predicate for membership tests.
	* sem_res.adb (Resolve_Actuals): Include both predicate functions
	in defense against infinite predicate function loops.
	* sinfo.ads, sinfo.adb (Convert_To_Return_False): New flag.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb: Generate reference for component of anonymous
	access type.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* stand.ads: Minor reformatting.

2013-04-11  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb, a-coinve.adb, a-cobove.adb ("="): Increment lock
	counts before entering loop.
	(Find, Find_Index): Ditto.
	(Is_Sorted, Merge, Sort): Ditto.
	(Reverse_Find, Reverse_Find_Index): Ditto.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_ch11.ads, exp_ch11.adb (Expand_N_Raise_Expression): New procedure.
	* exp_util.adb (Insert_Actions): Add entry for N_Raise_Expression.
	* expander.adb: Add call to Expand_N_Raise_Expression.
	* par-ch11.adb (P_Raise_Expression): New procedure.
	* par-ch4.adb (P_Relation): Handle Raise_Expression.
	* par.adb (P_Raise_Expression): New procedure.
	* sem.adb: Add handling for N_Raise_Expression.
	* sem_ch11.ads, sem_ch11.adb (Analyze_Raise_Expression): New procedure.
	* sem_res.adb (Resolve): Add handling for N_Raise_Expression.
	* sinfo.ads, sinfo.adb (N_Raise_Expression): New node.
	* sprint.adb (Sprint_Node_Actual): Add handling for N_Raise_Expression.
	* stand.ads (Any_Type): Document use with N_Raise_Expression.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Remove section "The Development Environments"
	now that all predefined attributes are documented, including
	those in package IDE.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Preserve parent link in copy of expression.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* projects.texi: Complete rewrite of the subsection Attributes
	in section "Project file Reference".

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_Concatenate): Remove wrapping in
	expression-with-actions node. No longer needed given fix to
	sem_prag and caused loss of some useful warnings.
	* sem.ads: Minor reformatting.
	* sem_prag.adb (Check_Disabled): Removed, to be replaced by not
	Check_Enabled. These two routines were curiously incompatible
	causing confusion.
	(Analyze_Pragma, case Check): Make sure we do
	not expand the string argument if the check is disabled. Avoid
	use of Check_Disabled, which resulted in missing analysis in
	some cases.
	* sem_prag.ads (Check_Disabled): Removed, to be replaced by not
	Check_Enabled. These two routines were curiously incompatible
	causing confusion.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Process_Transient_Object): Use
	an unchecked conversion when associating a transient controlled
	object with its "hook".

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case
	Preelaborable_Initialization): The pragma is legal if it comes
	from an aspect on the private view of the type, even though its
	analysis point takes place later at the freeze point.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Minor reformatting.

2013-04-11  Yannick Moy  <moy@adacore.com>

	* ali-util.adb (Read_Withed_ALIs): Do not consider it an error to
	read ALI files with No_Object=True in Alfa mode.
	* gnat1drv.adb: Set appropriately Back_End_Mode in Alfa mode, whether
	this is during frame condition generation of translation to Why.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor code reorganization
	* types.ads: Minor reformatting.

2013-04-11  Johannes Kanig  <kanig@adacore.com>

	* opt.ads New global boolean Frame_Condition_Mode to avoid
	referring to command line switch.
	* gnat1drv.adb (Gnat1drv) set frame condition mode when -gnatd.G
	is present, and disable Code generation in that case. Disable
	ALI file generation when switch is *not* present.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Perform the
	pre-analysis on a copy of the expression, to prevent downstream
	visbility issues involving operators and instantiations.

2013-04-11  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: Reservation and documentation for -gnatd.G switch.
	* gnat1drv.adb (Adjust_Global_Switches) Take into account -gnatd.G
	switch, and set ALI file generation accordingly.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb, exp_dist.adb: Minor reformatting.
	* gnat_rm.texi, gnat_ugn.texi: -020 Add documentation clarifying that
	check names introduced with pragma Check_Name are suppressed by -gnatp.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi, projects.texi: Move chapter "Tools Supporting Project
	Files" from projects.texi to gnat_ugn.texi.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2013-04-11  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Allow missing body in Alfa
	mode.

2013-04-11  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Detect the
	allocation of an anonymous controlled object where the type of
	the context is named. Use the pool and finalization master of
	the named access type to allocate the object.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Remove most mentions of gprbuild.
	* projects.texi: Remove all mentions of asociative array
	attributes.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_attr.adb, gnat1drv.adb, prj-makr.adb,
	opt.ads, sem_ch13.adb: Minor reformatting.
	* debug.adb: Minor comment fix (remove junk .I doc).

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.ads, exp_dist.adb, exp_dist.ads (Rtsfind.PCS_Version, case
	PolyORB): Bump to 6.
	(Exp_Dist.PolyORB_Support): Replace TC_Build with
	Build_Complex_TC.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* debug.adb, sem_prag.adb, par-ch2.adb, sem_attr.adb, gnat1drv.adb,
	exp_disp.adb, opt.ads, sem_ch13.adb (Relaxed_RM_Semantics): New flag.
	Enable this flag in CodePeer mode, and also via -gnatd.M.
	Replace some uses of CodePeer_Mode by Relaxed_RM_Semantics.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Check_Constrained_Object): If a subtype is created
	from the renamed object in an object renaming declaration with
	an unconstrained nominal subtype, freeze the created subtype at
	once, to prevent order of elaboration issues in the backend.

2013-04-11  Arnaud Charlet  <charlet@adacore.com>

	* exp_aggr.adb (Aggr_Size_OK): Refine setting of Max_Aggr_Size
	in particular in CodePeer mode.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Add documentation for backup copies of project
	files for gnatname.

2013-04-11  Tristan Gingold  <gingold@adacore.com>

	* gnat_rm.texi: Add Detect_BLocking in the ravenscar profile
	pragma list.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnatname.adb (Scan_Args): Recognize new switch --no-backup
	(Usage): Add line for --no-backup.
	* opt.ads (No_Backup): New Boolean variable, initialized to False.
	(Ada_Version_Default): Switch to Ada 2012 by default.
	* prj-makr.adb (Initialize): Create a backup for an existing
	project file if gnatname is not invoked with --no-backup.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Minor code improvement: replace various calls to
	Make_If_Statement in expansion with Make_Implicit_If_Statement.

2013-04-11  Eric Botcazou  <ebotcazou@adacore.com>

	* ali.adb: Fix minor typo.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Find_Enclosing_Context): Add missing case of
	N_Procedure_Call_Statement.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Minor comment fix.

2013-04-11  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: Remove comment for -gnatd.G.

2013-04-11  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Expand_Record_Equality.Suitable_Element):
	Remove recursive routine, replace with...
	(Expand_Record_Equality.Element_To_Compare): New subroutine,
	implement iterative search for next element to compare.
	Add explanatory comment in the tagged case.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: remove spurious warning from non-empty loop.
	* sem_ch8.adb (Enclosing_Instance): Make public to other routines
	in the package, in order to suppress redundant semantic checks
	on subprogram renamings in nested instantiations.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Minor reformatting.
	* sem_eval.adb (Why_Not_Static): Now issues continuation messages
	(Why_Not_Static): Test for aggregates behind string literals.
	* sem_eval.ads (Why_Not_Static): Now issues continuation messages.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_Concatenation): Wrap expansion in
	Expressions_With_Actions.

2013-04-11  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Base_Types_Match): For an actual type in an
	instance, the base type may itself be a subtype, so find true
	base type to determine compatibility.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* s-osprim-mingw.adb, sem_ch3.adb, sem_prag.adb, sem_util.adb.
	makeutl.adb, sem_ch8.adb: Minor reformatting.

2013-04-11  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Minor fixes for VMS.
	* ug_words: Minor addition: -gnato? => /OVERFLOW_CHECKS=?.

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* usage.adb (Usage): Minor edit to -gnatW message

2013-04-11  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb (Expand_N_Aggregate): Add circuit for handling
	others for string literal case. Also add big ??? comment about
	this new code, which should be redundant, but is not.
	* sem_eval.adb (Eval_Concatenation): Handle non-static case
	properly (Eval_String_Literal): Handle non-static literal properly

2013-03-20  Tobias Burnus  <burnus@net-b.de>

	* i-fortra.ads: Update comment, add Ada 2012's optional
	Star and Kind data types for enhanced interoperability.

2013-03-16  Eric Botcazou  <ebotcazou@adacore.com>

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

2013-03-08  Cesar Strauss  <cestrauss@gmail.com>

	PR ada/52123
	* seh_init.c (Raise_From_Signal_Handler): Declare as no-return.
	(__gnat_SEH_error_handler): Likewise.  Remove final return.

2013-03-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Attribute_to_gnu): Abort instead of erroring
	out for an unimplemented attribute.

2013-03-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_field): Remove the wrapper around
	a misaligned integral type if a size is specified for the field.

2013-03-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Raise_Error_to_gnu) <CE_Index_Check_Failed>:
	Record the unpadded type of the index type on the RCI stack.

2013-03-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (emit_range_check): Assert that the range type
	is a numerical type and remove useless local variables.

2013-02-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h: Back out change accidentally committed.

2013-02-21  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/56258
	* gnat-style.texi (@title): Remove @hfill.
	* projects.texi: Avoid line wrapping inside of @pxref or @xref.

2013-02-14  Rainer Emrich  <rainer@emrich-ebersheim.de>

	PR target/52123
	* tracebak.c: Cast from pointer via FARPROC.

2013-02-07  Simon Wright  <simon@pushface.org>

	PR target/50678
	* init.c (__darwin_major_version): New function for x86-64/Darwin.
	(__gnat_adjust_context_for_raise) [Darwin]: Disable the workaround
	on Darwin 12 and above.

2013-02-06  Rainer Emrich  <rainer@emrich-ebersheim.de>

	PR target/52123
	* adaint.c (__gnat_check_OWNER_ACL): Cast from pointer via
	SECURITY_DESCRIPTOR *
	(__gnat_set_OWNER_ACL): Cast from DWORD to ACCESS_MODE
	(__gnat_portable_spawn): Fix cast to char* const*
	(add_handle): Cast from pointer via void **
	(add_handle): Cast from pointer via int *
	(__gnat_locate_exec_on_path): Cast from pointer via TCHAR *
	(__gnat_locate_exec_on_path): Cast from pointer via char *
	* initialize.c (append_arg): Cast from pointer via LPWSTR
	(__gnat_initialize): Cast from pointer via LPWSTR
	* seh_init.c (__gnat_map_SEH): Cast from pointer via FARPROC

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* gcc-interface/Make-lang.in: Enable System.Stack_Checking.Operations
	target pairs on VxWorks 5 only.

2013-02-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2013-02-06  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb (Process_Aggregated_Projects): Use a new project
	node tree for each project tree rooted at an aggregated project.

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Is_Interface_Conversion): New routine.
	(Object_Access_Level): Detect an interface conversion
	that has been rewritten into a different construct. Use the
	original form of the conversion to find the access level of
	the operand.

2013-02-06  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Has_Pragma_No_Inline): New flag using Flag201.
	(Has_Pragma_No_Inline): Declare and mark as inline.
	(Set_Has_Pragma_No_Inline): Likewise.
	* einfo.adb (Has_Pragma_No_Inline): New function.
	(Set_Has_Pragma_No_Inline): New procedure.
	(Write_Entity_Flags): Handle Has_Pragma_No_Inline.
	* snames.ads-tmpl (Name_No_Inline): New pragma-related name.
	(Pragma_Id): Add Pragma_No_Inline value.
	* par-prag.adb (Prag): Handle Pragma_Inline.
	* sem_prag.adb (Inline_Status): New enumeration type.
	(Process_Inline): Change Active parameter
	to Inline_Status and add support for suppressed inlining.
	(Analyze_Pragma) <Pragma_Inline>: Adjust to above change.
	<Pragma_Inline_Always>: Likewise.
	 <Pragma_No_Inline>: Implement new pragma No_Inline.
	(Sig_Flags): Add Pragma_No_Inline.
	* gnat_rm.texi (Implementation Defined Pragmas): Add No_Inline.
	* gnat_ugn.texi (Switches for gcc): Mention Pragma No_Inline.

2013-02-06  Pascal Obry  <obry@adacore.com>

	* s-osprim-mingw.adb (Clock): Make sure we copy all data locally
	to avoid interleaved modifications that could happen from another
	task calling Get_Base_Data.
	(Get_Base_Data): Make it a critical section. Avoid updating if another
	task has already done it.

2013-02-06  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_prag.adb: Minor reformatting.

2013-02-06  Pascal Obry  <obry@adacore.com>

	* s-tasloc.ads: Set System.Task_Lock to preelaborate.

2013-02-06  Eric Botcazou  <ebotcazou@adacore.com>

	* snames.ads-tmpl (Name_Loop_Optimize, Name_No_Unroll,
	Name_Unroll, Name_No_Vector, Name_Vector): New pragma-related
	names.
	(Pragma_Id): Add Pragma_Loop_Optimize value.
	* par-prag.adb (Prag): Handle Pragma_Loop_Optimize.
	* sem_prag.adb (Check_Loop_Invariant_Variant_Placement): Rename to...
	(Check_Loop_Pragma_Placement): ...this.
	(Analyze_Pragma)
	<Pragma_Loop_Invariant>: Adjust to above renaming.
	<Loop_Variant>: Likewise.
	 <Pragma_Loop_Optimize>: Implement new pragma Loop_Optimize.
	(Sig_Flags): Add Pragma_Loop_Optimize.
	* gnat_rm.texi (Implementation Defined Pragmas): Add Loop_Optimize.
	* gnat_ugn.texi (Vectorization of loops): Mention Loop_Optimize.

2013-02-06  Robert Dewar  <dewar@adacore.com>

	* osint.ads: Minor fix of typo.

2013-02-06  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: gnatmetric: update the documentation of
	complexity metrics for Ada 2012.

2013-02-06  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_Secondary_DT): Code cleanup:
	remove useless initialization.

2013-02-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Discriminant_Constraints): Do not
	generate overflow checks on a discriminant expression if the
	discriminant constraint is applied to a private type that has
	a full view, because the check will be applied when the full
	view is elaborated.  Removing the redundant check is not just
	an optimization, but it prevents spurious assembler errors,
	because of the way the backend generates names for expressions
	that require overflow checking.

2013-02-06  Pascal Obry  <obry@adacore.com>

	* s-osprim-mingw.adb: Removes workaround for an old GNU/Linker
	limitation on Windows.
	(DA): Removed.
	(LIA): Removed.
	(LLIA): Removed.
	(TFA): Removed.
	(BTA): Removed.
	(BMTA): Removed.
	(BCA): Removed.
	(BMCA): Removed.
	(BTiA): Removed.
	(Clock): Use variable corresponding to access.
	(Get_Base_Time): Likewise.
	(Monotonic_Clock): Likewise.

2013-02-06  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): When gnatmake is called with a project
	file, do not invoke gnatbind with -I-.
	* makeutl.adb (Create_Binder_Mapping_File): Rewrite function. Get
	the infos from all the sources.

2013-02-06  Ed Schonberg  <schonberg@adacore.com>

	* snames.ads-tmpl: Add Name_Overriding_Renamings and pragma
	Overriding_Renamings.
	* par-prag.adb: Recognize pragma Overriding_Renamings.
	* opt.ads (Overriding_Renamings): flag to control compatibility
	mode with Rational compiler, replaces Rational_Profile flag.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): When
	Overriding_Renamings is enabled, accept renaming declarations
	where the new subprogram renames and overrides a locally inherited
	operation. Improve error message for some illegal renamings.
	* sem_prag.adb (Analyze_Pragma): Add case for Overriding_Renamings.
	(Set_Rational_Profile): The Rational_Profile enables
	Overriding_Renamings, Implicit_Packing, and Use_Vads_Size.

2013-02-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb: Set parent of copied aggregate component, to
	prevent infinite loop.

2013-02-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_ch10.adb: Minor reformatting.
	* exp_disp.adb: Minor comment update.
	* comperr.ads, osint.ads, rtsfind.adb, sem_prag.adb: Minor addition of
	No_Return pragmas.

2013-02-06  Thomas Quinot  <quinot@adacore.com>

	* targparm.ads, sem_ch13.adb (Support_Nondefault_SSO): New target
	parameter, defaulted to False for now, indicates targets where
	non-default scalar storage order may be specified.

2013-02-06  Thomas Quinot  <quinot@adacore.com>

	* sprint.adb (Write_Itype): Treat E_Record_Subtype_With_Private
	same as E_Record_Subtype.  Display E_Class_Wide_Subtype as
	subtype, not type.

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Complete_Private_Subtype): Inherit the
	Has_Unknown_Discriminants from the full view of the base type.

2013-02-06  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c: Remove useless includes (sys/stat.h, adaint.h)
	Enclosing debugging functions within #ifndef inhibit_libc to
	support builds without full C headers.

2013-02-06  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi: Add a minimal example of Scalar_Storage_Order.

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch10.adb (Install_Limited_Withed_Unit): Add a missing
	check to detect a parent-child relationship between two units in
	order to correctly bypass the installation of a limited view. In
	other words, the comment on the intended usage of the check was
	correct, but the code itself did not reflect the behavior.

2013-02-06  Javier Miranda  <miranda@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not generate the
	runtime check on assignment to tagged types if compiling with checks
	suppressed.

2013-02-06  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, checks.adb, sem_ch12.adb, sem_res.adb, prj-conf.adb,
	s-os_lib.adb: Minor reformatting

2013-02-06  Vincent Celier  <celier@adacore.com>

	* ug_words: Add -gnateY = /IGNORE_STYLE_CHECKS_PRAGMAS.

2013-02-06  Ed Schonberg  <schonberg@adacore.com>

	* snames.ads-tmpl: Add Name_Rational and pragma Rational.
	* par-prag.adb: Recognize pragma Rational.
	* opt.ads (Rational_Profile): flag to control compatibility mode
	with Rational compiler.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): When Rational profile
	is enable, accept renaming declarations where the new subprogram
	and the renamed entity have the same name.
	* sem_prag.adb (analyze_pragma): Add pragma Rational, and recognize
	Rational as a profile.

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_Loop_Entry_Attributes): When
	dealing with a for loop that iterates over a subtype indication
	with a range, use the low and high bounds of the subtype.

2013-02-06  Nicolas Roche  <roche@adacore.com>

	* s-os_lib.adb (Normalize_Arguments): Arguments containing tabs should
	be quoted

2013-02-06  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Process_Project_And_Apply_Config): New variable
	Conf_Project.  New recursive procedure Check_Project to find a non
	aggregate project and put its Project_Id in Conf_Project. Fails if
	no such project can be found.
	(Get_Or_Create_Configuration_File): New parameter Conf_Project.
	 (Do_Autoconf): Use project directory of project Conf_Project to store
	the generated configuration project file.
	* prj-conf.ads (Get_Or_Create_Configuration_File): New parameter
	Conf_Project.

2013-02-06  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Actuals): Generate a read
	reference for out-mode parameters in the cases specified by
	RM 6.4.1(12).

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Resolve_Attribute): Do not resolve the prefix of
	Loop_Entry, instead wait until the attribute has been expanded. The
	delay ensures that any generated checks or temporaries are inserted
	before the relocated prefix.

2013-02-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Code clean up.

2013-02-06  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Discriminant_Check): Look for discriminant
	constraint in full view of private type when needed.
	* sem_ch12.adb (Validate_Array_Type_Instance): Specialize
	previous patch to components types that are private and without
	discriminants.

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Find_Enclosing_Context): Recognize
	a simple return statement as one of the cases that require special
	processing with respect to temporary controlled function results.
	(Process_Transient_Object): Do attempt to finalize a temporary
	controlled function result when the associated context is
	a simple return statement.  Instead, leave this task to the
	general finalization mechanism.

2013-02-06  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads: Minor reformatting.
	(Status_Flag_Or_Transient_Decl): Add ??? comment.

2013-02-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Expression_With_Actions): Rewritten. This
	routine should be able to properly detect controlled transient
	objects in its actions and generate the appropriate finalization
	actions.
	* exp_ch6.adb (Enclosing_Context): Removed.
	(Expand_Ctrl_Function_Call): Remove local subprogram and
	constant. Use routine Within_Case_Or_If_Expression to determine
	whether the lifetime of the function result must be extended to
	match that of the context.
	* exp_util.ads, exp_util.adb (Within_Case_Or_If_Expression): New
	routine.

2013-02-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Array_Type_Instance): Extend check
	for subtype matching of component type of formal array type,
	to avoid spurious error when component type is a separate actual
	in the instance, and there may be a discrepancy between private
	and full view of component type.

2013-02-06  Robert Dewar  <dewar@adacore.com>

	* s-dim.ads, clean.adb: Minor reformatting.

2013-02-06  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Undo previous patch.
	(Can_Split_Unconstrained_Function): Only split the inlined function if
	the compiler generates the code of its body.

2013-02-06  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb, sem_ch3.adb, exp_attr.adb, sem_prag.adb, sem_ch6.adb,
	exp_intr.adb, exp_dist.adb, sem_ch13.adb: Internal clean up for
	N_Pragma nodes.

2013-02-06  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor text updates for pragma Warning.

2013-02-06  Geert Bosch  <bosch@adacore.com>

	* s-multip.adb (Number_Of_CPUs): Short-circuit in case of
	CPU'Last = 1.

2013-02-06  Vincent Celier  <celier@adacore.com>

	* clean.adb (Delete): On VMS use host notation to delete all files.

2013-02-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_ch6.adb, prj-conf.adb, erroutc.adb: Minor
	reformatting.

2013-02-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Check_For_Primitive_Subprogram): Test for
	the special case of a user-defined equality that overrides
	the predefined equality of a nonderived type declared in a
	declarative part.
	* sem_util.adb (Collect_Primitive_Operations): Add test for
	Is_Primitive when looping over the subprograms following a type,
	to catch the case of primitives such as a user-defined equality,
	which otherwise won't be found when the type is not a derived
	type and is declared in a declarative part.

2013-02-06  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Check_Target): Always return True when Target
	is empty (Get_Or_Create_Configuration_File.Get_Project_Target):
	New procedure to get the value of attribute Target in the main
	project.
	(Get_Or_Create_Configuration_File.Do_Autoconf): No
	need to get the value of attribute Target in the main project.
	(Get_Or_Create_Configuration_File): Call Get_Project_Target and
	use the target fom this call.

2013-02-06  Eric Botcazou  <ebotcazou@adacore.com>

	* erroutc.adb (Validate_Specific_Warning): Do not issue the
	warning about an ineffective Pragma Warnings for -Wxxx warnings.
	* sem_prag.adb (Analyze_Pragma) <Warnings>: Accept -Wxxx warnings.
	* gnat_rm.texi (Pragma Warnings): Document coordination with
	warnings of the GCC back-end.

2013-02-06  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not build the body
	of an inlined function if we do not generate code for the function.

2013-02-06  Pascal Obry  <obry@adacore.com>

	* s-os_lib.adb (Locate_Exec_On_Path): Call Normalize_Pathname
	with Resolve_Links set to False.

2013-02-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c: Include diagnostic-core.h.
	(gnat_to_gnu_entity) <E_Array_Type>: Sorry if Reverse_Storage_Order
	is set on the entity.
	<E_Record_Type>: Likewise.
	* gcc-interface/Make-lang.in (ada/decl.o): Add $(DIAGNOSTIC_CORE_H).

2013-01-29  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Fixed typos. Minor edits.

2013-01-29  Bob Duff  <duff@adacore.com>

	* a-convec.adb: Minor reformatting.

2013-01-29  Pascal Obry  <obry@adacore.com>

	* tempdir.adb, tempdir.ads (Use_Temp_Dir): Set wether to use the temp
	directory.

2013-01-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Preserve loop
	identifier only if it comes from source.
	(Expand_N_Loop_Statement): If the domain of iteration is an
	enumeration type with a representation clause, remove from
	visibility the loop identifier before rewriting the loop as a
	block with a declaration for said identifier.
	* sem_util.adb (Remove_Homonym): Handle properly the default case.

2013-01-29  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb: Minor comment spelling fix.

2013-01-29  Pascal Obry  <obry@adacore.com>

	* prj-proc.adb (Process_Expression_Variable_Decl): Prepend
	Project_Path to current environment.

2013-01-29  Thomas Quinot  <quinot@adacore.com>

	* sprint.adb (Sprint_Node_Actual): Output freeze nodes for
	itypes even if Dump_Freeze_Null is not set.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor reformatting.
	* s-rident.ads: Minor comment fixes.

2013-01-29  Pascal Obry  <obry@adacore.com>

	* prj-env.ads, prj-env.adb (Add_Directories): Add parameter to
	control if the path is prepended or appended.

2013-01-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): An expression
	function declaration is not a subprogram declaration, and thus
	cannot appear in a protected definition.

2013-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Insert_Actions): When new
	actions come from the expression of the expression with actions,
	then they must be added to the list of existing actions.

2013-01-29  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration) <Private_Kind>: For
	the subtype of a constrained private type with discriminants
	that has got a full view, show that the completion is a clone
	of the full view.

2013-01-29  Javier Miranda  <miranda@adacore.com>

	* errout.ads, errout.adb (Get_Ignore_Errors): New subprogram.
	* opt.ads (Warn_On_Overlap): Update documentation.
	* sem_aggr.adb (Resolve_Aggregate, Resolve_Extension_Aggregate):
	Check function writable actuals.
	* sem_ch3.adb (Build_Derived_Record_Type,
	Record_Type_Declaration): Check function writable actuals.
	* sem_ch4.adb (Analyze_Range): Check function writable actuals.
	* sem_ch5.adb (Analyze_Assignment): Remove code of the initial
	implementation of AI05-0144.
	* sem_ch6.adb (Analyze_Function_Return,
	(Analyze_Procedure_Call.Analyze_Call_And_Resolve): Remove code
	of the initial implementation of AI05-0144.
	* sem_res.adb (Resolve): Remove code of the initial implementation.
	(Resolve_Actuals): Call Check_Function_Writable_Actuals and remove call
	of the initial implementation.
	(Resolve_Arithmetic_Op, Resolve_Logical_Op,
	Resolve_Membership_Op): Check function writable actuals.
	* sem_util.ad[sb] (Actuals_In_Call): Removed
	(Check_Order_Dependence): Removed (Save_Actual): Removed
	(Check_Function_Writable_Actuals): New subprogram.
	* usage.adb (Usage): Update documentation.
	* warnsw.adb (Set_Warning_Switch): Enable warn_on_overlap when
	setting all warnings.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* a-calend-vms.adb: Minor comment fix.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* mlib-utl.adb, gnatlink.adb: Avoid reference to ASCII.Back_Slash
	because of casing issues.
	* sem_util.ads: Minor comment fix.
	* style.adb (Check_Identifier): Set proper casing for entities
	in ASCII.
	* styleg.adb: Minor comment improvement.
	* stylesw.ads (Style_Check_Standard): Fix bad comments.

2013-01-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb: Add the grammar for pragmas Abstract_State and Global.
	(Analyze_Pragma): Push the scope of the related subprogram and install
	its formals once before starting the analysis of the [moded] global
	list.

2013-01-29  Pascal Obry  <obry@adacore.com>

	* prj-proc.adb (Process_Expression_Variable_Decl): Always handle
	relative paths in Project_Path as relative to the aggregate
	project location. Note that this was what was documented.

2013-01-29  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: For "gnat stub -P ...", do not check the naming
	scheme for Ada, when Ada is not a language for the project.

2013-01-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): Inherit
	Is_Generic_Actual_Type flag in a nested instance.
	* sem_ch12.adb (Restore_Private_Views): Preserve
	Is_Generic_Actual_Type flag if actual is a Generic_Actual_Type
	of an enclosing instance.
	* sem_util.adb (Corresponding_Generic_Type): Handle generic actual
	which is an actual of an enclosing instance.
	* sem_type.adb (Real_Actual): If a generic_actual_type is the
	formal of an enclosing generic and thus renames the corresponding
	actual, use the actual of the enclosing instance to resolve
	spurious ambiguities in instantiations when two formals are
	instantiated with the same actual.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document all Ada 2005 and Ada 2012 pragmas as
	being available as implementation-defined pragmas in earlier
	versions of Ada.

2013-01-29  Vincent Celier  <celier@adacore.com>

	* clean.adb (Delete): On VMS, delete all versions of the file.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* par-ch6.adb (No_Constraint_Maybe_Expr_Func): New procedure.
	* par-util.adb (No_Constraint): Undo special handling, moved
	to par-ch6.adb.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* aspects.ads: Aspect Warnings is implementation defined Add
	some other missing entries to impl-defined list Mark Warnings
	as GNAT pragma in main list.
	* sem_ch8.adb: Process aspects for all cases of renaming
	declarations.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Analyze_Function_Call): Set In_Assertion flag.
	* sem_elab.adb (Check_Internal_Call_Continue): Do not issue
	warnings about possible elaboration error if call is within
	an assertion.
	* sinfo.ads, sinfo.adb (In_Assertion): New flag in N_Function_Call node.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* a-calend-vms.adb, g-eacodu-vms.adb, g-trasym-vms-alpha.adb,
	* s-auxdec-vms-ia64.adb, s-mastop-vms.adb, s-osprim-vms.adb,
	s-tasdeb-vms.adb: Replace pragma Interface by pragma Import.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* opt.ads (Ignore_Style_Checks_Pragmas): New flag.
	* par-prag.adb (Par, case Style_Checks): Recognize
	Ignore_Style_Checks_Pragmas.
	* sem_prag.adb (Analyze_Pragma, case Style_Checks): Recognize
	Ignore_Style_Checks_Pragmas.
	* switch-c.adb: Recognize -gnateY switch.
	* usage.adb: Add documentation for "-gnateY".
	* vms_data.ads: Add IGNORE_STYLE_CHECKS_PRAGMAS (-gnateY).

2013-01-29  Vincent Celier  <celier@adacore.com>

	* clean.adb (Clean_Executables): Add Sid component when calling
	Queue.Insert.
	* make.adb: When inserting in the Queue, add the Source_Id
	(Sid) when it is known (Start_Compile_If_Possible): When the
	Source_Id is known (Sid), get the path name of the ALI file
	(Full_Lib_File) from it, to avoid finding old ALI files in other
	object directories.
	* makeutl.ads (Source_Info): New Source_Id component Sid in
	Format_Gnatmake variant.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document -gnateY.

2013-01-29  Doug Rupp  <rupp@adacore.com>

	* s-osinte-vms.ads, s-taprop-vms.adb, system-vms_64.ads,
	system-vms-ia64.ads: Replace pragma Interface by pragma Import.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* atree.ads, atree.adb (Node30): New function.
	(Set_Node30): New procedure.
	(Num_Extension_Nodes): Change to 5 (activate new fields/flags).
	* atree.h: Add macros for Field30 and Node30.
	* einfo.ads, einfo.adb: Move some fields to avoid duplexing.
	* treepr.adb (Print_Entity_Information): Print fields 30-35.

2013-01-29  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Interface): Consider to
	be a violation of No_Obsolescent_Features even in Ada 95. Also
	generates a warning in -gnatwj mode.
	(Analyze_Pragma, case Interface_Name): Generates a warning in -gnatwj
	mode.
	* gnat_ugn.texi: Additional documentation on -gnatwj and pragma
	Interface[_Name].

2013-01-29  Vincent Celier  <celier@adacore.com>

	* snames.ads-tmpl: Add new standard name Trailing_Switches.

2013-01-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Controlling_Type): If a designated type T
	of an anonymous access type is a limited view of a tagged type,
	it can be a controlling type only if the subprogram is in the
	same scope as T.

2013-01-29  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Use the project where the config pragmas file is
	declared to get its path.

2013-01-29  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New attribute Linker'Trailing_Switches.

2013-01-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <N_Expression_With_Actions>: Do
	not translate the Etype of the node before translating the Actions.

2013-01-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Pragma_to_gnu) <Name_Space>: Use optimize_size
	instead of optimize and adjust warning message.
	(Compilation_Unit_to_gnu): Process pragmas preceding the unit.

2013-01-22  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/gigi.h (ADT_unhandled_except_decl,
	ADT_unhandled_others_decl): New.
	(unhandled_others_decl, unhandled_except_decl): Define.
	* gcc-interface/trans.c: Include common/common-target.h.
	(gigi): Initialize them.
	(Subprogram_Body_to_gnu): On SEH targets, wrap the body of the main
	function in a try/catch clause.

2013-01-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (COMMON_ADAFLAGS): Remove -gnata.
	(CHECKING_ADAFLAGS): New.
	(ALL_ADAFLAGS): Include CHECKING_ADAFLAGS.

2013-01-10  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/config-lang.in (boot_language_boot_flags): Delete.
	* gcc-interface/Make-lang.in (BOOT_ADAFLAGS): Likewise.

2013-01-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Adjust
	comment about type extension with discriminants.
	<E_Record_Subtype>: Remove useless test and reorder conditions.
	(elaborate_entity) <E_Record_Subtype>: Likewise.

2013-01-07  Richard Biener  <rguenther@suse.de>

	PR ada/864
	* gcc-interface/Make-lang.in (ada.install-common): Always apply
	program_transform_name.

2013-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatvsn.ads (Current_Year): Bump to 2013.

2013-01-06  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_field): Emit a specialized
	diagnostic for component size mismatch wrt volatile requirements.
	Add a gcc_unreachable() at the end of the checks for size.  Split
	the check on volatile for positions into one check on atomic and
	a subsequent one on volatile.

2013-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (elaborate_entity) <E_Record_Type>: Delete.

2013-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <discrete_type>: Do not
	pack the field of the record type made for a misaligned type.

2013-01-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (annotate_value) <COMPONENT_REF>: Be prepared
	for discriminants inherited from parent record types.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* warnsw.adb: Minor fixes to -gnatw.d handling.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, atree.adb: Enlarge entities to make 63 more flags, 6 more
	fields.

2013-01-04  Joel Brobecker  <brobecker@adacore.com>

	* gnat_ugn.texi: Fix typo.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document alignment choice for subtypes.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* validsw.ads: Minor fix to comment.

2013-01-04  Doug Rupp  <rupp@adacore.com>

	* Makefile.rtl (GNATRTL_NONTASKING_OBJS,
	GNATRTL_ALTIVEC_OBJS): Factor g-al* objects.
	* gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Add g-al* sources.
	(GNATRTL_ALTIVEC_OBJS): Override to null for VMS.
	Rename leon vxworks toolchain as leon-wrs-vxworks.
	* gcc-interface/Make-lang.in: Update dependencies

2013-01-04  Pascal Obry  <obry@adacore.com>

	* prj.ads (For_Each_Source): Add Locally_Removed parameter.
	(Source_Iterator): Add Locally_Removed field.
	* prj.adb (For_Each_Source): Ignore Locally_Removed files if needed.
	(Next): Likewise.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb: Minor reformatting.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Insert_Valid_Check): Fix handling of renamed
	packed array element.
	* exp_ch4.adb (Expand_Concatenate): Fix some missing parent
	fields in generated code.
	* exp_util.adb (Side_Effect_Free): Improve detection of cases
	needing renaming.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Clean up order of N_xxx subtypes

2013-01-04  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Check_Target): Allow --autoconf= with no target.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* types.ads, prj-conf.adb, par-tchk.adb: Minor reformatting.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* par-ch6.adb (P_Subprogram): Better handling of missing IS
	after expression function.
	* par-util.adb (No_Constraint): Improve handling to avoid bad warnings.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* exp_util.ads, exp_util.adb (Insert_Actions): In expression with
	actions case, new actions are appended to the sequence rather than
	prepended.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document -gnatw.d/w.D (does no apply in VMS mode).
	* usage.adb: Add lines for -gnatw.d/w.D switches.
	* warnsw.adb: Minor fixes (some missing cases of setting
	Warning_Doc_Switch). Reject -gnatw.d and -gnatw.D in VMS mode.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Make sure scope suppress
	is restored on exit.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Document -gnateF (check overflow for predefined Float).

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Remove incorrect
	prevention of call to Apply_Type_Conversion_Checks, which resulted
	in missing check flags in formal mode.

2013-01-04  Vincent Celier  <celier@adacore.com>

	* makeutl.ads (Db_Switch_Args): New table used by gprbuild.
	* prj-conf.adb (Check_Builder_Switches): Check for switches
	--config= (Get_Db_Switches): New procedure to get the --db
	switches so that they are used when invoking gprconfig in
	auto-configuration.
	(Do_Autoconf): When invoking gprconfig, use the --db switches, if any.

2013-01-04  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb: Minor reformatting.

2013-01-04  Vincent Celier  <celier@adacore.com>

	* makeutl.ads (Root_Environment): New variable, moved rom
	gprbuild (Load_Standard_Base): New Boolean variable, moved
	from gprbuild.
	* prj-conf.adb (Check_Builder_Switches): New procedure to check
	for switch --RTS in package Builder. If a runtime specified
	by --RTS is a relative path name, but not a base name, then
	find the path on the Project Search Path.
	(Do_Autoconf): Call Check_Builder_Switches.
	(Locate_Runtime): New procedure, moved from gprbuild, to get the
	absolute paths of runtimes when they are not specified as a base name.
	* prj-conf.ads (Locate_Runtime): New procedure, moved from gprbuild.

2013-01-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Private_Derived_Type): Set
	Has_Private_Ancestor on type derived from an untagged private
	type whose full view has discriminants
	* sem_aggr.adb (Resolve_Record_Aggregate): Reject non-extension
	aggregate for untagged record type with private ancestor.

2013-01-04  Thomas Quinot  <quinot@adacore.com>

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

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* table.adb: Minor reformatting.

2013-01-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Check_Redundant_Withs): A with_clause that does
	not come from source does not generate a warning for redundant
	with_clauses.

2013-01-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb, aspects.ads: Add Aspect_Global to all relevant tables.
	* par-prag.adb: Add pragma Global to the list of pragmas that
	do not need special processing by the parser.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Convert aspect
	Global into a pragma without any form of legality checks. The
	work is done by Analyze_Pragma. The aspect and pragma are both
	marked as needing delayed processing.  Insert the corresponding
	pragma of aspect Abstract_State in the visible declarations of the
	related package.
	(Check_Aspect_At_Freeze_Point): Aspect Global
	does not need processing even though it is marked as delayed.
	Alphabetize the list on aspect names.
	* sem_prag.adb: Add a value for pragma Global in table Sig_Flags.
	(Analyze_Pragma): Add ??? comment about the grammar of pragma
	Abstract_State.  Move the error location from the pragma to the
	state to improve the quality of error placement.  Add legality
	checks for pragma Global.
	* snames.ads-tmpl Add the following specially recognized names

2013-01-04  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch3.adb: Fix minor typo.

2013-01-04  Ed Schonberg  <schonberg@adacore.com>

	* par-ch13.adb (Aspect_Specifications_Present): In Strict mode,
	accept an aspect name followed by a comma, indicating a defaulted
	boolean aspect.

2013-01-04  Joel Brobecker  <brobecker@adacore.com>

	* gnat_ugn.texi: Document procedure to codesign GDB on Darwin.
	Update doc on gnattest --separates switch.

2013-01-04  Thomas Quinot  <quinot@adacore.com>

	* s-chepoo.ads: Minor reformatting.

2013-01-04  Arnaud Charlet  <charlet@adacore.com>

	* usage.adb: Remove mention of -gnatN in usage.

2013-01-04  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb, gnatcmd.adb, exp_util.adb, table.adb, sem_prag.adb,
	freeze.adb, sem_ch4.adb, sem_warn.adb, opt.ads, exp_aggr.adb,
	prj-conf.adb, sem_ch13.adb: Minor reformatting.

2013-01-04  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads: Minor documentation update.

2013-01-04  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb, einfo.adb (Analyze_Object_Declaration): Do not set Ekind
	before resolving initialization expression.

2013-01-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Generate_Index_Checks): Delay the generation of
	the check for an indexed component where the prefix mentions
	Loop_Entry until the attribute has been properly expanded.
	* exp_ch5.adb (Expand_Loop_Entry_Attributes): Perform minor
	decoration of the constant that captures the value of Loop_Entry's
	prefix at the entry point into a loop.	Generate index checks
	for an attribute reference that has been transformed into an
	indexed component.

2013-01-04  Thomas Quinot  <quinot@adacore.com>

	* exp_prag.adb, exp_util.adb, exp_util.ads, freeze.adb, exp_aggr.adb,
	sem_ch13.adb (Exp_Aggr.Collect_Initialization_Statements): Nothing to
	do if Obj is already frozen.
	(Exp_Util.Find_Init_Call): Rename to...
	(Exp_Util.Remove_Init_Call): New subprogram, renamed from
	Find_Init_Call.  Remove the initialization call from the enclosing
	list if found, and if it is from an Initialization_Statements
	attribute, reset it.
	(Exp_Util.Append_Freeze_Action): Minor code reorganization.
	(Exp_Util.Append_Freeze_Actions): Ensure a freeze node has been
	allocated (as is already done in Append_Freeze_Action).
	(Freeze.Freeze_Entity): For an object with captured
	Initialization_Statements and non-delayed freezeing, unwrap the
	initialization statements and insert and them directly in the
	enclosing list.
	(Sem_Ch13.Check_Address_Clause): For an object
	with Initialization_Statements and an address clause, unwrap the
	initialization statements when moving them to the freeze actions.

2013-01-03  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, projects.texi, snames.ads-tmpl: Add package remote and
	corresponding attibutes.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb: Minor comment improvement.

2013-01-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb, aspects.ads: Add Aspect_Abstract_State to all the
	relevant tables.
	* einfo.ads, einfo.adb: Add Integrity_Level and Refined_State to
	the description of fields (Abstract_States): New routine.
	(Integrity_Level): New routine.
	(Has_Property): New routine.
	(Is_Input_State): New routine.
	(Is_Null_State): New routine.
	(Is_Output_State): New routine.
	(Is_Volatile_State): New routine.
	(Refined_State): New routine.
	(Set_Abstract_States): New routine.
	(Set_Integrity_Level): New routine.
	(Set_Refined_State): New routine.
	(Write_Field8_Name): Add proper output for E_Abstract_State.
	(Write_Field9_Name): Add proper output for E_Abstract_State.
	(Write_Field25_Name): Add proper output for E_Package.
	* lib-xref.ads: Add new letter for an abstract state.
	* par-prag.adb: Add pragma Abstract_State to the list of pragma
	that do not need special processing by the parser.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Convert
	aspect Abstract_State into a pragma without any form
	of legality checks. The work is done by Analyze_Pragma.
	(Check_Aspect_At_Freeze_Point): Aspect Abstract_State does not
	require delayed analysis.
	* sem_prag.adb: Add a value for pragma Abstract_State in table
	Sig_Flags.
	(Analyze_Pragma): Add legality checks for pragma
	Abstract_State. Analysis of individual states introduces a state
	abstraction entity into the visibility chain.
	* snames.ads-tmpl: Add new names for abstract state and
	integrity. Add new pragma id for abstract state.

2013-01-03  Bob Duff  <duff@adacore.com>

	* table.adb (Reallocate): Calculate new Length in
	Long_Integer to avoid overflow.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb, sinfo.ads, freeze.adb, sem_ch4.adb, exp_aggr.adb
	(Sem_Ch3.Analyze_Object_Declaration): Set Ekind early so that
	it is set properly when expanding the initialization expression.
	(Freeze.Check_Address_Clause): Transfer initialization expression
	to an assignment in the freeze actions, so that the object is
	initialized only after being elaborated by GIGI.
	(Sinfo (comments), Sem_Ch4.Analyze_Expression_With_Actions): Allow
	a Null_Statement as the expression in an Expression_With_Actions.
	(Exp_Aggr.Collect_Initialization_Statements): New subprogram
	shared by expansion of record and array aggregates, used to
	capture statements for an aggregate used to initalize an object
	into an Expression_With_Actions (which acts as a container for
	a list of actions).
	(Exp_Aggr.Convert_Aggr_In_Obj_Decl): Use the above to
	capture initialization statements, instead of the previously
	existing loop which left freeze nodes out of the capturing
	construct (causing out of order elaboration crashes in GIGI).
	(Exp_Aggr.Expand_Array_Aggregate):  Use the above to capture
	initialization statements (this was previously not done for
	arrays).  Also do not unconditionally prevent in place expansion
	for an object with address clause.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi, freeze.adb (Check_Component_Storage_Order): Check that
	a record extension has the same scalar storage order as the parent type.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Add comment.

2013-01-03  Vincent Celier  <celier@adacore.com>

	* prj.adb: Minor spelling error correction in comment.

2013-01-03  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (GNATCmd): If a single main has been specified
	as an absolute path, use its simple file name to find specific
	switches, instead of the absolute path.

2013-01-03  Javier Miranda  <miranda@adacore.com>

	* sem_warn.adb (Warn_On_Overlapping_Actuals): For overlapping
	parameters that are record types or array types generate warnings
	only compiling under -gnatw.i
	* opt.ads (Extensions_Allowed): Restore previous documentation.

2013-01-03  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Do_Autoconf): If Target is specified in the
	main project, but not on the command line, use the Target in
	the project to invoke gprconfig in auto-configuration.
	* makeutl.ads (Default_Config_Name): New constant String.

2013-01-03  Arnaud Charlet  <charlet@adacore.com>

	* usage.adb: Minor: fix typo in usage.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Analyze_Record_Representation_Clause): Reject
	an illegal component clause for an inherited component in a
	record extension.

2013-01-03  Emmanuel Briot  <briot@adacore.com>

	* xref_lib.adb (Parse_Identifier_Info): Fix handling of arrays, which
	have information in the ALI file for both the index and the component
	types.

2013-01-03  Emmanuel Briot  <briot@adacore.com>

	* projects.texi: Fix error in documenting the project path
	computed for an aggregate project.

2013-01-03  Javier Miranda  <miranda@adacore.com>

	* sem_warn.adb (Warn_On_Overlapping_Actuals): Adding documentation
	plus restricting the functionality of this routine to cover the
	cases described in the Ada 2012 reference manual. The previous
	extended support is now available under -gnatX.
	* s-tassta.adb (Finalize_Global_Tasks): Addition of a dummy
	variable to call Timed_Sleep.  Required to avoid warning on
	overlapping out-mode actuals.
	* opt.ads (Extensions_Allowed): Update documentation.

2013-01-03  Tristan Gingold  <gingold@adacore.com>

	* s-arit64.ads: Use Multiply_With_Ovflo_Check as __gnat_mulv64.
	* arit64.c: Removed
	* gcc-interface/Makefile.in: Remove reference to arit64.c.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* checks.adb, checks.ads (Apply_Address_Clause_Check): The check must
	be generated at the start of the freeze actions for the entity, not
	before (or after) the freeze node.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb (Exp_Aggr.Convert_Aggregate_In_Obj_Decl):
	Reorganize code to capture initialization statements in a block,
	so that freeze nodes are excluded from the captured block.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_ch11.adb: Minor reformatting.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_util.adb, einfo.adb, einfo.ads, freeze.adb, exp_aggr.adb,
	sem_ch13.adb (Einfo.Initialization_Statements,
	Einfo.Set_Initialization_Statements): New entity attribute
	for objects.
	(Exp_Util.Find_Init_Call): Handle case of an object initialized
	by an aggregate converted to a block of assignment statements.
	(Freeze.Check_Address_Clause): Do not clear Has_Delayed_Freeze
	even for objects that require a constant address, because the
	address expression might involve entities that have yet to be
	elaborated at the point of the object declaration.
	(Exp_Aggr.Convert_Aggregate_In_Obj_Decl): For a type that does
	not require a transient scope, capture the assignment statements
	in a block so that they can be moved down after elaboration of
	an address clause if needed.
	(Sem_Ch13.Check_Constant_Address_Clause.Check_Expr_Constants,
	case N_Unchecked_Conversion): Do not replace operand subtype with
	its base type as this violates a GIGI invariant if the operand
	is an identifier (in which case the etype of the identifier
	is expected to be equal to that of the denoted entity).

2013-01-03  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb (Denotes_Same_Object): Extend the
	functionality of this routine to cover cases described in the Ada 2012
	reference manual.

2013-01-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_elab.adb (Set_Elaboration_Constraint): Handle properly
	a 'Access attribute reference when the subprogram is called
	Initialize.

2013-01-03  Arnaud Charlet  <charlet@adacore.com>

	* s-tpobop.adb (PO_Do_Or_Queue): Refine assertion, since a
	select statement may be called from a controlled (e.g. Initialize)
	operation and have abort always deferred.

2013-01-03  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb, einfo.ads, einfo.adb: Minor code reorganization.

2013-01-03  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Exclude
	internal entities associated with interfaces and add minimum
	decoration to the defining entity of the generated wrapper to
	allow overriding interface primitives.
	* sem_disp.ads (Override_Dispatching_Operation): Addition of a
	new formal (Is_Wrapper).
	* sem_disp.adb (Override_Dispatching_Operation): When overriding
	interface primitives the new formal helps identifying that the
	new operation is not fully decorated.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* sem_ch7.adb, sem_ch10.adb, einfo.adb, einfo.ads, sem_ch12.adb,
	rtsfind.adb, sem_elab.adb, sem_ch4.adb, sem_ch8.adb
	(Einfo.Is_Visible_Child_Unit, Einfo.Set_Is_Visible_Child_Unit):
	Rename to Is_Visible_Lib_Unit, Set_Is_Visible_Lib_Unit, and
	update spec accordingly (now also applies to root library units).
	(Sem_Ch10.Analyze_Subunit.Analyze_Subunit_Context): Toggle above flag
	on root library units, not only child units.
	(Sem_Ch10.Install[_Limited]_Withed_Unit): Same.
	(Sem_Ch10.Remove_Unit_From_Visibility): Reset Is_Visible_Lib_Unit
	even for root library units.
	(Sem_Ch8.Find_Expanded_Name): A selected component form whose prefix is
	Standard is an expanded name for a root library unit.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_ch3.adb: Minor reformatting.

2013-01-03  Olivier Hainque  <hainque@adacore.com>

	* tracebak.c: Reinstate changes to support ppc-lynx178.

2013-01-03  Ed Schonberg  <schonberg@adacore.com>

	* atree.ads: Minor reformatting and documentation enhancement.

2013-01-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): If the object has
	a class-wide type and a renaming declaration is created for it,
	preserve entity chain, which already contains generated internal
	types. This ensures that freezing actions are properly generated
	for all objects declared subsequently in the same scope, and
	that debugging information is generated for them.
	* sem_util.adb, sem_util.ads (we): New debugging routine, to
	display entity chain of a given scope.

2013-01-03  Robert Dewar  <dewar@adacore.com>

	* exp_intr.adb: Minor reformatting.

2013-01-03  Robert Dewar  <dewar@adacore.com>

	* einfo.adb: Minor reformatting.

2013-01-03  Pascal Obry  <obry@adacore.com>

	* adaint.c, adaint.h (__gnat_get_module_name): Removed.
	(__gnat_is_module_name_supported): Removed.
	* s-win32.ads: Add some needed definitions.
	* g-trasym.ads: Update comments.

2013-01-03  Robert Dewar  <dewar@adacore.com>

	* layout.adb (Set_Composite_Alignment): Fix problems of
	interactions with Optimize_Alignment set to Space.

2013-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_disp.adb: Minor reformatting.

2013-01-02  Richard Biener  <rguenther@suse.de>

	PR bootstrap/55784
	* gcc-interface/Makefile.in: Add $(GMPINC) to includes.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Remove
	side effects from Tag_Arg early, doing it too late may cause a
	crash due to inconsistent Parent link.
	* sem_ch8.adb, einfo.ads: Minor reformatting.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Has_Independent_Components): New flag.
	* freeze.adb (Size_Known): We do not know the size of a packed
	record if it has atomic components, by reference type components,
	or independent components.
	* sem_prag.adb (Analyze_Pragma, case Independent_Components): Set new
	flag Has_Independent_Components.

2013-01-02  Yannick Moy  <moy@adacore.com>

	* opt.ads (Warn_On_Suspicious_Contract): Set to True by default.
	* usage.adb (Usage): Update usage message.

2013-01-02  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_is_module_name_supported): New constant.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Check_Array_Type): Reject an attribute reference on an
	array whose component type does not have a completion.

2013-01-02  Geert Bosch  <bosch@adacore.com>

	* a-nllcef.ads, a-nlcefu.ads, a-nscefu.ads: Make Pure.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb: Minor reformatting.

2013-01-02  Javier Miranda  <miranda@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): Remove dead code.

2013-01-02  Olivier Hainque  <hainque@adacore.com>

	* a-exctra.ads (Get_PC): New function.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_ch8.adb: Minor reformatting.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_ch7.adb: Minor reformatting.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): Do not crash on
	_Tag component.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb, targparm.adb, targparm.ads: Minor name change: add
	On_Target to Atomic_Sync_Default.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Warn_On_Known_Condition): Suppress warning for
	comparison of attribute result with constant
	* a-ststio.adb, s-direio.adb, s-rannum.adb: Remove unnecessary pragma
	Warnings (Off, "..");

2013-01-02  Yannick Moy  <moy@adacore.com>

	* sem_prag.ads: Minor correction of comment.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Package_Declaration): The first
	declaration in a nested package is dominated by the preceding
	declaration in the enclosing scope.

2013-01-02  Pascal Obry  <obry@adacore.com>

	* adaint.c, adaint.h (__gnat_get_module_name): Return the actual
	module containing a given address.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2013-01-02  Pascal Obry  <obry@adacore.com>

	* cstreams.c (__gnat_ftell64): New routine. Use _ftelli64 on
	Win64 and default to ftell on other platforms.
	(__gnat_fsek64): Likewise.
	* i-cstrea.ads: Add fssek64 and ftell64 specs.
	* s-crtl.ads: Likewise.
	* a-ststio.adb, s-direio.adb (Size): Use 64 bits version when required.
	(Set_Position): Likewise.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Generate X SCOs for default expressions in
	subprogram body stubs.	Do not generate any SCO for package,
	task, or protected body stubs.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Further improvement to ASIS mode for anonymous
	access to protected subprograms.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, vms_data.ads: Minor reformatting.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statement): Function
	form, returning value of Current_Dominant upon exit, for chaining
	purposes.
	(Traverse_Declarations_Or_Statement.Traverse_One, case
	N_Block_Statement): First statement is dominated by last declaration.
	(Traverse_Subprogram_Or_Task_Body): Ditto.
	(Traverse_Package_Declaration): First private
	declaration is dominated by last visible declaration.
	(Traverse_Sync_Definition): Ditto.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi: Restrict the requirement for Scalar_Storage_Order
	matching Bit_Order to record types only, since array types do not
	have a Bit_Order.

2013-01-02  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Remove documentation of -gnateO, which is an
	internal switch.
	* usage.adb: Indicate that -gnateO is an internal switch.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Add SCO generation for task types and single
	task declarations.
	* get_scos.adb: When adding an instance table entry for a
	non-nested instantiation, make sure the Enclosing_Instance is
	correctly set to 0.

2013-01-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Skip the special _Parent
	scope generated for subprogram inlining purposes while trying
	to locate the enclosing function.
	* sem_prag.adb (Analyze_Pragma): Preanalyze the boolean
	expression of pragma Postcondition when the pragma comes from
	source and appears inside a subprogram body.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* switch-c.adb, fe.h, back_end.adb: Enable generation of instantiation
	information in debug info unconditionally when using -fdump-scos,
	instead of relying on a separate command line switch -fdebug-instances.
	* gcc-interface/Make-lang.in: Update dependencies.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Additional refinement of predicate.

2013-01-02  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Remove incorrect spaces at end of descriptions
	of qualifiers for single switch.

2013-01-02  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Minor edits / wordsmithing in section on pragma
	Check_Float_Overflow.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sprint.adb (Sprint_Node_Actual): Do not add extra parens for
	a conditional expression (CASE or IF expression) that already
	has parens. Also omit ELSE keyword for an IF expression without
	an ELSE part.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Adjust back-end
	flag_debug_instances here, after front-end switches have been
	processed.

2013-01-02  Vincent Celier  <celier@adacore.com>

	* usage.adb: Minor reformatting.

2013-01-02  Arnaud Charlet  <charlet@adacore.com>

	* opt.ads: Fix typo.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Generate P decision SCOs for SPARK pragmas
	Assume and Loop_Invariant.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* vms_data.ads: Add entry for Float_Check_Valid (-gnateF).
	* ug_words: Add entry for Float_Check_Overflow.
	* usage.adb: Minor reformatting.
	* gnat_ugn.texi: Add documentation for -gnateF (Check_Float_Overflow).

2013-01-02  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Add documentation for switches -gnateA, -gnated,
	-gnateO=, -gnatet and -gnateV.
	* ug_words: Add qualifiers equivalent to -gnateA, -gnated,
	-gnatet and -gnateV.
	* usage.adb: Add lines for -gnatea, -gnateO and -gnatez.
	* vms_data.ads: Add new compiler qualifiers /ALIASING_CHECK
	(-gnateA), /DISABLE_ATOMIC_SYNCHRONIZATION (-gnated),
	/PARAMETER_VALIDITY_CHECK (-gnateV) and /TARGET_DEPENDENT_INFO
	(-gnatet).

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Implement Check_Float_Overflow.
	* opt.ads, opt.adb: Handle flags Check_Float_Overflow[_Config].
	* par-prag.adb: Add dummy entry for pragma Check_Float_Overflow.
	* sem_prag.adb: Implement pragma Check_Float_Overflow.
	* snames.ads-tmpl: Add entries for pragma Check_Float_Overflow.
	* switch-c.adb: Recognize -gnateF switch.
	* tree_io.ads: Update ASIS version number.
	* gnat_rm.texi: Add documentation of pragma Check_Float_Overflow.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* checks.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb,
	exp_disp.adb, exp_dist.adb, exp_intr.adb, exp_prag.adb, exp_util.adb,
	freeze.adb, gnat1drv.adb, inline.adb, layout.adb, lib-xref.adb,
	par-ch10.adb, par-labl.adb, par-load.adb, par-util.adb, restrict.adb,
	sem_ch13.adb, sem_ch4.adb, sem_ch6.adb, sem_dim.adb, sem_elab.adb,
	sem_res.adb, sem_warn.adb, sinput-l.adb: Add tags to warning messages.
	* sem_ch6.ads, warnsw.ads, opt.ads: Minor comment updates.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* err_vars.ads: Minor comment fix.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Refine predicate.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Minor comment fixes.
	* opt.ads: Minor comment additions.
	* exp_aggr.adb: Add tags to warning messages
	* exp_ch11.adb, exp_ch3.adb, exp_ch4.adb, exp_util.adb, sem_aggr.adb,
	sem_attr.adb, sem_case.adb, sem_cat.adb, sem_ch3.adb, sem_ch4.adb,
	sem_ch5.adb, sem_disp.adb, sem_dist.adb, sem_elab.adb, sem_eval.adb,
	sem_intr.adb, sem_mech.adb, sem_prag.adb, sem_res.adb, sem_util.adb,
	sem_warn.adb: Add tags to warning messages

2013-01-02  Doug Rupp  <rupp@adacore.com>

	* init.c [VMS] Remove subtest on reason mask for ACCVIO that is a C_E.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Recover source name for renamed packagea.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* errout.adb (Set_Msg_Insertion_Warning): Correct typo causing
	tests to fail if insertion sequence is at end of message string.
	* opt.ads: Minor comment fixes and additions.
	* sem_ch7.adb, sem_ch8.adb, sem_ch9.adb, sem_ch10.adb, sem_ch11.adb,
	sem_ch12.adb, sem_ch13.adb: Add tags to warning messages.
	* sem_ch6.ads, sem_ch6.adb (Cannot_Inline): Deal with warning message
	tags. Add tags to warning messages.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* err_vars.ads (Warning_Doc_Switch): New flag.
	* errout.adb (Error_Msg_Internal): Implement new warning flag
	doc tag stuff (Set_Msg_Insertion_Warning): New procedure.
	* errout.ads: Document new insertion sequences ?? ?x? ?.x?
	* erroutc.adb (Output_Msg_Text): Handle ?? and ?x? warning doc
	tag stuff.
	* erroutc.ads (Warning_Msg_Char): New variable.
	(Warn_Chr): New field in error message object.
	* errutil.adb (Error_Msg): Set Warn_Chr in error message object.
	* sem_ch13.adb: Minor reformatting.
	* warnsw.adb: Add handling for -gnatw.d and -gnatw.D
	(Warning_Doc_Switch).
	* warnsw.ads: Add handling of -gnatw.d/.D switches (warning
	doc tag).

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Minor reformatting.

2013-01-02  Doug Rupp  <rupp@adacore.com>

	* init.c: Reorganize VMS section.
	(scan_condtions): New function for scanning condition tables.
	(__gnat_handle_vms_condtion): Use actual exception name for imported
	exceptions vice IMPORTED_EXCEPTION.
	Move condition table scanning into separate function. Move formerly
	special handled conditions to system condition table. Use SYS$PUTMSG
	output to fill exception message field for formally special handled
	condtions, in particular HPARITH to provide more clues about cause and
	location then raised from the translated image.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For a Pre/Post
	aspect that applies to a library subprogram, prepend corresponding
	pragma to the Pragmas_After list, in order for split AND THEN
	sections to be processed in the expected order.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): The statements generated
	for the pragma must have the sloc of the pragma, not the
	sloc of the condition, otherwise this creates anomalies in the
	generated debug information that confuse coverage analysis tools.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb: Minor reformatting.

2013-01-02  Arnaud Charlet  <charlet@adacore.com>

	* g-excact.ads (Core_Dump): Clarify that this subprogram does
	not dump cores under Windows.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Primitive_Renamed_Operation): The prefixed
	view of a subprogram has convention Intrnnsic, and a renaming
	of a prefixed view cannot be the prefix of an Access attribute.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* restrict.adb: Minor reformatting.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* exp_prag.adb: Minor reformatting.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Get_Associated_Node): If the node is an
	identifier that denotes an unconstrained array in an object
	declaration, it is rewritten as the name of an anonymous
	subtype whose bounds are given by the initial expression in the
	declaration. When checking whether that identifier is global
	reference, use the original node, not the local generated subtype.

2013-01-02  Olivier Hainque  <hainque@adacore.com>

	* tracebak.c: Revert previous change, incomplete.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): If the aspect
	appears on a subprogram body that acts as a spec, place the
	corresponding pragma in the declarations of the body, so that
	e.g. pre/postcondition checks can be generated appropriately.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting and code reorganization.

2013-01-02  Vincent Celier  <celier@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Record the
	complete switch -fstack-check=specific instead of its shorter
	alias -fstack-check.

2013-01-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derive_Subprogram): Enforce RM 6.3.1 (8):
	if the derived type is a tagged generic formal type with
	unknown discriminants, the inherited operation has convention
	Intrinsic. As such, the 'Access attribute cannot be applied to it.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_attr.adb: Minor reformatting.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Add SCO generation for S of protected types and
	single protected object declarations.

2013-01-02  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb, osint.ads: Minor reformatting.

2013-01-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Check the legality of pragma Assume.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): For static operands, we
	can perform a compile time comparison even if in preanalysis mode.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (SCO_Record): Always use
	Traverse_Declarations_Or_Statements to process the library level
	declaration, so that SCOs are properly generated for its aspects.

2013-01-02  Thomas Quinot  <quinot@adacore.com>

	* scos.ads (In_Decision): Add missing entry for 'a'.
	* sem_prag.adb (Analyze_Pragma, case pragma Check): Omit
	call to Set_SCO_Pragma_Enabled for Invariant and Predicate.
	* sem_ch13.adb: Minor comment update.

Copyright (C) 2013 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.
