2012-12-21  Ed Schonberg  <schonberg@adacore.com>

	PR ada/53737
	* sem_ch12.adb (Analyze_Associations): Do not check the legality of
	actuals for RACW types if this is an internal instantiation for a formal
	package with defaulted parameters.

2012-12-21  Eric Botcazou  <ebotcazou@adacore.com>

	* adaint.c: Move directive around.
	* argv.c: Likewise.
	* cio.c: Likewise.
	* cstreams.c: Likewise.
	* env.c: Likewise.
	* exit.c: Likewise.
	* init.c: Likewise.
	* initialize.c: Likewise.
	* raise.c: Likewise.
	* seh_init.c: Likewise.
	* targext.c: Likewise.

2012-12-15  Eric Botcazou  <ebotcazou@adacore.com>
	    Martin Ettl  <ettl.martin@gmx.de>

	PR ada/53996
	* gcc-interface/utils.c (gnat_type_for_size): Use %u in lieu of %d.

2012-12-11  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (RTS_DIR): Define only if Ada is enabled.

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

	* gcc-interface/trans.c (gnat_to_gnu) <N_Indexed_Component>: Assert
	that the type of the prefix is ultimately an array.

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

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Be prepared for a
	by-ref VAR_DECL in the case of an Out parameter passed by copy.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, sem_prag.adb, put_scos.adb, get_scos.adb: Minor
	reformatting.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Code clean up.

2012-12-05  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	* gcc-interface/lang.opt: New language AdaSCIL.
	* gcc-interface/lang-specs.h: Add specs for adascil language.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Aspects): Ensure we always have
	an entry in the sloc -> SCO map for invariants, since
	Set_SCO_Pragma_Enabled is called with that sloc when checks
	are enabled.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-prag.adb: Checks and processing of pragma Assume are
	carried out by Sem_Prag.
	* sem_prag.adb (Analyze_Pragma): Check the legality of pragma
	Assume.
	* snames.ads-tmpl: Add new name Assume. Add a pragma identifier
	for Assume.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* aspects.ads, aspects.adb: Add aspect Relative_Deadline.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Process aspect
	Relative_Deadline, and introduce the corresponding pragma within
	the task definition of the task type to which it applies.
	(Check_Aspect_At_Freeze_Point): Expression in a Relative_Deadline
	aspect is of type Time_Span.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Check_Loop_Invariant_Variant_Placement): When pragma
	Loop_[In]variant does not appear immediately within the statements
	of a loop, it must appear in a chain of nested blocks.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb: Minor reformatting.
	 Remove redundant assertion.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb, scos.ads, put_scos.adb, put_scos.ads,
	get_scos.adb: Generation of SCOs for aspects.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb (Check_Precondition_Postcondition): Remove
	redundant call to Set_SCO_Pragma_Enabled (the pragma will be
	rewritten into a pragma Check later on, and the call will be
	made when processing the rewritten pragma).
	(Analyze_Pragma, case Pragma_Check): Omit call to
	Set_SCO_Pragma_Enabled if Split_PPC is set.

2012-12-05  Olivier Hainque  <hainque@adacore.com>

	* tracebak.c: Add partial support for Lynx178.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Improve
	the error message related to loop assertions.

2012-12-05  Gary Dismukes  <dismukes@adacore.com>

	* atree.ads: Minor reformatting.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* atree.ads, par-ch4.adb, sem_attr.adb, sem_ch13.adb: Minor
	reformatting.

2012-12-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi (Switches for gcc): Document -flto and reorder.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* par-ch5.adb (P_Condition): Handle properly Ada 2012
	expressions that must be parenthesized before checking for
	redundant parentheses when that check is enabled.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb (P_Allocator): In Ada 2012 (AI05-0104)  an
	uninitialized allocator cannot carry an explicit not null
	indicator.
	* sem_ch4.adb (Analyze_Allocator): Remove code that implements
	the check for AI05-0104, the check is syntactic and performed
	in the parser.

2012-12-05  Geert Bosch  <bosch@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Use base type for floating
	point attributes.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications,
	Ahalyze_Aspect_Default_Value): For a scalar type attach default
	value to base type as well, because it is a type-specific aspect
	even though it can be specified on a first subtype.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* urealp.ads: Minor rewording.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* aspects.ads (No_Duplicates_Allowed): Forbid use of duplicate
	Contract_Cases aspects.
	* sem_prag.adb (Analyze_Pragma/Pragma_Contract_Case): Rename
	POST_CASE into CONTRACT_CASE in both grammar and code, to be
	consistent with current language definition.  Issue a more precise
	error message when the pragma duplicates another pragma or aspect.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add processing
	for attribute Update.
	(Expand_Update_Attribute): New routine.
	* par-ch4.adb (P_Name): The sole expression of attribute Update
	is an aggregate, parse it accordingly.
	* sem_attr.adb (Analyze_Attribute): Verify the legality of
	attribute Update.
	(Eval_Attribute): Attribute Update does not
	need evaluation because it is never static.
	* snames.ads-tmpl: Add Name_Update to the list of special names
	recognized by the compiler. Add an Attribute_Id for Update.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Remove_Side_Effects): For purposes of removing
	side effects, qualified expressions do not receive a special
	treatment, even though in Ada 2012 they are defined  as object
	references.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* par-ch3.adb: Minor reformatting.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Build_From_Any_Call, Build_To_Any_Call,
	Build_TypeCode_Call): For a used-defined subtype, always go to
	the first subtype of the base type.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb: Minor reformatting.

2012-12-05  Tristan Gingold  <gingold@adacore.com>

	* Make-generated.in: Remove the VMS host specific part, as VMS
	compilers aren't built anymore on VMS.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* sem.adb, errout.ads, atree.adb, atree.ads (Check_Error_Detected):
	Only return quietly if a serious error of configurable run time
	violation has been found.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): In Alfa_Mode, do not apply
	conversion checks.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Handle properly
	the generation of discriminant checks when the left-hand side
	has a type with hidden discriminants.
	* sem_ch3.ads (Is_Visible_Component): Add defaulted parameter to
	specify the node on which component visibility is being checked.
	* sem_ch3.adb (Is_Visible_Component): Use new parameter to
	determine whether the reference comes from a type conversion to
	a full view of a private type with unknown discriminants.
	* sem_ch4.adb (Analyze_Selected_Component): Call
	Is_Visible_Component with added parameter.

2012-12-05  Arnaud Charlet  <charlet@adacore.com>

	* make.adb: Minor comment update.

2012-12-05  Arnaud Charlet  <charlet@adacore.com>

	* gnatlink.adb: Also use -x adascil in CodePeer mode when
	calling gcc.
	* exp_ch5.adb: Minor reformatting.

2012-12-05  Bob Duff  <duff@adacore.com>

	* exp_ch4.adb: Minor comment.

2012-12-05  Bob Duff  <duff@adacore.com>

	* par-ch4.adb: Set Paren_Count correctly for a parenthesized expression
	containing a conditional expression or quantified expression.
	* sprint.adb: Update comment.

2012-12-05  Bob Duff  <duff@adacore.com>

	* style.adb, scans.ads, styleg.adb: Update comments.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): Handle properly an
	expanded name whose prefix is the expanded name of an enclosing
	entry,	that is to say a construct such as T.E.X, where T is an
	enclosing concurrent type and E is an enclosing entry.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* lib-writ.adb (Write_ALI): Output T lines.
	* lib-writ.ads: Minor reformatting. Add documentation of T lines.
	* opt.ads (Generate_Target_Dependent_Info): New flag.
	* switch-c.adb (Scan_Switches): Recognize -gnatet switch
	(target dependent info).
	* ttypes.ads: Add four letter codes to declarations (for target
	dependent info).
	* usage.adb: Add line for -gnatet switch.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb (Expand_N_Pragma): Add a call to expand
	pragma Loop_Variant.
	(Expand_Pragma_Loop_Assertion): Removed.
	(Expand_Pragma_Loop_Variant): New routine.
	* par-prag.adb: Remove Pragma_Loop_Assertion and add two new
	Pragma_Loop_Invariant and Pragma_Loop_Variant entries.
	* sem_attr.adb (Analyze_Attribute): Update the code which
	locates the enclosing pragma.
	* sem_prag.adb (Analyze_Pragma): Remove the code which analyzes
	pragma Loop_Assertion as the pragma is now obsolete. Add the
	machinery to checks the semantics of pragmas Loop_Invariant
	and Loop_Variant.
	(Check_Loop_Invariant_Variant_Placement): New routine.
	* snames.ads-tmpl: Remove name Loop_Assertion. Add new names
	Loop_Invariant and Loop_Variant.  Rename Name_Decreasing
	to Name_Decreases and Name_Increasing to Name_Increases.
	Remove the pragma Id for Loop_Assertion and add two new Ids for
	Loop_Invariant and Loop_Variant.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* gnatchop.adb, sem_attr.ads, sem_ch4.adb, sem_ch6.adb, exp_disp.adb,
	atree.adb, sem_eval.adb: Minor reformatting.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* uintp.adb (UI_Div_Rem): Correct algorithm D to remove potential
	overflow.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Mod): Minor comment additions.
	(Expand_N_Op_Rem): Ditto.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb: Minor reformatting.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Update lines for -gnato? switch.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* par-ch6.adb (P_Return_Object_Declaration): Do not check for
	legality of Aliased keyword.
	* sem_ch6.adb (Analyze_Function_Return): The keyword aliased is
	legal in an extended return statement only if the return type
	is immutably limited.

2012-12-05  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Interface_Thunk): Simplify
	management of controlling formals.  Required to avoid problems
	with primitives of internally generated base types associated
	with constrained tagged types.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb: Remove spurious warnings.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Build_Explicit_Dereference): Set properly
	the type of the prefix prior to rewriting, because subsequent
	legality checks examine the original node.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* aspects.adb: Add Contract_Cases to the canonical aspects map.
	* aspects.ads: Add aspect Contract_Cases in the various aspect
	tables.
	* par-prag.adb: The parser does not need to perform special
	actions for pragma Contract_Cases.
	* sem_ch6.adb (Expand_Contract_Cases): New routine.
	(Process_Contract_Cases): Convert pragma Contract_Cases into pre-
	and post- condition checks that verify the runtime state of all
	case guards and their corresponding consequences.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Perform
	various legality checks on aspect Contract_Cases. The aspect is
	transformed into a pragma.
	* sem_prag.adb: Add an entry in table Sig_Flags for pragma
	Contract_Cases.
	(Analyze_Pragma): Perform various legality
	checks on pragma Contract_Cases.  The pragma is associated with
	the contract of the related subprogram.
	(Chain_CTC): Omit pragma
	Contract_Cases because it does not introduce a unique case name
	and does not follow the syntax of Contract_Case and Test_Case.
	* snames.ads-tmpl: Add new name Name_Contract_Cases. Add a
	Pragma_Id for Contract_Cases.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* sem_ch5.adb: Minor reformatting.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.ads: Add an entry for attribute Loop_Entry in the
	Attribute_Impl_Def table.

2012-12-05  Bob Duff  <duff@adacore.com>

	* gnatchop.adb (Read_File): Avoid storage leak, and in most cases avoid
	an extra copy of the string.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Preanalyze_Range): If the expression, which
	denotes some domain of iteration, has a type with implicit
	dereference, and does not have any iterable aspects, insert
	dereference to obtain proper container type.

2012-12-05  Bob Duff  <duff@adacore.com>

	* par-ch8.adb (P_Use_Type_Clause): Fix the Sloc for "use all type ..."
	to point to "use".

2012-12-05  Arnaud Charlet  <charlet@adacore.com>

	* make.adb (Compile): Always pass -x adascil in CodePeer mode.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* s-rident.ads, restrict.ads: Remove discrepancies between the
	documentation on implementation-defined restrictions, and
	the internal data structure used for warnings and errors on
	implementation-defined restriction violations.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Chain_PPC): Pre- and postcondition aspects
	are legal on a subprogram body that acts as a spec.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Selected_Component): If the selector name is
	an overloadable entity but the name is not overloaded, generate
	reference to it rather than delaying this until resolution.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* checks.ads, checks.adb (Activate_Overflow_Check): No effect for
	MOD/REM/unary +
	* exp_ch4.adb (Expand_N_Op_Mod): Remove call to set Do_Overflow_Check.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Find_Non_Universal_Interpretation): Use the
	types of the right operand if the left operand is null.

2012-12-05  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi, vms_data.ads: document gnatpp -nn option.

2012-12-05  Jose Ruiz  <ruiz@adacore.com>

	* init.c (__gnat_install_handler): For the LEON VxWorks kernel
	run-time library we need to install a trap handler directly in the
	trap table (no support by the OS) for the software trap 0.

2012-12-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_rm.texi (Interfacing to C++): Document new restrictions.

2012-12-05  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Fix typo.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* gnatbind.adb: Minor reformatting.

2012-12-05  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Fix typo.

2012-12-05  Tristan Gingold  <gingold@adacore.com>

	* gnatbind.adb: Minor comment update.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Set flags to indicate that
	CodePeer backend deals with divide and overflow checks.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Update overflow description. Pragma Overflow_Checks
	changed to Overflow_Mode.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* checks.ads, exp_ch4.adb, gnat1drv.adb, par-prag.adb, sem_prag.adb,
	snames.ads-tmpl, switch-c.adb, types.ads, checks.adb: Change pragma
	Overflow_Checks to Overflow_Mode.
	Separate overflow checking from overflow mode.
	Several name changes to reflect this separation.
	CHECKED mode is renamed STRICT mode.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Move setting of flags for
	Alfa mode before general treatment of flags, so that overflow checks
	settings are set appropriately in Alfa mode. Also set the mode to
	STRICT in Alfa mode if not already set by the user.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2012-12-05  Steve Baird  <baird@adacore.com>

	* sinfo.ads: Improve comments about SCIL-related node kinds and selector
	functions.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Build_Limited_Views): Even though the unit is
	not analyzed, place its entity on the name in the with clause,
	so that warnings on unused with-clause are properly supported
	for limited withs.

2012-12-05  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Update overflow description. Pragma
	Overflow_Checks changed to Overflow_Mode.

2012-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Private_Type): Handle properly a
	completion in a grand-child unit when the parent type is itself
	a private type in a child unit whose full view is itself a
	derivation from a private type.

2012-12-05  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case
	Attribute_Valid): Remove code for issuing warning on Valid within
	a predicate. Moved to Sem_Attr.  Remove with and use of Errout.
	* sem_attr.adb (Analyze_Attribute, case Attribute_Valid):
	Test for prefix's subtype having a predicate and issue warning
	about infinite recursion if Valid occurs within the subtype's
	predicate. Warning moved here from Exp_Attr.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* debug.adb: Minor comment addition.

2012-12-05  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): In CodePeer mode, check
	overflows by default, even when the user suppresses overflow checks.

2012-12-05  Thomas Quinot  <quinot@adacore.com>

	* err_vars.ads: Fix minor typo in comment.

2012-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Do not analyze the attribute
	arguments when processing Loop_Entry. Rewrite the analysis of
	attribute Loop_Entry to handle an optional loop name.
	(Convert_To_Indexed_Component): New routine.
	(Eval_Attribute): Remove ??? comment and explain
	why Loop_Entry does not need to be evaluated.

2012-12-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR ada/52110
	* s-osinte-hpux-dce.ads: Declare pthread_rwlockattr_t and
	pthread_rwlock_t subtypes.  Delete duplicate declaration of clockid_t.
	* s-taspri-hpux-dce.ads: Change "pragma Atomic (Thread)" to comment.

2012-11-28  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use
	valid_constant_size_p to detect too large objects.
	<E_Subprogram_Type>: Likewise for too large return types.
	(allocatable_size_p): Call valid_constant_size_p in the fixed case.
	(annotate_value) <INTEGER_CST>: Simplify.
	<BIT_AND_EXPR>: Deal with negative values here.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
	valid_constant_size_p to detect too large objects on the LHS.
	* gcc-interface/misc.c (default_pass_by_ref): Likewise for large types.
	And use TYPE_SIZE_UNIT throughout.
	(must_pass_by_ref): Likewise.
	* gcc-interface/utils.c (max_size) <tcc_unary>: Split from common case.
	<tcc_binary>: Likewise.  Call size_binop instead of fold_build2.
	<tcc_expression>: Simplify.
	* gcc-interface/utils2.c (build_allocator): Use valid_constant_size_p
	to detect too large allocations.

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

	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Length>: Look through
	a view conversion from constrained to unconstrained form.

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

	* gcc-interface/decl.c (components_need_strict_alignment): New.
	(components_to_record): Do not pack the variants if one of the fields
	needs strict alignment.  Likewise for the variant part as a whole.
	Specify the position of the variants even if the size isn't specified,
	but do not specify the size of the variant part in this case.

2012-11-20  Diego Novillo  <dnovillo@google.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/decl.c: Replace all vec<T,A>() initializers with vNULL.

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

	* gcc-interface/decl.c: Remove trailing spaces.
	* gcc-interface/trans.c: Remove trailing spaces.

2012-11-16  Diego Novillo  <dnovillo@google.com>

	Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)

	* gcc-interface/decl.c: Use new vec API in vec.h.
	* gcc-interface/gigi.h: Likewise.
	* gcc-interface/trans.c: Likewise.
	* gcc-interface/utils.c: Likewise.
	* gcc-interface/utils2.c: Likewise.

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

	PR other/52438
	* s-taspri-lynxos.ads: Delete.
	* s-osinte-kfreebsd-gnu.ads: Change license to GPL V3+.
	* s-tpopsp-rtems.adb: Likewise.
	* s-osinte-rtems.adb: Likewise.

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

	* gcc-interface/trans.c (gnat_to_gnu) <N_Subprogram_Body_Stub>: Deal
	with a missing library unit instead of calling gnat_to_gnu on Emtpy.
	Remove last bits of support for SCIL nodes.  Add cases for nodes that
	should only be present when annotating types.  Add default abort.

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

	* gcc-interface/Makefile.in: Revert most changes.
	* gcc-interface/Make-lang.in (gnatlib): Remove ada/s-oscons.ads.

2012-11-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in (copy-s-oscons): New target.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* err_vars.ads, atree.ads: Minor reformatting.

2012-11-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	* gcc-interface/Makefile.in: Add runtime pairs for Android.
	Rework handling of s-oscons.ads.
	* s-osinte-android.ads, s-osinte-android.adb: New files.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): For N_Real_Literal, create the
	binary representation of vax floats.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Fix thinko
	in previous commit.

2012-11-06  Jose Ruiz  <ruiz@adacore.com>

	* ali.adb (Scan_ALI): Fix parsing mechanism for -fstack-check.

2012-11-06  Thomas Quinot  <quinot@adacore.com>

	* atree.adb, atree.ads, einfo.adb, errout.adb, errout.ads, erroutc.adb,
	erroutc.ads, errutil.adb, errutil.ads, err_vars.ads, expander.adb,
	exp_ch13.adb, exp_ch2.adb, exp_ch6.adb, exp_dist.adb, fe.h,
	fmap.adb, fmap.ads, gprep.adb, makeutl.adb, osint.adb, osint.ads,
	par_sco.adb, prepcomp.adb, prj-part.adb, prj-proc.adb, scng.adb,
	sdefault.ads, sem_ch10.adb, sem_ch13.adb, sem_ch2.adb, sem_ch3.adb,
	sem_ch4.adb, sem_ch5.adb, sem_dim.adb, sem_elab.adb, sem_eval.adb,
	sem_intr.adb, sem_prag.adb, sem_type.adb, sem_warn.adb, stylesw.adb,
	stylesw.ads, targparm.adb, targparm.ads (Cascaded_Error): Rename to
	more descriptive name 'Check_Error_Detected'. Add calls to
	Check_Error_Detected at places where semantic analysis is abandoned
	assuming a previously detected error.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor comment change.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Extensive revision of documentation of overflow
	checking.
	* vms_data.ads: Overflow check numbers must be in range 1-3,
	not 0-3.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Emit a
	warning if pragma Priority is used in presence of an interrupt
	handler.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* checks.ads, checks.adb, exp_ch4.adb: Minor changes throughout for
	new overflow checking.
	* exp_util.adb (Insert_Actions): Remove special casing of
	Overflow_Check.
	* gnat1drv.adb (Adjust_Global_Switches): Fixes for new handling
	of overflow checks.
	* sem.adb (Analyze): Remove special casing of Overflow_Check
	(Analyze_List): ditto.
	* sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Remove
	SUPPRESSED and change CHECKED to STRICT.
	* sem_res.adb (Analyze_And_Resolve): No longer treat
	Overflow_Check specially.
	(Preanalyze_And_Resolve): ditto.
	(Resolve): ditto.
	* snames.ads-tmpl: Replace Name_Checked by Name_Strict.
	* switch-c.adb (Get_Overflow_Mode): Eliminate 0 setting,
	CHECKED => STRICT.
	* types.ads (Overflow_Check_Type): Remove Suppressed, change
	Checked to Strict (Suppress_Record): Overflow check controlled
	by Suppress array.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Preanalyze_And_Resolve): In Alfa mode do not
	disable checks, so that flags can be properly set on expressions
	that are not further expanded.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb, sem_attr.adb: Minor reformatting.

2012-11-06  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Apply a predicate
	check when evaluating the attribute Valid, and issue a warning
	about infinite recursion when the check occurs within the
	predicate function of the prefix's subtype.
	* exp_ch4.adb (Expand_N_In): Remove test for Is_Discrete_Type
	when we're checking that there's no predicate check function as a
	condition for substituting a Valid check for a scalar membership
	test (substitution should be suppressed for any kind of scalar
	subtype with a predicate check). Also, don't emit a predicate
	check when the right operand is a range.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, bindgen.adb, exp_vfpt.adb, exp_vfpt.ads, exp_ch2.adb,
	errout.adb, sem_ch8.adb: Minor reformatting.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Include Loop_Entry_Attributes to the list of
	Node/List/Elist10 usage.
	(Loop_Entry_Attributes): New routine.
	(Set_Loop_Entry_Attributes): New routine.
	(Write_Field10_Name): Add an output string for Loop_Entry_Attributes.
	* einfo.ads: Define new attribute Loop_Entry_Attributes along
	with its usage in nodes.
	(Loop_Entry_Attributes): New routine and dedicated pragma Inline.
	(Set_Loop_Entry_Attributes): New routine and dedicated pragma Inline.
	* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
	Attribute_Loop_Entry here.
	* exp_ch5.adb: Add with and use clause for Elists;
	(Expand_Loop_Entry_Attributes): New routine.
	(Expand_N_Loop_Statement): Add a call to Expand_Loop_Entry_Attributes.
	* exp_prag.adb (Expand_Pragma_Loop_Assertion): Specialize the
	search to include multiple nested loops produced by the expansion
	of Ada 2012 array iterator.
	* sem_attr.adb: Add with and use clause for Elists.
	(Analyze_Attribute): Check the legality of attribute Loop_Entry.
	(Resolve_Attribute): Nothing to do for Loop_Entry.
	(S14_Attribute): New routine.
	* snames.ads-tmpl: Add a comment on entries marked with
	HiLite. Add new name Name_Loop_Entry. Add new attribute
	Attribute_Loop_Entry.

2012-11-06  Geert Bosch  <bosch@adacore.com>

	* eval_fat.adb (Machine, Succ): Fix front end to support static
	evaluation of attributes on targets with both VAX and IEEE float.
	* sem_util.ads, sem_util.adb (Has_Denormals, Has_Signed_Zeros):
	New type-specific functions. Previously we used Denorm_On_Target
	and Signed_Zeros_On_Target directly, but that doesn't work well
	for OpenVMS where a single target supports both floating point
	with and without signed zeros.
	* sem_attr.adb (Attribute_Denorm, Attribute_Signed_Zeros): Use
	new Has_Denormals and Has_Signed_Zeros functions to support both
	IEEE and VAX floating point on a single target.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (System_Interrupts_Used): New variable.
	(Gen_Adainit): Declare and call
	Install_Restricted_Handlers_Sequential if System.Interrupts is
	used when elaboration policy is sequential.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: Complete previous change.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* fe.h (Get_Vax_Real_Literal_As_Signed): Declare.
	* eval_fat.adb, eval_fat.ads (Decompose_Int): Move spec in package spec.
	* exp_vfpt.adb, exp_vfpt.ads (Vax_Real_Literal_As_Signed): New function.
	(Expand_Vax_Real_Literal): Remove.
	* exp_ch2.adb (Expand_N_Real_Literal): Do nothing.
	* sem_eval.adb (Expr_Value_R): Remove special Vax float case,
	as this is not anymore a special case.

2012-11-06  Yannick Moy  <moy@adacore.com>

	* uintp.ads: Minor correction of typo in comment.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragnma, case Unchecked_Union): remove
	requirement that discriminants of an unchecked_union must have
	defaults.

2012-11-06  Vasiliy Fofanov  <fofanov@adacore.com>

	* projects.texi: Minor wordsmithing.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch9.adb, exp_vfpt.adb, xoscons.adb: Minor reformatting.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* exp_vfpt.adb: Document VAX float point layout.

2012-11-06  Geert Bosch  <bosch@adacore.com>

	* eval_fat.adb (Machine): Don't return -0.0 on targets without
	signed zeros.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb (Analyze_Entry_Call_Alternative,
	Check_Triggering_Statement): Reject properly an indirect call.

2012-11-06  Pascal Obry  <obry@adacore.com>

	* xoscons.adb, xutil.adb, xutil.ads: Add support for post-processing.

2012-11-06  Yannick Moy  <moy@adacore.com>

	* s-bignum.adb (Div_Rem): Fix another bug in step D3.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* s-tarest.adb (Create_Restricted_Task): Call
	Create_Restricted_Task_Sequential in sequential case.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb (Expand_Pragma_Loop_Assertion): Do not rewrite the
	pragma into a null statement as its presence is desirable in -gnatG
	output.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Check_Constrained_Object): Do nothing if the
	renamed object is a limited record.

2012-11-06  Bernard Banner  <banner@adacore.com>

	* sysdep.c (_getpagesize): New. Minor reformatting.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* s-bignum.adb (Div_Rem): Fix bug in step D3.
	* uintp.adb (UI_Div_Rem): Add comment on bug in step D3.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb (Expand_Pragma_Loop_Assertion): Update the comment
	on intended expansion.	Reimplement the logic which expands the
	termination variants.
	(Process_Increase_Decrease): Update the parameter profile and the
	comment related to it. Accommodate the new aggregate-like appearance of
	the termination variants.
	* sem_prag.adb (Analyze_Pragma): Update the syntax of pragma
	Loop_Assertion. Reimplement the semantic analysis of the pragma
	to accommodate the new aggregate-like variant.
	(Check_Variant): New routine.
	* snames.ads-tmpl: Change names Name_Decreases and Name_Increases
	to Name_Decreasing and Name_Increasing respectively. Add name
	Variant.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb: Static evaluation of case expressions.

2012-11-06  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb, impunit.adb, exp_ch9.adb, par-ch4.adb,
	s-tarest.adb: Minor reformatting.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* s-tposen.ads: Minor comment update.

2012-11-06  Arnaud Charlet  <charlet@adacore.com>

	* sysdep.c: Rename sig* wrappers to use unique names.

2012-11-06  Yannick Moy  <moy@adacore.com>

	* exp_dbug.adb (Qualify_Entity_Name): Mark entity as having a qualified
	name after being treated, in formal verification mode.

2012-11-06  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Updating gnattest section to reflect changes
	in default behaviour of the tool.

2012-11-06  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c: Interfaces.C now needs to be WITH'd even
	on platforms that do not support sockets (for the benefit of
	subtype IOCTL_Req_T).

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb (P_Primary): if-expressions, case-expressions,
	and quantified expressions are legal if surrounded by parentheses
	from an enclosing context, such as a call or an instantiation.

2012-11-06  Yannick Moy  <moy@adacore.com>

	* impunit.adb (Get_Kind_Of_Unit): Return appropriate kind for
	predefined implementation files, instead of returning
	Not_Predefined_Unit on all .adb files.

2012-11-06  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Build_Activation_Chain_Entity): Return immediately if
	partition elaboration policy is sequential.
	(Build_Task_Activation_Call): Likewise. Use
	Activate_Restricted_Tasks on restricted profile.
	(Make_Task_Create_Call): Do not use the _Chain
	parameter if elaboration policy is sequential. Call
	Create_Restricted_Task_Sequential in that case.
	* exp_ch3.adb (Build_Initialization_Call): Change condition to
	support concurrent elaboration policy.
	(Build_Record_Init_Proc): Likewise.
	(Init_Formals): Likewise.
	* bindgen.adb (Gen_Adainit): Declare Partition_Elaboration_Policy
	and set it in generated code if the elaboration policy is
	sequential. The procedure called to activate all tasks is now
	named __gnat_activate_all_tasks.
	* rtsfind.adb (RE_Activate_Restricted_Task,
	RE_Create_Restricted_Task_Sequential): New RE_Id literals.
	* s-tarest.adb (Create_Restricted_Task): Added to create a task without
	adding it on an activation chain.
	(Activate_Tasks): Has now a Chain parameter.
	(Activate_All_Tasks_Sequential): Added. Called by the binder to
	activate all tasks.
	(Activate_Restricted_Tasks): Added. Called during elaboration to
	activate tasks of the units.
	* s-tarest.ads: Remove pragma Partition_Elaboration_Policy.
	(Partition_Elaboration_Policy): New variable (set by the binder).
	(Create_Restricted_Task): Revert removal of the chain parameter.
	(Create_Restricted_Task_Sequential): New procedure.
	(Activate_Restricted_Tasks): Revert removal.
	(Activate_All_Tasks_Sequential): New procedure.

2012-11-06  Bernard Banner  <banner@adacore.com>

	* adaint.c Add file macro definitions missing on Android.
	* adaint.h Avoid definitions related to task affinity and CPU
	sets since this functionality is missing on the Android
	* errno.c (__set_errno): Android already contains such a named
	procedure so do include again.
	* gsocket.h: Sockets not supported on Android.
	* init.c: Avoid linux related code not supported on Android.
	* sysdep.c (sigismember, sigaddset, sigdelset, sigemptyset,
	sigfillset): wrapper functions since sig routines are defined
	as inline macros on Android.
	* terminals.c: Add stubs for terminal related functions not
	supported on Android.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Do not
	output the characters of an illegal argument as it may not have
	characters to begin with.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb (Expand_Pragma_Loop_Assertion):
	Change the order of argument processing to avoid disappearing
	increase / decrease expressions.

2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_prag.adb: Add with and use clause for Sem_Ch8.
	(Expand_N_Pragma): Add a new variant to expand pragma Loop_Assertion.
	(Expand_Pragma_Loop_Assertion): New routine.
	* par-prag.adb (Prag): The semantic analysis of pragma
	Loop_Assertion is carried out by Analyze_Pragma. No need for
	checks in the parser.
	* sem_prag.adb: Add a reference position value for pragma
	Loop_Assertion in Sig_Flags.
	(Analyze_Pragma): Add semantic analysis for pragma Loop_Assertion.
	* snames.ads-tmpl: Add the following new names:
	Name_Decreases Name_Increases Name_Loop_Assertion.
	Add new pragma id Pragma_Loop_Assertion.

2012-11-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb: Identifier in iterator must have debug
	information.

2012-11-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Remove
	duplicate rules handled by Make-generated.in.

2012-10-31  Lawrence Crowl  <crowl@google.com>

	* gcc-interface/utils.c (gnat_write_global_declarations):
	Rename varpool_node to varpool_node_for_decl.

2012-10-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in: Fix and clean up rules for C files.

2012-10-29  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in (s-oscons.ads): Adjust call to xoscons.

2012-10-29  Pascal Obry  <obry@adacore.com>

	* xoscons.adb, Make-generated.in; The template used by xoscons is now
	given as parameter.
	* gcc-interface/Make-lang.in: Update dependencies.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* exp_dbug.adb (Qualify_Entity_Name): Only do renaming in formal
	verification mode when there is a homonym.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* xoscons.adb: Minor reformatting.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* exp_alfa.adb (Expand_Alfa): Backtrack change that removed
	qualification of names in formal verification mode. Instead,
	the qualification should be modified.
	* exp_dbug.adb (Qualify_Entity_Name): Modify qualification in formal
	verification mode, so that only a suffix is added to distinguish
	homonyms from the same scope.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document that pragma Optimize_Alignment (Space) is
	ignored with a warning for packed variable length records.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* socket.c, g-socthi-dummy.adb, g-socthi-dummy.ads, g-socthi-vms.adb,
	g-socthi-vms.ads, g-socthi-vxworks.adb, g-socthi-vxworks.ads,
	s-oscons-tmplt.c, g-socthi-mingw.adb, g-socthi-mingw.ads, g-socthi.adb,
	g-socthi.ads, xoscons.adb, g-socket.adb, g-sothco.ads: Introduce an
	appropriate subtype for IOCTL requests, since these may be signed or
	unsigned.

2012-10-29  Gary Dismukes  <dismukes@adacore.com>

	* exp_alfa.adb: Minor reformatting.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Clarify documentation on maximum
	line length style switch.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* layout.adb (Set_Composite_Alignment): Ignore pragma
	Optimize_Alignment (Space) for packed variable length records.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* s-bignum.adb: Minor comment change.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c: Fix signedness of ioctl request identifiers
	for x86_64-freebsd.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* exp_alfa.adb (Expand_Alfa): Remove qualification of names.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor rewording.

2012-10-29  Javier Miranda  <miranda@adacore.com>

	* exp_disp.ads (Is_Expanded_Dispatching_Call): New subprogram.
	* exp_disp.adb (Expand_Dispatching_Call): No action needed if the
	call has been already expanded.
	(Is_Expanded_Dispatching_Call): New subprogram.
	* sem_disp.adb (Propagate_Tag): No action needed if the call
	has been already expanded.

2012-10-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Create_Index_And_Data): Remove local
	variable Index_Typ and its uses. The type of the index is now
	System.Tasking.Entry_Index. Update all related comments.
	* rtsfind.ads: Add RE_Entry_Index in tables RE_Id and RE_Unit_Table.
	* s-taskin.adb (Number_Of_Entries): The return type is now Entry_Index.
	* s-taskin.ads: The index type of Task_Entry_Names_Array is now
	Entry_Index.
	(Number_Of_Entries): The return type is now Entry_Index.
	* s-tpoben.adb (Number_Of_Entries): The return type is now Entry_Index.
	* s-tpoben.ads: The index type of Protected_Entry_Names_Array
	is now Entry_Index.
	(Number_Of_Entries): The return type is now Entry_Index.

2012-10-29  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi: Add note about SEH setup on x86-windows.

2012-10-29  Eric Botcazou  <ebotcazou@adacore.com>

	* s-bignum.adb (Allocate_Bignum): Use the exact layout of
	Bignum_Data for the overlay.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi, sem_prag.adb, sem_util.adb, sem_util.ads,
	par-prag.adb, par-util.adb, snames.ads-tmpl (Sem_Prag.Analyze_Pragma):
	Handle new pragma Attribute_Definition.
	(Sem_Util.Bad_Attribute): New routine, moved here
	from par-util, so that it can be used by the above.
	(Par_Util.Signal_Bad_Attribute): Processing moved to
	Sem_Util.Bad_Attribute.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* s-tpoben.ads, s-taskin.ads, exp_ch3.adb: Minor reformatting.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb, gnat1drv.adb, opt.ads: Rename S14_Extensions
	into Formal_Extensions.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* sem_attr.adb: Minor reformatting.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* gnat_rm.texi: Document implementation advice for Pragma
	Partition_Elaboration_Policy.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* s-bignum.adb (Div_Rem): Reference that Algorithm_D is from
	the second edition of TAOCP from Knuth, since the algo changed
	in the third edition. Also correct the definition of 'd' which
	could overflow.

2012-10-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Build_Initialization_Call): Create static strings
	which denote entry [family] names and associate them with the
	object's Protection_Entries or ATCB.
	(Build_Init_Statements):
	Remove local variable Names. Do not generate the entry [family]
	names inside the init proc because they are now static.
	* exp_ch9.adb (Build_Entry_Names): Reimplemented. The strings
	which denote entry [family] names are now generated statically
	and associated with the concurrent object's Protection_Entries
	or ATCB during initialization.
	* exp_ch9.ads (Build_Entry_Names): Change subprogram profile
	and associated comment on usage.
	* rtsfind.ads: Add the following entries to tables RE_Id and
	RE_Unit_Table:

	RE_Protected_Entry_Names_Array RE_Task_Entry_Names_Array
	RO_PE_Number_Of_Entries RO_PE_Set_Entry_Names
	RO_ST_Number_Of_Entries RO_ST_Set_Entry_Names

	Remove the following entries from tables RE_Id and RE_Unit_Table:

	RO_PE_Set_Entry_Name RO_TS_Set_Entry_Name

	* s-taskin.adb: Remove with clause for Ada.Unchecked_Deallocation.
	(Free_Entry_Names_Array): Removed.
	(Number_Of_Entries): New routine.
	(Set_Entry_Names): New routine.
	* s-taskin.ads: Rename type Entry_Names_Array to
	Task_Entry_Names_Array. Rename type Entry_Names_Array_Access
	to Task_Entry_Names_Access. Update the type of ACTB field
	Entry_Names and add a comment on its protection status.
	(Free_Entry_Names_Array): Removed.
	(Number_Of_Entries): New routine.
	(Set_Entry_Names): New routine.
	* s-tassta.adb (Create_Task): Remove formal parameter
	Build_Entry_Names. Do not allocate an array to hold the
	string names of entries and families.
	(Free_Entry_Names): Removed.
	(Free_Task): Remove the call to Free_Entry_Names.
	(Set_Entry_Name): Removed.
	(Vulnerable_Free_Task): Remove the call to Free_Entry_Names.
	* s-tassta.ads (Create_Task): Remove formal parameter
	Build_Entry_Names along with associated comment.
	(Set_Entry_Name): Removed.
	* s-tpoben.adb: Remove with clause for Ada.Unchecked_Deallocation.
	(Finalize): Remove the call to Free_Entry_Names.
	(Free_Entry_Names): Removed.
	(Initialize_Protection_Entries):
	Remove formal parameter Build_Entry_Names. Do not allocate
	an array to hold the string names of entries and families.
	(Number_Of_Entries): New routine.
	(Set_Entry_Name): Removed.
	(Set_Entry_Names): New routine.
	* s-tpoben.ads: Add types Protected_Entry_Names_Array and
	Protected_Entry_Names_Access. Update the type of Protection_Enties
	field Entry_Names.
	(Initialize_Protection_Entries): Remove
	formal parameter Build_Entry_Names along with associated comment.
	(Number_Of_Entries): New routine.
	(Set_Entry_Name): Removed.
	(Set_Entry_Names): New routine.

2012-10-29  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Minor typo fix.
2012-10-29  Yannick Moy  <moy@adacore.com>

	* debug.adb Associate debug switch -gnatd.V to extensions for
	formal verification.
	* gnat1drv.adb (Adjust_Global_Switches): Set flag S14_Extensions
	when -gnatd.V is set.
	* gnat_rm.texi: Remove doc for Assert_And_Cut.
	* opt.ads Declare new flag S14_Extensions, to be set when new
	aspects/pragmas/attributes for formal verification should be
	accepted.
	* sem_prag.adb (Analyze_Pragma): Check that S14_Extensions is
	set when treating pragma Assert_And_Cut.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* s-tarest.ads, s-tassta.adb: Add a pragma Partition_Elaboration_Policy.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* xr_tabls.adb, xr_tabls.ads, exp_ch9.adb, snames.adb-tmpl,
	snames.ads-tmpl, exp_ch3.adb: Minor reformatting.

2012-10-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Call Build_Subprogrm_Instance_Renamings only when
	generating code.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add documentation for -gnatw.k/-gnatw.K.
	* ug_words: Add entries for -gnatw.k/.K for [NO]STANDARD_REDEFINITION.
	* vms_data.ads: Add entries for [NO]STANDARD_REDEFINITION.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb, s-tarest.ads, exp_ch3.adb: Update comments.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor documentation addition.

2012-10-29  Emmanuel Briot  <briot@adacore.com>

	* xr_tabls.adb, xr_tabls.ads (Add_Declaration, Add_Reference): No
	longer assume that a parameter declaration is seen after the subprogram
	that uses it.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* lib-writ.adb (Write_ALI): Emit partition elaboration policy
	in P line.
	* lib-writ.ads: Document partition elaboration policy indication.
	* sem_prag.adb (Check_Arg_Is_Partition_Elaboration_Policy): New
	procedure.
	(Analyze_Pragma): Handle Partition_Elaboration_Policy.
	(Sig_Flags): Add flag for Pragma_Partition_Elaboration_Policy
	* ali.adb (Initialize_ALI): Init Partition_Elaboration_Policy_Specified.
	(Scan_ALI): Read Ex indications.
	* ali.ads: ALIs_Record: Add Partition_Elaboration_Policy.
	* par-prag.adb (Prag): Add Partition_Elaboration_Policy.
	* snames.adb-tmpl (Is_Partition_Elaboration_Policy_Name): New function.
	* opt.ads (Partition_Elaboration_Policy): Declare.
	(Partition_Elaboration_Policy_Sloc): Declare.
	* bcheck.adb (Check_Consistent_Partition_Elaboration_Policy):
	New procedure.	(Check_Configuration_Consistency): Check partition
	elaboration policy consistency.
	* snames.ads-tmpl (Name_Partition_Elaboration_Policy): New name.
	(First_Partition_Elaboration_Policy_Name, Name_Concurrent,
	Name_Sequential, Last_Partition_Elaboration_Policy_Name): Likewise.
	(Pragma_Partition_Elaboration_Policy): New literal.
	(Is_Partition_Elaboration_Policy_Name): New function.

2012-10-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Is_Public_Subprogram_For): Handle properly
	expression functions, which are rewritten as subprogram
	declarations, when generating invariants for its return value
	and in-out parameters.

2012-10-29  Arnaud Charlet  <charlet@adacore.com>

	* warnsw.adb (Set_GNAT_Mode_Warnings): Unset
	Warn_On_Standard_Redefinition.

2012-10-29  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Progenitor_Subprograms): Complete documentation.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* par-ch11.adb (Warn_If_Standard_Redefinition): Add calls.
	* par-ch3.adb (P_Defining_Identifier): Call
	Warn_If_Standard_Redefinition if not inside record definition.
	* par-ch6.adb (Warn_If_Standard_Redefinition): Add calls.
	* par-util.adb (Warn_If_Standard_Redefinition): New procedure.
	* par.adb (Inside_Record_Definition): New flag.
	(Warn_If_Standard_Redefinition): New procedure.
	* sinfo-cn.adb (Change_Identifier_To_Defining_Identifier): Remove
	handling of warning for redefining standard name (moved to Par*).

2012-10-29  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Progenitor_Subprograms): Disable small
	optimization in generic formal types.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, exp_ch3.adb: Add comments.
	* sem_prag.adb: Minor reformatting.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (Gen_Output_File_Ada): Do not emit declaration for
	Is_Elaborated if not referenced.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Build_Activation_Chain_Entity): Punt in restricted
	profile.
	* exp_ch3.adb (Build_Initialization_Call): Do no append _Chain
	parameter in restricted profile.
	(Build_Init_Call_Thru): Likewise.
	(Init_Formals): Likewise.
	* exp_ch3.adb: Minor reformatting.

2012-10-29  Arnaud Charlet  <charlet@adacore.com>

	* usage.adb: Update usage line for -gnatw.k.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb: Code clean up.

2012-10-29  Vincent Celier  <celier@adacore.com>

	* projects.texi: Clarify documentation of attribute
	Ignore_Source_Sub_Dirs.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* g-sechas.adb, g-sechas.ads, exp_ch9.adb, bindgen.adb, exp_dbug.adb,
	exp_dbug.ads: Minor reformatting.

2012-10-29  Pascal Obry  <obry@adacore.com>

	* g-sechas.adb, g-sechas.ads: (Binary_Message_Digest): New subtype.
	(Digest): New versions returning a Binary_Message_Digest.
	(Wide_Digest): Likewise.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* warnsw.adb: Complete previous change.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (Check_File_In_Partition, Check_System_Restrictions_Used):
	Removed.
	(Check_Dispatching_Domains_Used): Removed.
	(Gen_Adafinal): Remove call to above procedures.
	(Resolve_Binder_Options): Handle system restrictions and dispatching
	domains.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* s-tarest.ads, s-tarest.adb (Create_Restricted_Task): Remove
	Chain parameter.
	* exp_ch9.adb (Make_Task_Create_Call): Do not add Chain parameter
	on restricted runtime.

2012-10-29  Pascal Obry  <obry@adacore.com>

	* g-sechas.adb, g-sechas.ads: Minor code clean-up.

2012-10-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_aux.adb (Get_Rep_Item): Treat Priority and Interrupt_Priority
	as equivalent, because only one of them can be specified for a
	task, protected definition, or subprogram body.
	* aspects.adb ((Same_Aspect): The canonical aspect of
	Interrupt_Priority is Priority.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb: Minor reformatting.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* i-cstrea.ads: Avoid redefinition of standard symbol string.
	* prj-makr.adb: Add comment for OK redefinition of Stadard.
	* prj.ads: Add comment for OK redefinition of Stadard.
	* s-crtl.ads: Avoid redefinition of standard symbol string.
	* sinfo-cn.adb (Change_Identifier_To_Defining_Identifier):
	Generate warning for standard redefinition if
	Warn_On_Standard_Definition set.
	* usage.adb: Add lines for -gnatw.k and -gnatw.K
	* warnsw.adb: Set/reset Warn_On_Standard_Redefinition
	appropriately.
	* warnsw.ads (Warn_On_Standard_Redefinition): New flag.
	* s-stratt-xdr.adb: Avoid new warning.

2012-10-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_dbug.ads, exp_dbug.adb (Build_Subprogram_Instance_Renamings):
	in the body of a subpogram instance, introduce local renamings
	for actuals of an elementary type, so that GDB can recover the
	values of these actuals more directly.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Statement): Add warning for identical
	inner/outer ranges.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* einfo.ads: Change terminology "present" to "defined" in talking
	about whether a given field is defined for a given entity kind.

2012-10-29  Bob Duff  <duff@adacore.com>

	* atree.ads: Minor comment fix.

2012-10-29  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Replace_Type_Reference): Set_Comes_From_Source.
	Otherwise, the node is ignored by ASIS.
	* sem_ch5.adb: Minor reformatting.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb, exp_dist.adb, exp_dist.ads (Build_To_Any_Call): Pass
	an explicit Loc parameter to set the source location of generated
	nodes.

2012-10-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch9.adb (Build_Task_Activation_Call): Do nothing on
	restricted profile.
	* bindgen.adb (System_Tasking_Restricted_Stages_Used): New variable.
	(Gen_Adainit): Declare and call Activate_Tasks when the above variable
	is set.
	(Resolve_Binder_Options): Set the variable.
	* rtsfind.ads (RE_Activate_Restricted_Tasks): Removed (now unused).
	* s-tarest.adb (Tasks_Activation_Chain): New variable.
	(Activate_Restricted_Tasks): Removed, and replaced by ...
	(Activate_Tasks): New procedure, to activate all tasks at
	the end of elaboration.
	(Create_Restricted_Tasks): Chain parameter is now unreferenced.	Put
	the created task on the Tasks_Activation_Chain list.
	* s-tarest.ads (Activate_Restricted_Tasks): Removed.
	(Activate_Tasks): Added.

2012-10-29  Gary Dismukes  <dismukes@adacore.com>

	* sem_res.adb (Resolve_If_Expression): Compare subtype of the 'then'
	expression against the subtype of the expression rather than comparing
	base types, same as is already done for the 'else' expression.

2012-10-29  Steve Baird  <baird@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): If CodePeer_Mode
	= True and we detect that an Address specification is used to overlay
	another object, do not set that object's Treat_As_Volatile flag.

2012-10-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Constant_Redeclaration): If the type of a
	deferred constant has invariants, generate invariant call on
	the initial value.

2012-10-29  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Replace_Type_Reference): Use correct sloc for
	the new node.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* sem_elab.adb: Minor reformatting and code reorganization.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (P_Primary): Warn on bad use of unary minus.

2012-10-29  Robert Dewar  <dewar@adacore.com>

	* s-valuti.ads, s-valuti.adb (Bad_Value): New procedure.
	* s-valllu.adb, s-valwch.adb, s-valcha.adb, s-valint.adb,
	s-valuns.adb, s-valrea.adb, s-valboo.adb, s-valenu.adb,
	s-vallli.adb: Use Bad_Value everywhere.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Do not suppress checks
	in Alfa mode.

2012-10-29  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
	Add special case for case expression alternative.
	(Is_Signed_Integer_Arithmetic_Op): Remove special case for case
	expression alternative.
	* exp_ch4.adb Minor reformatting.

2012-10-29  Thomas Quinot  <quinot@adacore.com>

	* sem_elab.adb: Minor reformatting.

2012-10-29  Bob Duff  <duff@adacore.com>

	* sem_res.adb: Minor: Remove redundant test.

2012-10-29  Arnaud Charlet  <charlet@adacore.com>

	* pprint.ads, pprint.adb, adabkend.ads, adabkend.adb,
	aa_util.ads, aa_util.adb: New.

2012-10-23  Eric Botcazou  <ebotcazou@adacore.com>

	* system-linux-mipsel.ads (Stack_Check_Probes): Set to True.
	* system-linux-mips.ads (Stack_Check_Probes): Likewise.
	* system-linux-mips64el.ads (Stack_Check_Probes): Likewise.

2012-10-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Force
	BLKmode on the type if it is passed by reference.
	<E_Array_Subtype>: Likewise.
	<E_Record_Type>: Guard the call to Is_By_Reference_Type predicate.
	<E_Record_Subtype>: Likewise.

	* gcc-interface/Makefile.in: Remove outdated comment and reference to
	non-existing file.

2012-10-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (rest_of_record_type_compilation): Simplify and
	robustify pattern machine code for masking operations.

2012-10-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: In
	type annotation mode, break circularities introduced by AI05-0151.

2012-10-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Loop_Statement_to_gnu): Use gnat_type_for_size
	directly to obtain an unsigned version of the base type.

2012-10-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Out_Parameter>: Do not
	generate the special PARM_DECL for an Out parameter in LTO mode.

2012-10-22  Eric Botcazou  <ebotcazou@adacore.com>

	PR bootstrap/54820
	* gcc-interface/Make-lang.in (GCC_LINK): Remove hardcoded options.

2012-10-15  Matthias Klose  <doko@ubuntu.com>

	* gcc-interface/Makefile.in: Match arm*-*-linux-*eabi* for
	ARM Linux/GNU.

2012-10-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch7.adb: Minor reformatting.

2012-10-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Persistent_BSS): check for
	a duplicate pragma before Rep_Item_Too_Late to prevent spurious
	messages about duplicate pragmas.

2012-10-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Find_Init_Call): If the successor of the
	object declaration is a block, check whether it contains the
	initialization call, because it may have been created by actuals
	that use the secondary stack.

2012-10-05  Thomas Quinot  <quinot@adacore.com>

	* sem_dim.adb, errout.adb, errout.ads (Analyze_Dimension_Call): Add
	guard against abnormal tree resulting from a previously diagnosed
	illegality.

2012-10-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Freeze_Expression): Rename local variable Cspc to Spec
	and update all refs to it. Do not freeze an entity outside a subprogram
	body when the original context is an expression function.

2012-10-05  Robert Dewar  <dewar@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Default for overflow checking
	is suppressed, even if backend overflow/divide checks are enabled.

2012-10-05  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb (Set_Invariant_Procedure, Set_Predicate_Function):
	chain properly subprograms on Subprograms_For_Type list.
	* sem_ch13.ads; (Build_Invariant_Procedure_Declaration): new
	procedure, to create declaration for invariant procedure
	independently of the construction of the body, so that it can
	be called within expression functions.
	* sem_ch13.adb (Build_Invariant_Procedure): code cleanup. The
	declaration may already have been generated at the point an
	explicit invariant aspect is encountered.
	* sem_prag.adb; (Analyze_Pragma, case Invariant): create declaration
	for invariant procedure.
	* sem_ch7.adb (Analyze_Package_Specification): clean up call to
	build invariant procedure.
	(Preserve_Full_Attributes): propagate information about invariants
	if they appear on a completion,

2012-10-05  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi: Update documentation to lift Microsoft C
	restriction.

2012-10-05  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb (Has_One_Matching_Field): Handle case of lone
	discriminant.

2012-10-05  Yannick Moy  <moy@adacore.com>

	* checks.adb (Minimize_Eliminate_Overflow_Checks): Correct code
	for the division operation and exponent operation. Adjust bound
	for the mod and rem operations.

2012-10-05  Robert Dewar  <dewar@adacore.com>

	* checks.adb, checks.ads, s-tassta.adb, s-stposu.adb, s-spsufi.adb,
	s-spsufi.ads, exp_ch4.adb: Minor reformatting.

2012-10-05  Yannick Moy  <moy@adacore.com>

	* switch-c.adb, checks.adb, checks.ads, sem_prag.adb, exp_ch4.adb,
	osint.adb: Minor correction of typos, and special case for Alfa mode.

2012-10-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-spsufi.adb: Add with clause for Ada.Unchecked_Deallocation.
	Add with and use clauses for System.Finalization_Masters.
	(Finalize_And_Deallocate): Add an instance of
	Ada.Unchecked_Deallocation. Merge the code from the now obsolete
	Finalize_Subpool into this routine.
	* s-spsufi.ads: Add pragma Preelaborate.
	* s-stposu.adb: Remove with clause for
	Ada.Unchecked_Deallocation; Add with and use clauses for
	System.Storage_Pools.Subpools.Finalization; (Finalize_Pool):
	Update the comment on all actions takes with respect to a subpool
	finalization. Finalize and deallocate each individual subpool.
	(Finalize_Subpool): Removed.
	(Free): Removed;
	(Detach): Move from package body to spec.
	* s-stposu.ads (Detach): Move from package body to spec.
	(Finalize_Subpool): Removed.

2012-10-05  Arnaud Charlet  <charlet@adacore.com>

	* s-tassta.adb: Update comments.
	(Vulnerable_Complete_Master): If Free_On_Termination is set, do
	nothing, and let the task free itself if not already done.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Set_Membership): Warn on duplicates.

2012-10-04  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Getopt): Fix value of Full_Switch returned in case of
	invalid switch.

2012-10-04  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb (Fold_Str, Fold_Uint, Fold_Ureal): Reset static
	expression state after Resolve call.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma. case Warnngs): Don't make entry
	in the table for Warnings Off pragmas if within an instance.

2012-10-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb (Analyze_Entry_Body): Transfer
	Has_Pragma_Unreferenced flag from entry formal to corresponding
	entity in body, to prevent spurious warnings when pragma is
	present.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* s-bignum.adb (Big_Exp): Raise Storage_Error for ludicrously
	large results.

2012-10-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Duplicate_Aspects): Diagnose properly
	aspects that appear in the partial and the full view of a type.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads (N_Return_Statement): Removed.

2012-10-04  Tristan Gingold  <gingold@adacore.com>

	* init.c (__gl_zero_cost_exceptions): Comment it as not used
	anymore.
	* bindgen.adb (Gen_Adainit): Do not emit Zero_Cost_Exceptions
	anymore.

2012-10-04  Thomas Quinot  <quinot@adacore.com>

	* prep.adb, prepcomp.adb, gprep.adb, opt.ads: New preprocessor switch
	-a (all source text preserved).

2012-10-04  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb (Recursive_Process): Use project directory
	display path name as the value of 'Project_Dir.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_Compare_Minimize_Eliminate_Overflow):
	Deal with case where we get a bignum operand and cannot do a
	range analysis.
	* sem_eval.adb (Why_Not_Static): Deal with bignum operands

2012-10-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Find_Unary_Types): Within an instance, an
	interpretation that involves a predefied arithmetic operator is
	not a candidate if the corresponding generic formal type is not
	a numeric type.
	* sem_util.ads, sem_util.adb (Corresonding_Generic_Type): If a
	type is a generic actual type within an instance, return the
	corresponding formal in the generic unit, otherwise return
	Any_Type.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Minimize_Eliminate_Overflow_Checks): Dont reanalyze
	if/case expression if nothing has changed (just reexpand). Stops
	case expression from generating incorrect temporary.
	* exp_ch4.adb (Expand_Compare_Minimize_Eliminate_Overflow):
	Fix cut and paste typo for range analysis in NE (not equal) case.
	* sem_eval.adb (Compile_Time_Compare): Small optimization to
	catch some more cases.
	* types.ads (Suppressed_Or_Checked): New subtype of
	Overflow_Check_Type.

2012-10-04  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Set_CPP_Constructors_Old): Removed.
	(Set_CPP_Constructors): Code cleanup.

2012-10-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Is_Ancestor_Unit): Make global, for use elsewhere.
	(Install_Private_with_Clauses): if clause is private and limited,
	do not install the limited view if the library unit is an ancestor
	of the unit being compiled.  This unusual configuration occurs
	when compiling a unit DDP, when an ancestor P of DDP has a
	private limited with clause on a descendant of P that is itself
	an ancestor of DDP.

2012-10-04  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb (Process_Package_Declaration): Use project
	directory display path name as the value of 'Project_Dir.

2012-10-04  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb (Build_Allocate_Deallocate_Proc): The subpool can be
	given by an arbitrary name, so copy the tree to make the call's actual.

2012-10-04  Robert Dewar  <dewar@adacore.com>

	* s-exnllf.adb, s-exnllf.ads: Minor reformatting.

2012-10-04  Thomas Quinot  <quinot@adacore.com>

	* exp_ch6.adb: Minor reformatting.

2012-10-04  Pascal Obry  <obry@adacore.com>

	* projects.texi: Use consistently @command{} when referencing
	commands. Fix typos.

2012-10-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (New_Overloaded_Entity): call
	Append_Inherited_Subprogram when appropriate.
	* sem_dim.adb (Analyze_Dimension_Call): Do not perform dimensional
	analysis if call has previous semantic error.
	* sem_util.ads, sem_util.adb (Append_Inherited_Subprogram):
	new subprogram to handle properly the visibility of inherited
	operations that are primitives of a type extension, when the
	parent type and operations are declared in the same visible part.

2012-10-03  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Minimize_Eliminate_Overflow_Checks): Properly
	handle case of top level expression within type conversion
	* gnat1drv.adb (Adjust_Global_Switches): Set SUPPRESSED as
	default for overflow checking for -gnatg mode (includes run-time).
	* sem_res.adb (Resolve_Type_Conversion): Avoid bogus warnings
	about redundant conversions from MINIMIZED/EXTENDED mode checking

2012-10-03  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator_Expression): Minor code
	reorganization and cleanup. Done to ensure proper management of
	the C++ constructor covering tagged and untagged types and also
	non-default constructors.
	* exp_ch6.ads, exp_ch6.adb (Make_CPP_Constructor_Call_In_Allocator):
	New subprogram.

2012-10-03  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb: Minor typo fix.

2012-10-03  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
	Set Top_Level properly (to False) for operand of range of
	membership test.
	* exp_ch4.adb (Expand_Membership_Minimize_Eliminate_Overflow):
	Fix crash with -gnato3 and membership operations.
	(Expand_Membership_Minimize_Eliminate_Overflow): Fix error message
	and wrong results for -gnato3 large expression and predicated
	subtype.
	(Expand_Membership_Minimize_Eliminate_Overflow): Use
	expression action node to avoid using insert actions (bombs in
	some cases).
	(Expand_Compare_Minimize_Eliminate_Overflow): Use expression action
	node to avoid using insert actions (bombs in some cases).

2012-10-03  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Set_CPP_Constructors_Old): Handle constructor of
	untagged type that has all its parameters with defaults and hence it
	covers the default constructor.

2012-10-03  Yannick Moy  <moy@adacore.com>

	* checks.adb, sem_prag.adb, s-bignum.ads: Minor typo fixes.

2012-10-03  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Connect_Socket, version with timeout): When the
	newly-connected socket is reported as available for writing, check
	whether it has a pending asynchronous error prior to returning.

2012-10-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Conformance): Additional info when subtype
	conformance fails, due to a missing null exclusion indicatar in
	a formal that must match a controlling access formal.

2012-10-02  Ben Brosgol  <brosgol@adacore.com>

	* gnat_rm.texi: Minor editing.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Function_Return): Reject a return
	expression whose type is a local access to subprogram type.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb: Minor improvement to Compile_Time_Compare.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
	Fix base type problem that resulted in improper conversion.
	(Minimize_Eliminate_Overflow_Checks): Properly handle top
	level case to avoid unnecessary conversion to bignum or LLI.
	(Minimize_Eliminate_Overflow_Checks): Implement uniform two phase
	approach for arithmetic operators and for if/case expressions.
	* checks.ads: Minor comment fix.
	* exp_ch4.adb (Minimized_Eliminated_Overflow_Check): New function,
	implements a uniform way of treating minimized/eliminated checks in
	two phases.
	(Expand_Compare_Minimize_Eliminate_Overflow): Fix cut and
	paste error resulting in wrong results for less than in some
	cases.	(Expand_Membership_Minimize_Eliminate_Overflow):
	Fix error caused by incorrect capture of operand types.
	(Expand_Membership_Minimize_Eliminate_Overflow): Fix error in
	handling of bignum case.
	(Expand_N_Case_Expression): Implement
	proper two phase handling (Expand_N_If_Expression): Implement
	proper two phase handling (Expand_N_Op_Abs): Implement proper
	two phase handling ditto for all other arithmetic operators
	* sem_res.adb (Resolve_If_Expression): Avoid introducing
	unneeded conversions.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* s-bignum.adb (Big_Exp): 0**0 should be 1, not 0.
	(Big_Exp): Fix possible error for (-1)**0.
	(Big_Exp): Fix error in computing 2**K for small K.
	(Big_Mod): Fix wrong sign for negative operands.
	(Div_Rem): Fix bad results for operands close to 2**63.
	* s-bignum.ads: Add documentation and an assertion to require
	LLI size to be 64 bits.
	* sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Do not
	allow ELIMINATED if LLI'Size is other than 64 bits.
	* switch-c.adb (Scan_Switches): Do not allow -gnato3 if LLI'Size
	is not 64 bits.
	* switch.ads (Bad_Switch): Add missing pragma No_Return.
	* gnat_ugn.texi: Added appendix on Overflow Check Handling in GNAT.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* sem_type.adb: Minor reformatting.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb: Minor reformatting.

2012-10-02  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Set_CPP_Constructors): Handle constructor with default
	parameters that covers the default constructor.

2012-10-02  Yannick Moy  <moy@adacore.com>

	* s-bignum.adb: Minor stylistic and comment corrections.

2012-10-02  Pascal Obry  <obry@adacore.com>

	* prj-util.adb (For_Interface_Sources): Iterate over all sources in
	aggregate library projects.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Direct_Name): The left-hand side of an
	assignment may designate a generalized reference.

2012-10-02  Eric Botcazou  <ebotcazou@adacore.com>

	* types.h (N_Return_Statement): Delete.
	* gcc-interface/trans.c (gnat_to_gnu): Replace N_Return_Statement with
	N_Simple_Return_Statement.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): in a generic context, aspects must
	be analyzed because they may be queried subsequently within the
	generic unit, even if no other freezing actions are generated
	for an entity.
	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): iterator
	aspects must be analyzed because they are delayed aspects and
	the corresponding attribute definition clause may not have been
	analyzed yet.

2012-10-02  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor editing.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* sinfo.adb, sinfo.ads, sem_util.adb, sem_util.ads, types.h,
	exp_ch4.adb, exp_ch6.adb: Get rid of internal use of N_Return_Statement.

2012-10-02  Eric Botcazou  <ebotcazou@adacore.com>

	* types.h: Minor cosmetic fix.

2012-10-02  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interfaces/decl.c (elaborate_expression_1): Use the variable for
	bounds of loop iteraration scheme only for locally defined subtypes.

	* gcc-interface/trans.c (gigi): Fix formatting.
	(build_return_expr): Apply the NRV optimization only for BLKmode.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Remove refs of N_Conditional_Expression and
	N_Parameterized_Expression.

2012-10-02  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb (Get_Component_Val): Rewrite code that computes
	justification of bits in enclosing word in an attempt to make
	it clearer.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, sem_ch3.adb, layout.adb, exp_ch7.adb, exp_imgv.adb,
	exp_util.adb, exp_util.ads, exp_attr.adb, sinfo.adb, sinfo.ads,
	exp_ch9.adb, style.ads, scos.ads, debug.adb, einfo.ads, scng.adb,
	checks.adb, checks.ads, sem.adb, par-ch4.adb, sem_util.adb, types.h,
	sem_res.adb, expander.adb, scans.ads, par.adb, exp_ch2.adb,
	gnat1drv.adb, stylesw.ads, sem_elab.adb, exp_ch4.adb, exp_ch4.ads,
	exp_ch6.adb, sem_ch4.adb, sem_ch4.ads, sem_ch6.adb,
	opt.ads, sem_eval.adb, sem_eval.ads, exp_intr.adb, sprint.adb,
	sprint.ads, styleg.ads: Change name Conditional_Expression to
	If_Expression.
	* gcc-interface/trans.c (gnat_to_gnu): Replace
	N_Conditional_Expression by N_If_Expression.
	* gcc-interface/Make-lang.in: Update dependencies.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Use expression with actions
	for x ** 4.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: (Analyze_Iterator_Specification): If container
	has a variable indexing aspect, the element is a variable and
	is modifiable in the loop. This check is also performed when the
	loop is expanded, but it must be done in semantic analysis when
	expansion is disabled, for example for ASIS usage.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Generate_Reference): If a child subprogram
	has no previous spec, treat a reference to its formals (such
	as a parameter association) as coming from source in order to
	generate the proper references and enable gps navigation between
	reference and declaration.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Checked_Suppressed):
	New name for Apply_Arithmetic_Overflow_Normal
	(Apply_Arithmetic_Overflow_Minimized_Eliminated):
	Add handling for conditional expressions
	(Is_Signed_Integer_Arithmetic_Op): Now includes conditional
	expressions (Minimize_Eliminate_Overflow_Checks): Handle
	conditional expressions.
	* checks.ads: Minor comment fixes.
	* exp_ch4.adb (Expand_N_Case_Expression): Call
	Apply_Arithmetic_Overflow_Check (Expand_N_Conditional_Expression):
	Call Apply_Arithmetic_Overflow_Check
	* s-bignum.adb (Normalize): Remove incorrect precondition.
	* sem_res.adb (Resolve_Case_Expression): Set Do_Overflow_Check
	flag (Resolve_Conditional_Expression): Set Do_Overflow_Check flag.
	* sinfo.adb: Add Do_Overflow_Check for conditional expressions.
	* sinfo.ads: Minor documentation updates.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Do not introduce
	indirections when the type of the alternatives is an access type:
	more efficient, and removes anomalies when an alternative is
	statically null.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* aspects.ads: Minor comment addition (Invariant is a GNAT aspect).

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb, sem_dim.adb, sem_dim.ads, prj-part.adb, checks.adb,
	freeze.adb, sem_ch4.adb, sem_ch13.adb: Minor reformatting.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Fix
	typo preventing proper processing of Overflow_Checks pragmas
	for general case.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Mod): Fix crash in ELIMINATED overflow
	checks mode when bignum mode is used.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* stylesw.ads, gnat_ugn.texi: Document new style rule for NOT IN.
	* par-ch4.adb (P_Relational_Operator): Add style check for NOT IN.
	* style.ads, styleg.adb, styleg.ads (Check_Not_In): New procedure.

2012-10-02  Vincent Pucci  <pucci@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Check dimension for attribute
	Old before it gets expanded.
	* sem_dim.adb (Analyze_Dimension_Has_Etype): Correctly propagate
	dimensions for identifier.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): Handle properly the case
	where the iterator type is derived locally from an instantiation
	of Ada.Iterators_Interface.
	* exp_ch7.adb (Establish_Transient_Scope): Do not create a
	transient scope if within the expansion of an iterator loop,
	because a transient block already exists.

2012-10-02  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Use absolute path for configuration pragmas files
	* make.adb (Configuration_Pragmas_Switch.Absolute_Path): Moved
	to Makeutl.
	* makeutl.ads, makeutl.adb (Absolute_Path): New function, moved from
	make.adb.

2012-10-02  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Post_Parse_Context_Clause): Resurrect Boolean
	parameter In_Limited.  Check for circularity also if In_Limited
	is True.
	(Parse_Single_Project): Call Post_Parse_Context_Clause with
	In_Limited parameter.

2012-10-02  Bob Duff  <duff@adacore.com>

	* checks.adb (Apply_Predicate_Check): Disable check in -gnatc mode.

2012-10-02  Vincent Pucci  <pucci@adacore.com>

	* sem_ch6.adb (Analyze_Function_Call): Dimension propagation
	for function calls moved to Analyze_Dimension_Call.
	* sem_dim.adb (Analyze_Dimension_Call): Properly propagate the
	dimensions from the returned type for function calls.

2012-10-02  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb: Take into account any configuration pragma file
	in the project files for gnat pretty/stub/metric.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Indexing_Functions): Refine several tests
	on the legality of indexing aspects: Constant_Indexing functions
	do not have to return a reference type, and given an indexing
	aspect Func, not all overloadings of Func in the current scope
	need to be indexing functions.

2012-10-02  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnat_ugn.texi: Adjust docs for overflow checks to be VMS-friendly.

2012-10-02  Vincent Celier  <celier@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Recognize switches
	-gnatox and -gnatoxx when x=0/1/2/3.

2012-10-02  Vincent Pucci  <pucci@adacore.com>

	* sem_ch4.adb (Analyze_Indexed_Component_Form): Dimension
	analysis for indexed components added.
	* sem_ch6.adb (Analyze_Function_Call): Dimension propagation
	for function calls added.
	* sem_dim.adb (Analyze_Dimension): Call to
	Analyze_Dimension_Has_Etype when N is a function call.
	(Analyze_Dimension_Call): Don't propagate anymore the dimensions
	for function calls since this is now treated separately in
	Analyze_Dimension_Has_Etype.
	(Analyze_Dimension_Has_Etype): For
	attribute references, propagate the dimensions from the prefix.
	* sem_dim.ads (Copy_Dimensions): Fix comment.

2012-10-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.ads, checks.adb (Apply_Parameter_Aliasing_Checks): New routine.
	(Apply_Parameter_Aliasing_And_Validity_Checks): This routine
	has been split into two.
	(Apply_Parameter_Validity_Checks): New routine.
	* exp_ch6.adb (Expand_Call): Add checks to verify that actuals
	do not overlap. The checks are made on the caller side to overcome
	issues of parameter passing mechanisms.
	* freeze.adb (Freeze_Entity): Update call to
	Apply_Parameter_Aliasing_And_Validity_Checks.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Is_Empty_Range): Use bounds of index type
	to determine whether an array is empty when optimizing
	a quantified expression over a null range. Use of RM_Size
	was incorrect. Analyze condition before constant-folding the
	expression to catch potential errors. Modify the error message
	to avoid mathematical terminology.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* usage.adb, gnat_rm.texi, vms_data.ads: Add entry for
	/OVERFLOW_CHECKS=?? generating -gnato?? for control
	of extended overflow checking.
	* ug_words: Add entry for -gnato?? for /OVERFLOW_CHECKS=??
	* gnat_ugn.texi: Add documentation for -gnato?? for control of overflow
	checking mode.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Quantified_Expression): If the iterator in
	a quantified expression is statically known to be null (e.g. a
	array with an empty index type) emit a warning.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* sem_dim.adb: Minor code reorganization.
	* sem_dim.ads: Add comment.

2012-10-02  Robert Dewar  <dewar@adacore.com>

	* checks.ads, exp_ch4.adb, checks.adb
	(Minimize_Eliminate_Overflow_Checks): Add Top_Level parameter to avoid
	unnecessary conversions to Bignum.
	Minor reformatting.

2012-10-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_PPCs): Generate invariant checks for a
	return value whose type is an access type and whose designated
	type has invariants. Ditto for in-out parameters and in-parameters
	of an access type.
	* exp_ch3.adb (Build_Component_Invariant_Call): Add invariant check
	for an access component whose designated type has invariants.

2012-10-01  Vincent Pucci  <pucci@adacore.com>

	* sem_aggr.adb (New_Copy_Tree_And_Copy_Dimensions): New routine.
	(Resolve_Record_Aggregate): New_Copy_Tree calls replaced by
	New_Copy_Tree_And_Copy_Dimensions calls. Move_Dimensions call
	replaced by Copy_Dimensions call.
	* sem_dim.adb (Analyze_Dimension_Component_Declaration): Don't
	remove the dimensions of expression in component declaration anymore.
	(Copy_Dimensions): New routine.
	(Move_Dimensions): Add call to Copy_Dimensions.
	* sem_dim.ads (Copy_Dimensions): New routine.
	(Move_Dimensions): Spec moved to body of Sem_Dim.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Predicate_Check): If the predicate is a
	static one and the operand is static, evaluate the predicate at
	compile time.
	* sem_eval.ads, sem_eval.adb (Eval_Static_Predicate_Check): new
	procedure, to evaluate a static predicate check whenever possible.
	* sem_res.adb (Resolve_Type_Conversion): Apply predicate check
	on the conversion if the target type has predicates.

2012-10-01  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb (Has_Symbols): Complain if parameter Symbol has been
	provided by the user in the dimension output call.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Divide_Checks): New name for
	Apply_Divide_Check (Minimize_Eliminate_Overflow_Checks):
	Add code to handle division (and rem and mod) properly.
	(Apply_Division_Check): New procedure (Apply_Divide_Checks):
	Use Apply_Division_Check (Apply_Divide_Checks): Use
	Apply_Arithmetic_Overflow_Minimized_Eliminated.
	* checks.ads (Apply_Divide_Checks): New name for
	Apply_Divide_Check, also add clearer documentation for this
	routine and put in alfa order.
	* exp_ch4.adb (Apply_Divide_Checks): New name for
	Apply_Divide_Check.
	* s-bignum.adb (To_Bignum): Handle largest negative integer
	properly.
	* sem.adb (Analyze): Handle overflow suppression correctly
	(Analyze_List): Handle overflow suppression correctly
	* sem_res.adb (Analyze_And_Resolve): Handle overflow suppression
	correctly.

2012-10-01  Vasiliy Fofanov  <fofanov@adacore.com>

	* s-oscons-tmplt.c, g-socket.ads: Revert previous change, breaks VMS.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Minimize_Eliminate_Overflow_Checks): Changes
	for exponentiation.
	* exp_ch4.adb (Expand_N_Op_Expon): Changes for Minimize/Eliminate
	overflow checks.
	* s-bignum.adb (Compare): Fix bad precondition.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): If the derived
	type has new discriminantss that constrain inherited ones, use
	the discriminant type in the original declaration to check for
	conformance, because in the presence of array components with a
	smaller range that are constrained by the origina discriminant,
	the compiler will have created a narrower subtype for that
	discriminant.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
	Handle case of appearing in range in membership test.
	* exp_ch4.adb (Expand_Membership_Minimize_Eliminate_Overflow):
	New procedure (Expand_N_In): Use
	Expand_Membership_Minimize_Eliminate_Overflow.
	* rtsfind.ads: Add RE_Bignum_In_LLI_Range.
	* s-bignum.ads, s-bignum.adb (Bignum_In_LLI_Range): New function.
	* sinfo.ads, sinfo.adb (No_Minimize_Eliminate): New flag.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* uintp.ads: Minor reformatting.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb: Improve warning message.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb: Minor reformatting.

2012-10-01  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Suppress tag
	assignment for initializations that are aggregates.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_Compare_Minimize_Eliminate_Overflow):
	New procedure.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Minimize_Eliminate_Checks): Changes from testing.
	(Apply_Arithmetic_Overflow_Minimized_Eliminated): Changes
	from testing.
	* sinfo.ads: Remove note on not setting Entity field in overflow
	case since this is no longer true.
	* Makefile.rtl: Add s-bignum.o

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* Make-generated.in: Correction to previous change for s-oscons
	target.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* s-bignum.adb (Allocate_Bignum): Reorganize to kill strict
	aliasing warning.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Overflow_Check_Mode): New function
	(Apply_Overflow_Check): New procedure (Is_Check_Suppressed):
	Moved here from Sem, Overflow_Check case now specially treated.
	* checks.ads (Overflow_Check_Mode): New function
	(Is_Check_Suppressed): Moved here from Sem (more logical)
	* exp_ch4.adb (Substitute_Valid_Check): Suppress warning about
	optimization if we are in MINIMIZED or ELIMINATED overflow
	checking mode and within an assertiom expression.
	* rtsfind.ads: Add entries for Bignum stuff.
	* s-bignum.ads, s-bignum.adb: New files.
	* sem.ads, sem.adb (Is_Check_Suppressed): Moved to Checks, more logical.
	* sem_prag.adb (Process_Suppress_Unsuppress): New behavior for
	Unsuppress of Overflow_Check (sets Checked instead of Minimized)
	* sem_res.adb: Update comments.
	* sinfo.ads (N_Op): Add documentation on overflow handling.
	* tbuild.ads, tbuild.adb (Convert_To_And_Rewrite): New procedure.
	* types.ads (Minimized_Or_Eliminated): New subtype.

2012-10-01  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb (Layout_Type): Do not set twice the address size
	on an access-to-unconstrained array if Debug_Flag_6 is set.

2012-10-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Remove the specialized
	code which prevents freezing when the declarative list contains
	a _postconditions body. This is no longer needed because the
	body is now inserted at the end of the declarations.
	* sem_ch6.adb (Insert_After_Last_Declaration): New routine.
	(Insert_Before_First_Source_Declaration): Removed.
	(Process_PPCs): Insert the _postconditions body at the end of
	the declarative list to prevent premature freezing of types that
	appear in the declarations.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb, sem_dim.adb: Minor reformatting.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Process_Convention, Process_Import_Or_Interface):
	Adjust test so that when the pragma comes from an aspect
	specification it only applies to the entity in the original
	declaration.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* gnat_ugn.texi: Document new command line switch -fada-spec-parent.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, g-socket.ads: Minor code improvement: use gcc
	builtin __alignof__ to get the alignment of struct fd_set.

2012-10-01  Vincent Pucci  <pucci@adacore.com>

	* exp_ch6.adb (Expand_Call): Remove call to
	Remove_Dimension_In_Call.
	* sem_aggr.adb (Resolve_Array_Aggregate): Analyze dimension of
	components in array aggregate.
	(Resolve_Aggr_Expr): Propagate dimensions from the original expression
	Expr to the new created expression New_Expr when resolving the
	expression of a component in record aggregates.
	(Resolve_Record_Aggregate): Analyze
	dimension of components in record (or extension) aggregate.
	* sem_ch6.adb (Analyze_Subprogram_Specification): Analyze
	dimension of formals with default expressions in subprogram
	specification.
	* sem_ch8.adb (Analyze_Expanded_Name): Analyze dimension of
	expanded names.
	(Find_Selected_Component): Analyze dimension of selected component.
	* sem_dim.adb: Several dimension error messages reformatting.
	(Dimensions_Msg_Of): New flag Description_Needed in order to
	differentiate two different sort of dimension error messages.
	(Dim_Warning_For_Numeric_Literal): New routine.
	(Exists): New routine.
	(Move_Dimensions): Routine spec moved to spec file.
	* sem_dim.ads (String_From_Numeric_Literal): New routine.
	(Analyze_Dimension): Analyze dimension only when the
	node comes from source.  Dimension analysis for expanded names added.
	(Analyze_Dimension_Array_Aggregate): New routine.
	(Analyze_Dimension_Call): New routine.
	(Analyze_Dimension_Component_Declaration): Warning if default
	expression is a numeric literal.
	(Analyze_Dimension_Extension_Or_Record_Aggregate): New routine.
	(Analyze_Dimension_Formals): New routine.
	(Analyze_Dimension_Object_Declaration): Warning if default
	expression is a numeric literal.
	(Symbol_Of): Return either the dimension subtype symbol or the
	dimension symbol built by From_Dim_To_Str_Of_Unit_Symbols.
	* sem_dim.ads (Analyze_Dimension_Array_Aggregate): New routine.
	(Analyze_Dimension_Call): New routine.
	(Analyze_Dimension_Extension_Or_Record_Aggregate): New routine.
	(Analyze_Dimension_Formals): New routine.
	(Move_Dimensions): Moved from sem_dim.adb.
	* s-dimmks.ads: Turn off the warnings for dimensioned object
	declaration.  Dimensioned subtypes sorted in alphabetical
	order. New subtypes Area, Speed, Volume.
	* s-dmotpr.ads: Turn off the warnings for dimensioned object
	declaration.
	* sem_res.adb (Resolve_Call): Analyze dimension for calls.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* Make-generated.in: Minor cleanup of all targets: use
	MOVE_IF_CHANGE to put generated files in place, to avoid useless
	recompilations.

2012-10-01  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Expand_Dispatching_Call): For functions returning
	interface types add an implicit conversion to the returned object
	to force the displacement of the pointer to the returned object
	to reference the corresponding secondary dispatch table. This
	is needed to handle well combined calls involving secondary
	dispatch tables (for example Obj.Prim1.Prim2).
	* exp_ch4.adb (Expand_Allocator_Expression): Declare internal
	access type as access to constant or access to variable depending
	on the context. Found working in this ticket.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Predicate_Check): Do not apply check to
	actual of predicate checking procedure, to prevent infinite
	recursion.

2012-10-01  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	(GCC_LINK): Add -static-libstdc++.

2012-10-01  Arnaud Charlet  <charlet@adacore.com>

	* a-catizo.adb, a-stwiun.adb, a-cdlili.adb, a-cihama.adb, a-direct.adb,
	a-coinve.adb, a-calend.adb, a-ciorse.adb, a-coorma.adb, a-cfdlli.adb,
	a-stzunb-shared.adb, a-cfhase.adb, bindgen.adb, ceinfo.adb, a-tags.adb,
	einfo.adb, checks.adb, eval_fat.adb, a-cborma.adb, a-stwifi.adb,
	a-tifiio.adb, a-textio.adb, a-cidlli.adb, a-strunb-shared.adb,
	a-cimutr.adb, a-calcon.adb, a-exexpr-gcc.adb, a-ciormu.adb,
	a-stzunb.adb, a-stzsea.adb, a-ngelfu.adb, a-stzfix.adb,
	a-cihase.adb, a-cohama.adb, a-exetim-posix.adb, a-dirval-vms.adb,
	a-caldel-vms.adb, a-coorse.adb, errout.adb,
	a-except.adb, butil.adb, a-dirval-mingw.adb, a-cforma.adb,
	a-except-2005.adb, a-wtedit.adb, cstand.adb, a-stwiun-shared.adb,
	a-cbhama.adb, a-direio.adb, clean.adb, a-cborse.adb, back_end.adb,
	binde.adb, a-exexda.adb, a-comutr.adb, a-ciorma.adb, a-cobove.adb,
	a-coormu.adb, a-teioed.adb, a-convec.adb, a-wtenau.adb, exp_aggr.adb,
	a-ztedit.adb, a-cohase.adb, a-exetim-mingw.adb, bcheck.adb,
	a-dynpri.adb, a-cfhama.adb, a-calfor.adb, a-cbdlli.adb,
	a-crdlli.adb, a-cbmutr.adb, a-sequio.adb, a-ngcoar.adb, a-cforse.adb,
	a-strunb.adb, a-calend-vms.adb, a-clrefi.adb, a-cofove.adb,
	a-ztenau.adb, a-strfix.adb, a-cbhase.adb, a-stzsup.adb: Minor
	reformatting.

2012-10-01  Vincent Pucci  <pucci@adacore.com>

	PR ada/54614
	* s-gearop.adb (Vector_Matrix_Product): Fix dimension check and index
	of Left in S evaluation.

2012-10-01  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Avoid
	premature freezing caused by the internally generated subprogram
	_postconditions.
	* checks.adb (Expr_Known_Valid): Float literals are assumed to be valid
	in VM targets.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* sinput.ads, sinput.adb, sinput-l.adb sinput-c.adb (Sinput): New
	Instances table, tracking all generic instantiations. Source file
	attribute Instance replaces previous Instantiation attribute with an
	index into the Instances table.
	(Iterate_On_Instances): New generic procedure.
	(Create_Instantiation_Source): Record instantiations in Instances.
	(Tree_Read, Tree_Write): Read/write the instance table.
	* scils.ads, scos.adb (SCO_Instance_Table): New table, contains
	information copied from Sinput.Instance_Table, but self-contained
	within the SCO data structures.
	* par_sco.ads, par_sco.adb (To_Source_Location): Move to library level.
	(Record_Instance): New subprogram, used by...
	(Populate_SCO_Instance_Table): New subprogram to fill
	the SCO instance table from the Sinput one (called by SCO_Output).
	* opt.ads (Generate_SCO_Instance_Table): New option.
	* put_scos.adb (Write_Instance_Table): New subprogram, used by...
	(Put_SCOs): Dump the instance table at the end of SCO information
	if requested.
	* get_scos.adb (Get_SCOs): Read SCO_Instance_Table.
	* types.h: Add declaration for Instance_Id.
	* back_end.adb (Call_Back_End): Pass instance ids in source file
	information table.
	(Scan_Back_End_Switches): -fdebug-instances sets
	Opt.Generate_SCO_Instance_Table.
	* gcc-interface/gigi.h: File_Info_Type includes instance id.
	* gcc-interface/trans.c: Under -fdebug-instances, set instance
	id in line map from same in file info.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* sem_elab.adb: Minor reformatting
	(Check_Elab_Call): Minor fix to debugging code
	(add special circuit for the valid case where a 'Access attribute
	reference is passed to Check_Elab_Call).

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* exp_ch3.adb: Minor reformatting.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.ads (Build_Array_Invariant_Proc): moved to body.
	* exp_ch3.adb (Build_Array_Invariant_Proc,
	Build_Record_Invariant_Proc): transform into functions.
	(Insert_Component_Invariant_Checks): for composite types that have
	components with specified invariants, build a checking procedure,
	and make into the invariant procedure of the composite type,
	or incorporate it into the user- defined invariant procedure if
	one has been created.
	* sem_ch3.adb (Array_Type_Declaration): Checking for invariants
	on the component type is defered to the expander.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* xsnamest.adb, namet.h, sem_ch10.adb, s-oscons-tmplt.c,
	xoscons.adb: Minor reformatting.

2012-10-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Parameter_Aliasing_And_Validity_Checks):
	Do not process subprogram renaminds because a) those cannot
	have PPC pragmas b) the renamed entity already has the PPCs.
	(Build_PPC_Pragma): Prepend a PPC pragma for consistency with
	Process_PPCs.
	* sem_ch6.adb (Last_Implicit_Declaration): Removed.
	(Process_PPCs): Insert a post condition body at the start of the
	declarative region of the related subprogram. This way the body
	will not freeze anything it shouldn't.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* freeze.adb, sem_ch6.adb, opt.ads, sem_ch13.adb,
	exp_ch3.adb: Minor reformatting.

2012-10-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Build_PPC_Pragma): A PPC pragma can now be properly
	associated with a subprogram body.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* aspects.ads: Type_Invariant'class is a valid aspect.
	* sem_ch6.adb (Is_Public_Subprogram_For): with the exception of
	initialization procedures, subprograms that do not come from
	source are not public for the purpose of invariant checking.
	* sem_ch13.adb (Build_Invariant_Procedure): Handle properly the
	case of a non-private type in a package without a private part,
	when the type inherits invariants from its ancestor.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Record_Invariant_Proc): new procedure to
	generate a checking procedure for record types that may have
	components whose types have type invariants declared.

2012-10-01  Vincent Pucci  <pucci@adacore.com>

	* system-solaris-sparcv9.ads, system-mingw.ads, system-vms_64.ads: Flag
	Support_Atomic_Primitives set to True.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* impunit.adb: Ada.Locales is a language defined unit.

2012-10-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Apply_Parameter_Aliasing_Checks): Removed.
	(Apply_Parameter_Aliasing_And_Validity_Checks): New routine.
	(Apply_Parameter_Validity_Checks): Removed.
	* checks.ads (Apply_Parameter_Aliasing_Checks): Removed.
	(Apply_Parameter_Aliasing_And_Validity_Checks): New routine.
	(Apply_Parameter_Validity_Checks): Removed.
	* exp_ch6.adb (Expand_Call): Remove the generation of parameter
	aliasing checks.
	* freeze.adb: Remove with and use clauses for Validsw.
	(Freeze_Entity): Update the guard and generation of aliasing
	and scalar initialization checks for subprogram parameters.
	* opt.ads: Add new flags Check_Aliasing_Of_Parameters and
	Check_Validity_Of_Parameters along with comments on usage.
	* sem_attr.adb (Analyze_Attribute): Pragma Overlaps_Storage is
	no longer an Ada 2012 feature.
	* sem_ch4.adb: Remove with and use clauses for Checks and Validsw.
	(Analyze_Call): Remove the generation of aliasing checks for
	subprogram parameters.
	* sem_ch13.adb: Remove with and use clauses for Validsw.
	(Analyze_Aspect_Specifications): Remove the generation of scalar
	initialization checks.
	* switch-c.adb (Scan_Front_End_Switches): Add processing for
	-gnateA and -gnateV.
	* usage.adb (Usage): Add information on switches -gnateA and
	-gnateV. Remove information on validity switches 'l', 'L',
	'v' and 'V'.
	* validsw.adb (Reset_Validity_Check_Options): Remove the
	reset of flags Validity_Check_Non_Overlapping_Params
	and Validity_Check_Valid_Scalars_On_Params.
	(Save_Validity_Check_Options): Remove the processing
	for flags Validity_Check_Non_Overlapping_Params
	and Validity_Check_Valid_Scalars_On_Params.
	(Set_Validity_Check_Options): Remove the processing
	for flags Validity_Check_Non_Overlapping_Params and
	Validity_Check_Valid_Scalars_On_Params.
	* validsw.ads: Remove flags Validity_Check_Non_Overlapping_Params
	and Validity_Check_Valid_Scalars_On_Params along with their
	comments on usage.

2012-10-01  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Add_Invariants): Analyze the invariant expression
	as an assertion expression.
	* sem_ch3.adb / sem_ch3.ads (Preanalyze_Assert_Expression):
	New procedure that wraps a call to Preanalyze_Spec_Expression
	for assertion expressions, so that In_Assertion_Expr can be
	properly adjusted.
	* sem_prag.adb (Analyze_PPC_In_Decl_Part
	Check_Precondition_Postcondition Preanalyze_CTC_Args): Call the
	new Preanalyze_Assert_Expression.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.ads: Minor reformatting.

2012-10-01  Yannick Moy  <moy@adacore.com>

	* types.ads, sem_prag.adb, sem.ads: Correct minor typos in comments.

2012-10-01  Vincent Celier  <celier@adacore.com>

	* make.adb (Scan_Make_Arg): Only test for "vP" of the option
	includes at least 3 characters.
	* gnatcmd.adb (GNATCmd): Ditto.

2012-10-01  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch7.adb, sinfo.ads: Add comments.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb: Remove reference to Enable_Overflow_Checks Use
	Suppress_Options rather than Scope_Suppress.
	* gnat1drv.adb (Adjust_Global_Switches): Handle new overflow
	settings (Adjust_Global_Switches): Initialize Scope_Suppress
	from Suppress_Options.
	* opt.adb: Remove Enable_Overflow_Checks (use Suppress_Options
	instead).
	* opt.ads: Remove Overflow_Checks_Unsuppressed (not used)
	Remove Enable_Overflow_Checks (use Suppress_Options instead)
	Suppress_Options is now current setting (replaces Scope_Suppress).
	* osint.adb (Initialize): Deal with initializing overflow
	checking.
	* par-prag.adb: Add dummy entry for pragma Overflow_Checks.
	* sem.adb (Semantics): Save and restore In_Assertion_Expr Use
	Suppress_Options instead of Scope_Suppress.
	* sem.ads (In_Assertion_Expr): New flag (Scope_Suppress):
	Removed, use Suppress_Options instead.
	* sem_eval.adb (Compile_Time_Compare): Return Unknown in
	preanalysis mode.
	* sem_prag.adb (Process_Suppress_Unsuppress): Setting of
	Overflow_Checks_Unsuppressed removed (not used anywhere!)
	(Analyze_Pragma, case Check): Set In_Assertion_Expression
	(Analyze_Pragma, case Overflow_Checks): Implement new pragma
	* snames.ads-tmpl: Add names needed for handling pragma
	Overflow_Checks
	* switch-c.adb (Scan_Front_End_Switches) Handle -gnato? and
	-gnato?? where ? is 0-3
	* types.ads: Updates and fixes to comment on Suppress_Record.

2012-10-01  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Parse): Remove incorrect comment about checking
	imported non extending projects from and "extending all"
	one. Minor correction.

2012-10-01  Robert Dewar  <dewar@adacore.com>

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

2012-10-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* validsw.adb (Save_Validity_Check_Options): Do not set
	Validity_Check_Non_Overlapping_Params and
	Validity_Check_Valid_Scalars_On_Params when -gnatVa is present
	because the related checks are deemed too aggressive.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads sem_util.adb (Check_Internal_Protected_Use):
	reject use of protected procedure or entry within the body of
	a protected function of the same protected type, when usage is
	a call, an actual in an instantiation, a or prefix of 'Access.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Verify that target
	object in renaming of protected procedure is a variable, and
	apply Check_Internal_Protected_Use.
	* sem_res.adb (Analyze_Call, Analyze_Entry_Call): apply
	Check_Internal_Protected_Use rather than on-line code.
	* sem_attr.adb (Analyze_Access_Attribute): Verify that target
	object in accsss to protected procedure is a variable, and apply
	Check_Internal_Protected_Use.

2012-10-01  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb (Find_Equality_Types.Try_One_Interp): Exclude the
	predefined interpretation from consideration if it's for a "/="
	operator of a tagged type. This will allow Analyze_Equality_Op to
	rewrite the "/=" as a logical negation of a call to the appropriate
	dispatching equality function. This needs to be done during
	analysis rather than expansion for the benefit of ASIS, which
	otherwise gets the unresolved N_Op_Ne operator from Standard.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* gnatcmd.adb, make.adb (Scan_Make_Arg, Inspect_Switches): Recognize
	and reject an invalid parameter passed to -vP.

2012-10-01  Yannick Moy  <moy@adacore.com>

	* sem_warn.adb (Check_Infinite_Loop_Warning/Test_Ref): Improve
	the detection of modifications to the loop variable by noting
	that, if the type of variable is elementary and the condition
	does not contain a function call, then the condition cannot be
	modified by side-effects from a procedure call.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb: Add comments.

2012-10-01  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Improve condition catching
	never-ending recursion. The previous condition erroneously disabled
	silently the expansion of the class-wide interface object
	initialization in cases not involving the recursion.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* make.adb: Minor documentation fix: error messages are sent to
	stderr, not stdout.

2012-10-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.ads, checks.adb (Apply_Parameter_Aliasing_Checks): New routine.
	(Apply_Parameter_Validity_Checks): New routines.
	* exp_ch6.adb (Expand_Call): Add aliasing checks to detect
	overlapping objects.
	* freeze.adb: Add with and use clauses for Checks and Validsw.
	(Freeze_Entity): Add checks to detect proper initialization
	of scalars.
	* sem_ch4.adb: Add with and use clauses for Checks and Validsw.
	(Analyze_Call): Add aliasing checks to detect overlapping objects.
	* sem_ch13.adb: Add with and use clauses for Validsw.
	(Analyze_Aspect_Specifications): Add checks to detect proper
	initialization of scalars.
	* sem_prag.adb (Chain_PPC): Correct the extraction of the
	subprogram name.
	* sem_util.adb (Is_Object_Reference): Attribute 'Result now
	produces an object.
	* usage.adb (Usage): Add usage lines for validity switches 'l',
	'L', 'v' and 'V'.
	* validsw.adb (Reset_Validity_Check_Options): Include
	processing for flags Validity_Check_Non_Overlapping_Params and
	Validity_Check_Valid_Scalars_On_Params. Code reformatting.
	(Save_Validity_Check_Options): Include processing
	for flags Validity_Check_Non_Overlapping_Params
	and Validity_Check_Valid_Scalars_On_Params.
	(Set_Validity_Check_Options): Add processing for validity switches
	'a', 'l', 'L', 'n', 'v' and 'V'. Code reformatting.
	* validsw.ads: Add new flags Validity_Check_Non_Overlapping_Params
	and Validity_Check_Valid_Scalars_On_Params along with comments
	on usage.

2012-10-01  Thomas Quinot  <quinot@adacore.com>

	* namet.ads, xsnamest.adb, prj-env.adb, sem_warn.adb,
	errout.ads: Minor reformatting.
	* prj-part.adb: Add comment.

2012-10-01  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads, exp_aggr.adb, sem_ch13.adb: Minor reformatting.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): Handle properly
	component associations given by subtypes that have static
	predicates.  Improve error message for overlapping ranges in
	array aggregates.

2012-10-01  Pascal Obry  <obry@adacore.com>

	* snames.ads-tmpl (Name_Link_Lib_Subdir): New constant.

2012-10-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb (Analyze_Requeue): The target of a requeue
	statement on a protected entry must be a variable. This is part
	of AI05-0225.

2012-09-26  Ian Lance Taylor  <iant@google.com>

	* gcc-interface/Makefile.in (LIBBACKTRACE): New variable.
	(LIBS): Add $(LIBBACKTRACE).
	(LIBDEPS): Add $(LIBBACKTRACE).
	(TOOLS_LIBS): Add ../../../libbacktrace/.libs/libbacktrace.a.

2012-09-10  Diego Novillo  <dnovillo@google.com>

	* gcc-interface/decl.c (build_subst_list): Adjust call to VEC_safe_push.
	(build_variant_list): Likewise.
	* gcc-interface/utils.c (convert): Adjust calls to VEC_quick_push.

2012-09-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Loop_Statement_to_gnu): Revert to using
	size_type_node instead of sizetype.

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

	* layout.adb (Set_Elem_Alignment): Cap the alignment of access types
	to that of a regular access type for non-strict-alignment platforms.
	* gcc-interface/utils.c (finish_fat_pointer_type): Do not set the
	alignment for non-strict-alignment platforms.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Use proper
	dummy type for the temporary COMPONENT_REF built for a derived tagged
	type with discriminant.

2012-08-14   Diego Novillo  <dnovillo@google.com>

	Merge from cxx-conversion branch.  Re-implement VEC in C++.

	* gcc-interface/trans.c (finalize_nrv_unc_r): Adjust VEC_index usage.
	* gcc-interface/utils.c (convert): Likewise.
	(remove_conversions): Likewise.
	* gcc-interface/utils2.c (compare_fat_pointers): Likewise.
	(build_unary_op): Likewise.
	(gnat_stabilize_reference): Likewise.

2012-08-06  Jose Ruiz  <ruiz@adacore.com>

	* gcc-interface/Makefile.in: Add support for 32-bit VxWorks for SPARC
	in kernel mode.

2012-08-06  Arnaud Charlet  <charlet@adacore.com>

	* prj-attr.adb (Register_New_Package): Add missing blank.

2012-08-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Is_Two_Dim_Packed_Array): New predicate,
	used when computing maximum size allowable to construct static
	aggregate.

2012-08-06  Vincent Pucci  <pucci@adacore.com>

	* freeze.adb (Freeze_Entity): Inherit_Aspects_At_Freeze_Point
	calls added for derived types and subtypes.
	* sem_aux.adb, sem_aux.ads (Get_Rep_Item, Get_Rep_Pragma,
	Has_Rep_Pragma): New routines.
	* sem_ch13.ads (Inherit_Aspects_At_Freeze_Point): New routine.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Error message
	for aspect Lock_Free fixed.
	(Inherits_Aspects_At_Freeze_Point): New routine.
	* sem_ch3.adb: Several flag settings removed since inheritance
	of aspects must be performed at freeze point.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c: Fix s-oscons.ads formatting on VxWorks.

2012-08-06  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Binary_Op): Issue an error message
	for unknown exponent at compile-time.

2012-08-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_eval.ads (Compile_Time_Known_Value_Or_Aggr): Enhance
	comment to make it clear that the aggregate's evaluation might
	still involve run-time checks even though the aggregate is
	considered known at compile time.
	* sinfo.ads (Compile_Time_Known_Aggregate): Correct comment to
	refer to Exp_Aggr instead of Sem_Aggr.

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* xoscons.adb: Minor code reorganization (remove unused variable
	E at line 331).
	* g-sercom.ads, exp_attr.adb: Minor reformatting.
	* sinfo.adb, sinfo.ads: Minor cleanup, remove unused flag
	Static_Processing_OK.

2012-08-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Concurrent_Type): Copy discriminant
	constraint when building a constrained subtype, to prevent
	undesirable tree sharing betweeb geberated subtype and derived
	type definition.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* g-sercom-mingw.adb, s-oscons-tmplt.c: Add missing constants
	on Windows.

2012-08-06  Sergey Rybin  <rybin@adacore.com frybin>

	* tree_io.ads: Update ASIS_Version_Number because of the tree fix
	for discriminant constraints for concurrent types.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb: Minor reformatting.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, xoscons.adb: Per the Single UNIX Specification,
	types cc_t, speed_t, and tcflag_t defined in <termios.h> all are
	unsigned types. Add required special handling to have their correct
	unsigned values in s-oscons.ads.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* par-ch13.adb: Minor reformatting.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* g-sercom.adb, g-sercom.ads, g-sercom-mingw.adb, g-sercom-linux.adb
	(Set): Add Local and Flow_Control settings.

2012-08-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb: Suppress saving of 'Old if assertions are not
	enabled.

2012-08-06  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Issue an error in
	Alfa mode for component not present.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb (Insert_Actions_In_Scope_Around): Do not
	use a renaming of Scope_Stack.Table (Scope_Stack.Last), as
	Process_Transient_Object may introduce new scopes and cause
	Scope_Stack.Table to be reallocated.

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, switch-c.adb, inline.ads, sem_ch10.adb, types.ads,
	checks.adb, sem_prag.adb, sem.adb, sem.ads, sem_res.adb, sem_attr.adb,
	gnat1drv.adb, exp_ch4.adb, exp_ch6.adb, opt.ads, osint.adb: Implement
	extended overflow checks (step 1).
	(Overflow_Check_Type, Suppress_Record, Suppress_All): New types.
	(Suppress_Array): Extended to include switches to control extended
	overflow checking (and renamed to Suppress_Record).
	Update all uses of Suppress_Array.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* makeutl.ads: Minor documentation fix.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb: Minor reformatting.

2012-08-06  Geert Bosch  <bosch@adacore.com>

	* a-ngelfu.adb: Change obsolete comment that this is a non-strict
	implementation.

2012-08-06  Steve Baird  <baird@adacore.com>

	* exp_ch7.adb (Build_Finalizer.Process_Object_Declaration): If
	CodePeer_Mode = True then omit exception handlers for finalization calls

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb: Minor reformatting.

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Remove useless flag Body_Deleted.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads (End_Span): Change default from No_Uint to Uint_0,
	as this is what all usage occurrences of this attribute are
	expecting.
	* uintp.adb (UI_To_Int): Add assertion to guard against calling
	with No_Uint.

2012-08-06  Vincent Pucci  <pucci@adacore.com>

	PR ada/54125
	* exp_attr.adb (Expand_N_Attribute_Reference): Expand new
	Atomic_Always_Lock_Free attribute.
	* sem_attr.adb (Analyze_Attribute): Analyze new
	Atomic_Always_Lock_Free attribute.
	(Eval_Attribute): Nothing to do with new Atomic_Always_Lock_Free
	attribute.
	* sem_ch9.adb (Allows_Lock_Free_Implementation):
	Support_Atomic_Primitives check replaces previous erroneous
	size check.
	* sem_util.adb, sem_util.ads (Support_Atomic_Primitives):
	New routine.
	* snames.ads-tmpl: New name Name_Atomic_Always_Lock_Free and
	new attribute Attribute_Atomic_Always_Lock_Free defined.
	* s-atopri.adb: Support_Atomic_Primitives checks replaced by
	Atomic_Always_Lock_Free queries.
	* system-aix64.ads, system-aix.ads, system-darwin-ppc.ads,
	system-hpux.ads, system-linux-alpha.ads, system-linux-hppa.ads,
	system-linux-ppc.ads, system-linux-s390.ads,
	system-linux-s390x.ads, system-linux-sh4.ads,
	system-linux-sparc.ads, system-lynxos178-ppc.ads,
	system-lynxos-ppc.ads, system-mingw.ads,
	system-vxworks-arm.ads, system-solaris-sparc.ads,
	system-solaris-sparcv9.ads, system-vms_64.ads,
	system-vxworks-m68k.ads, system-vxworks-mips.ads,
	system-vxworks-ppc.ads, system-vxworks-sparcv9.ads: Flag
	Support_Atomic_Primitives removed.

2012-08-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_mech.adb (Set_Mechanisms): OUT and IN OUT parameters are
	now unconditionally passed by reference. IN parameters subject
	to convention C_Pass_By_Copy are passed by copy, otherwise they
	are passed by reference.

2012-08-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): According to
	AI95-0303, protected objects with interrupt handlers can be
	declared in nested scopes. This is a binding interpretation,
	and thus applies to all versions of the compiler.

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* frontend.adb, exp_aggr.adb: Minor reformatting.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* par-endh.adb: Minor reformatting.

2012-08-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Transient_Objects): Remove obsolete loop
	processing related to array initialization. The expansion of
	loops already contains a mechanism to detect controlled objects
	generated by expansion and introduce a block around the loop
	statements for finalization purposes.

2012-08-06  Vincent Pucci  <pucci@adacore.com>

	* sem_ch13.adb: Current scope must be within
	or same as the scope of the entity while analysing aspect
	specifications at freeze point.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Add note about dubious SCO for TERMINATE
	alternative.
	* sem_ch8.adb, exp_ch11.adb: Minor reformatting.

2012-08-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Two_Dim_Packed_Array_Handled): New procedure to
	transform an aggregate for a packed two-dimensional array into
	a one-dimensional array of constant values, in order to avoid
	the generation of component-by-component assignments.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* frontend.adb: Do not attempt to process deferred configuration
	pragmas if the main unit failed to load, to avoid cascaded
	inconsistencies that can lead to a compiler crash.

2012-08-06  Vincent Pucci  <pucci@adacore.com>

	* s-atopri.adb: Minor reformatting.

2012-08-06  Arnaud Charlet  <charlet@adacore.com>

	* gnat-style.texi: Clarify that all subprograms should be
	documented. Minor rewording.

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* aspects.ads: Define Aspect_Id_Exclude_No_Aspect.
	* par-ch13.adb, restrict.adb: Use Aspect_Id_Exclude_No_Aspect to
	simplify code.

2012-08-06  Yannick Moy  <moy@adacore.com>

	* gnat-style.texi: Update style guide for declarations.

2012-08-06  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Analyze_Attribute): In the case for 'Old,
	skip a special expansion which is not needed in Alfa mode.

2012-08-06  Yannick Moy  <moy@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Do not perform
	an expansion of the iterator in Alfa mode.

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* s-oscons-tmplt.c, sem_ch9.adb, osint.adb: Minor reformatting.

2012-08-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Remove obsolete
	Alfa-specific guard. The code is a leftover from an early
	implementation of iterators which is no longer in use.

2012-08-06  Vincent Celier  <celier@adacore.com>

	* par-ch13.adb (Get_Aspect_Specifications): Do not consider
	No_Aspect when checking for a mispelled aspect.

2012-08-06  Robert Dewar  <dewar@adacore.com>

	* s-htable.adb: Minor reformatting.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, g-socket.adb (System.OS_Constants.Target_OS):
	Suppress warnings so that we don't have to do it at each usage.

2012-08-06  Vincent Pucci  <pucci@adacore.com>

	* exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body):
	Use of Known_Static_Esize instead of  Known_Esize and
	Known_Static_RM_Size instead of Known_RM_Size in order to
	properly call UI_To_Int. Don't check the size of the component
	type in case of generic.
	* sem_ch9.adb (Allows_Lock_Free_Implementation):
	Use of Known_Static_Esize instead of Known_Esize and
	Known_Static_RM_Size instead of Known_RM_Size in order to properly
	call UI_To_Int. Don't check the size of the component type in
	case of generic.

2012-08-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Discrete_Range_Cond): Do not try to optimize on
	the assumption that the type of an expression can always fit in
	the target type of a conversion.

2012-07-30  Robert Dewar  <dewar@adacore.com>

	* bindusg.adb: Clarify file in -A lines.

2012-07-30  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting.

2012-07-30  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb, makeutl.adb, makeutl.ads: Minor code reorganization.

2012-07-30  Vincent Pucci  <pucci@adacore.com>

	* exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body): Minor
	reformatting.
	* sem_ch9.adb (Allows_Lock_Free_Implementation): Minor reformatting.
	Capture the correct error message in case of a quantified expression.

2012-07-30  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Get_Socket_Option, Set_Socket_Option): On Windows, the
	value is a milliseconds count in a DWORD, not a struct timeval.

2012-07-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Earlier): Add local variables T1 and T2. Minor code
	refactoring.

2012-07-30  Thomas Quinot  <quinot@adacore.com>

	* gnatcmd.adb, make.adb, makeutl.adb, makeutl.ads
	(Test_If_Relative_Path): Rename to Ensure_Absolute_Path to better
	reflect what this subprogram does. Rename argument Including_L_Switch
	to For_Gnatbind, and also exempt -A from rewriting.
	* bindusg.adb: Document optional =file argument to gnatbind -A.

2012-07-30  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): Do no apply restriction check on
	storage pools to access to subprogram types.

2012-07-30  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, a-cihama.adb, a-coinve.adb, exp_ch7.adb, a-ciorse.adb,
	exp_ch9.adb, sem_dim.adb, par-ch13.adb, sem_ch9.adb, a-cidlli.adb,
	a-cimutr.adb, freeze.adb, a-ciormu.adb, sem_res.adb, sem_attr.adb,
	a-cihase.adb, exp_ch4.adb, sem_ch4.adb, a-ciorma.adb,
	s-tasinf-linux.ads, sem_ch13.adb, a-coinho.adb: Minor reformatting.
	Add comments.

2012-07-30  Vincent Pucci  <pucci@adacore.com>

	* sem_ch9.adb (Allows_Lock_Free_Implementation): Restrict implicit
	dereferences of access values.

2012-07-27  Iain Sandoe  <iain@codesourcery.com>

	* system-darwin-ppc64.ads: Add Support_Atomic_Primitives, set to True.

2012-07-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (gnat_stabilize_reference) <BIT_FIELD_REF>: Do
	not stabilize operand #1 and #2.

2012-07-23  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): Use
	End_Label sloc when possible for sloc of the TRY_CATCH_EXPR node.

2012-07-23  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/Makefile.in: Adjust processing of Linker_Options for
	VxWorks.
	* gcc-interface/Make-lang.in: Update dependencies.

2012-07-23  Arnaud Charlet  <charlet@adacore.com>

	* s-tasinf-linux.ads: Fix typo.

2012-07-23  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb, switch-m.adb, exp_ch3.adb, freeze.adb: Minor reformatting

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

	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): If original
	loop carries an identifier, preserve it when rewriting it as a
	standard loop to validate exit statements that may reference
	that name in the body of the loop.

2012-07-23  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb: Minor code cleanup.

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

	* sem_ch4.adb (Analyze_Selected_Component): When checking for
	potential ambiguities with class-wide operations on synchronized
	types, attach the copied node properly to the tree, to prevent
	errors during expansion.

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

	* sem_ch5.adb (Analyze_Loop_Statement): Make sure the loop body
	is analyzed in Alfa mode.

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

	* sem_res.adb: Adjust previous change.

2012-07-23  Vincent Pucci  <pucci@adacore.com>

	* sem_ch9.adb (Allows_Lock_Free_Implementation): Flag
	Lock_Free_Given renames previous flag Complain. Description
	updated. Henceforth, catch every error messages issued by this
	routine when Lock_Free_Given is True.  Declaration restriction
	updated: No non-elementary parameter instead (even in parameter)
	New subprogram body restrictions implemented: No allocator,
	no address, import or export rep items, no delay statement,
	no goto statement, no quantified expression and no dereference
	of access value.

2012-07-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Determine_Range): Add local variable Btyp. Handle
	the case where the base type of an enumeration subtype is
	private. Replace all occurrences of Base_Type with Btyp.
	* exp_attr.adb (Attribute_Valid): Handle the case where the
	base type of an enumeration subtype is private. Replace all
	occurrences of Base_Type with Btyp.
	* sem_util.adb (Get_Enum_Lit_From_Pos): Add local variable
	Btyp. Handle the case where the base type of an enumeration
	subtype is private. Replace all occurrences of Base_Type with
	Btyp.

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

	* par-ch6.adb (P_Mode): in Ada 2005, a mode indicator can apply
	to a formal object of an anonymous access type.

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

	* sem_ch4.adb (Try_Container_Indexing): A user-defined indexing
	aspect can have more than one index, e.g. to describe indexing
	of a multidimensional object.

2012-07-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Apply_Accessibility_Check): Reimplemented. The check is
	now more complex and contains optional finalization part and mandatory
	deallocation part.

2012-07-23  Gary Dismukes  <dismukes@adacore.com>

	* a-cihama.adb, a-cihase.adb, a-cimutr.adb, a-ciorma.adb, a-ciormu.adb,
	a-ciorse.adb, a-coinho.adb, a-coinve.adb, a-cidlli.adb: Unsuppress
	Accessibility_Check for Element_Type allocators.

2012-07-23  Vasiliy Fofanov  <fofanov@adacore.com>

	* projects.texi: Fix typo.

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

	* sem_res.adb (Resolve_Explicit_Derenference): If prefix is
	overloaded, remove those interpretations whose designated type
	does not match the context, to avoid spurious ambiguities that
	may be caused by the Ada 2012 conversion rule for anonymous
	access types.

2012-07-23  Vincent Celier  <celier@adacore.com>

	* g-spitbo.adb (Substr (String)): Return full string and do not
	raise exception when Start is 1 and Len is exactly the length
	of the string parameter.
	* g-spitbo.ads: Fix spelling error in the name of exception
	Index_Error.

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

	* par.adb: new subprogram Get_Aspect_Specifications.
	* par-ch6.adb (P_Subprogram): handle subprogram bodies with aspect
	specifications.
	* par-ch13.adb (Get_Aspect_Specifications): extracted from
	P_Aspect_Specifications. Collect aspect specifications in some
	legal context, but do not attach them to any declaration. Used
	when parsing subprogram declarations or bodies that include
	aspect specifications.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): If aspects are
	present, analyze them, or reject them if the subprogram as a
	previous spec.

2012-07-23  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnat_ugn.texi: Omit section on other platforms/runtimes support
	in gnattest for vms version.

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

	* sem_ch13.adb (Analyze_Aspect_Specifications):
	Handle properly aspects that can be specified on a subprogram
	body: CPU, Priority, and Interrupt_Priority.

2012-07-23  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads: Switch definition of Constant_Reference_Type
	and Empty_List.

2012-07-23  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Process_Decisions.Output_Header): For the guard
	on an alternative in a SELECT statement, use the First_Sloc
	of the guard expression (not its topmost sloc) as the decision
	location, because this is what is referenced by dominance markers.

2012-07-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Requires_Hooking): Examine the original expression
	of an object declaration node because a function call that
	returns on the secondary stack may have been rewritten into
	something else.

2012-07-23  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Has_Etype): For identifier, propagate
	dimension when entity is a non-dimensionless constant.
	(Analyze_Dimension_Object_Declaration): Propagate
	dimension from the expression to the entity when type is a
	dimensioned type and object is a constant.

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

	* sem_attr.adb (Analyze_Attribute, case 'Old): if the prefix
	is not an entity name, expand at once so that code generated by
	the expansion of the prefix is not generated before the constant
	that captures the old value is properly inserted and analyzed.

2012-07-23  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb (Ensure_Statement_Present): Mark generated NULL
	statement as Comes_From_Source so that GIGI does not eliminate it.

2012-07-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Insert_Freeze_Node_For_Instance): Inst is now
	a local variable. Retrieve the related instance when processing
	a subprogram instantiation. Such instances appear as wrapper
	packages.

2012-07-23  Vincent Pucci  <pucci@adacore.com>

	* system-aix64.ads, system-aix.ads, system-darwin-ppc.ads,
	system-hpux.ads, system-linux-alpha.ads,
	system-linux-hppa.ads, system-linux-ppc.ads,
	system-linux-s390.ads, system-linux-s390x.ads,
	system-linux-sh4.ads, system-linux-sparc.ads,
	system-lynxos-ppc.ads, system-mingw.ads,
	system-solaris-sparc.ads, system-solaris-sparcv9.ads,
	system-vms_64.ads, * system-vxworks-arm.ads, system-vxworks-m68k.ads,
	system-vxworks-mips.ads, system-vxworks-ppc.ads,
	system-vxworks-sparcv9.ads: Support_Atomic_Primitives set to False.
	* system-darwin-x86.ads, system-darwin-x86_64.ads,
	system-freebsd-x86.ads, system-freebsd-x86_64.ads,
	system-hpux-ia64.ads, system-linux-ia64.ads, system-linux-x86.ads,
	system-linux-x86_64.ads, system-lynxos-x86.ads,
	system-mingw-x86_64.ads, system-solaris-x86.ads,
	system-solaris-x86_64.ads, system-vms-ia64.ads,
	system-vxworks-x86.ads: Support_Atomic_Primitives set to True.
	* s-atopri.adb (Lock_Free_Read_X): New body.
	(Lock_Free_Try_Write_X): Support_Atomic_Primitives check added.
	(Lock_Free_Try_Write_64): New body.
	* s-atopri.ads: New type uint.
	(Sync_Compare_And_Swap_64): __sync_val_compare_and_swap_8 intrinsic
	import.
	(Lock_Free_Read_X): Body moved to s-atopri.adb.
	(Lock_Free_Try_Write_64): Similar to other Lock_Free_Try_Write_X
	routines.
	* targparm.adb: New enumeration literal SAP
	(Support_Atomic_Primitives) for type Targparm_Tags. New constant
	SAP_Str. New component SAP_Str'Access for array Targparm_Str.
	(Get_Target_Parameters): Parse Support_Atomic_Primitives_On_Target
	flag.
	* targparm.ads: New back-end code generation flag
	Support_Atomic_Primitives_On_Target

2012-07-23  Vincent Pucci  <pucci@adacore.com>

	* gnat_ugn.texi: Dimensionality checking documentation updated.

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

	* sem_prag.adb (Make_Inline): If the pragma applies to a
	subprogram renaming, set inline flags on both the renamed entity
	and on the renaming, so that some ASIS queries can be handled
	consistently in the absence of expansion.

2012-07-23  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Removing obsolete limitation of gnattest
	to support only ada05.	Updating gnattest support for other
	platforms/run-times section to reflect the usage of taget
	prefix in gnattest calls.  Fixing missed obsolete --stub-default
	option name.

2012-07-23  Robert Dewar  <dewar@adacore.com>

	* uintp.adb: Minor reformatting.

2012-07-23  Olivier Hainque  <hainque@adacore.com>

	* system-vxworks-ppc.ads: Replace the default
	Linker_Options requesting crtbe by a commented out request for
	-nostartfiles.

2012-07-23  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Naming): Do not get the exceptions names
	in a virtual project.

2012-07-23  Robert Dewar  <dewar@adacore.com>

	* layout.adb, sem_prag.adb, sem.ads, freeze.adb,
	switch-m.adb, exp_disp.adb, system-vxworks-ppc.ads, exp_ch6.adb: Minor
	reformatting.

2012-07-23  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c: (Handled_Sequence_Of_Statements_to_gnu): Set
	location on TRY_CATCH_EXPR.

2012-07-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Try to ensure
	that an object of CW type initialized to a value is sufficiently
	aligned for this value.

2012-07-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Do not
	look up the REP part of the base type in advance.  Deal with that of
	the variant types.
	(get_rep_part): Be prepared for record types with fields.

2012-07-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (stmt_group_may_fallthru): New function.
	(gnat_to_gnu) <N_Block_Statement>: Use it to find out whether the
	block needs to be translated.

2012-07-17  Tristan Gingold  <gingold@adacore.com>

	* gnat_rm.texi: Adjust previous change.

2012-07-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Process_Import_Or_Interface): If the pragma
	comes from an aspect, it applies to the corresponding entity
	without further check.

2012-07-17  Olivier Hainque  <hainque@adacore.com>

	* initialize.c (__gnat_initialize for VxWorks): Remove section with
	call to __gnat_vxw_setup_for_eh.
	* system-vxworks-ppc.ads: Add -auto-register to -crtbe, relying
	on the VxWorks constructor mechanism for network loaded modules
	by default.

2012-07-17  Tristan Gingold  <gingold@adacore.com>

	* adaint.c: Minor reformatting.

2012-07-17  Pascal Obry  <obry@adacore.com>

	* s-regexp.adb (Adjust): Fix access violation in Adjust.

2012-07-17  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): Warn if an imported subprogram
	has pre/post conditions, because these will not be enforced.

2012-07-17  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch7.adb (Process_Transient_Objects): Put all the
	finalization blocks and the final raise statement into a wrapper
	block.

2012-07-17  Vincent Pucci  <pucci@adacore.com>

	* s-atopri.adb (Lock_Free_Try_Write_X): Atomic_Compare_Exchange_X
	replaced by Sync_Compare_And_Swap_X.
	(Lock_Free_Try_Write_64): Removed.
	* s-atopri.ads (Sync_Compare_And_Swap_X): Replaces previous
	routine Atomic_Compare_Exchange_X.
	(Lock_Free_Read_64): Renaming of Atomic_Load_64.
	(Lock_Free_Try_Write_64): Renaming of Sync_Compare_And_Swap_64.

2012-07-17  Vincent Celier  <celier@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Recognize new
	switches -gnatn1 and -gnatn2.

2012-07-17  Vincent Pucci  <pucci@adacore.com>

	* gnat_ugn.texi: GNAT dimensionality checking
	documentation updated with System.Dim.Mks modifications.

2012-07-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb: sloc of array init_proc is sloc of type declaration.

2012-07-17  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (get_call_site_action_for): Remove useless init
	expression for p.
	(get_action_description_for): Do not overwrite action->kind.

2012-07-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add local variables Attr
	and Conversion_Added.  Add local constant Typ.
	Retrieve the original attribute after the arithmetic check
	machinery has modified the node. Add a conversion to the target
	type when the prefix of attribute Max_Size_In_Storage_Elements
	is a controlled type.

2012-07-17  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): For each actual parameter
	of mode 'out' or 'in out' that denotes an entity, reset
	Last_Assignment on the entity so that any assignments to the
	corresponding formal in the inlining will not trigger spurious
	warnings about overwriting assignments.

2012-07-17  Robert Dewar  <dewar@adacore.com>

	* s-assert.ads: Fix comments to make it clear that this is used
	for all assertions, not just pragma Assert.

2012-07-17  Jerome Guitton  <guitton@adacore.com>

	* par_sco.ads: Minor typo fix.

2012-07-17  Gary Dismukes  <dismukes@adacore.com>

	* layout.adb (Layout_Type): In the case where the target is
	AAMP, use 32 bits (a single pointer) rather than 64 bits for an
	anonymous access-to-subprogram type if the type is library-level
	and Is_Local_Anonymous_Access is True.

2012-07-17  Jose Ruiz  <ruiz@adacore.com>

	* s-tassta.adb, s-tarest.adb (Create_Task, Create_Restricted_Task,
	Initialize): Add comments explaining that the CPU affinity value that
	is passed to the run-time library can be either Unspecified_CPU, to
	indicate that the task inherits the affinity of its activating task,
	or a value in the range of CPU_Range but no greater than Number_Of_CPUs.

2012-07-17  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Remove decoration of Ada.Tags entities.
	(Make_Tags): Add decoration of Ada.Tags entities.

2012-07-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Statement_Sequence): When locating the
	last significant statement in a sequence, ignore iserted nodes
	that typically come from expansion of controlled operations.

2012-07-17  Tristan Gingold  <gingold@adacore.com>

	* gnat_rm.texi: Document foreign exceptions.

2012-07-17  Robert Dewar  <dewar@adacore.com>

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

2012-07-17  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb: Minor code reorganization.
	* exp_ch3.adb: Minor code improvement.

2012-07-17  Tristan Gingold  <gingold@adacore.com>

	* seh_init.c (__gnat_SEH_error_handler): Not compiled anymore
	on Windows 64 (+ SEH), as it is unused.

2012-07-17  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (CPP_Class): Transform obsolescent pragma CPP_Class into
	CPP convention automatically.

2012-07-16  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/decl.c (intrin_return_compatible_p): Map Address to
	void *.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb (Ensure_Statement_Present): New subprogram.
	(Expand_N_Asynchronous_Select,
	Expand_N_Selective_Accept.Process_Accept_Alternative,
	Expand_N_Selective_Accept.Process_Delay_Alternative,
	Expand_N_Timed_Entry_Call): For an alternative with no trailing
	statements, introduce a null statement to carry the sloc of
	the initial special statement (accept, delay, or entry call)
	in the alternative, for coverage analysis purposes.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* sem_eval.adb (In_Subrange_Of): Fix typo in test for scalar
	arguments.

2012-07-16  Robert Dewar  <dewar@adacore.com>

	* a-exexpr.adb, freeze.adb, a-exexpr-gcc.adb, a-except-2005.adb,
	sem_eval.adb, s-fileio.adb: Minor reformatting.

2012-07-16  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Remove support for obsolescent
	pragma CPP_Class.
	* sem_ch13.adb (Analyze_Freeze_Entity): Add missing error on Ada
	derivations of CPP types.  Found updating the tests affected by
	the removal of pragma CPP_Class.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* back_end.adb: Minor reformatting.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb (Expand_N_Selective_Accept.Process_Accept_Alternative):
	Remove junk test that was always true. For the case of no statements
	following the ACCEPT, jump directly to End_Lab instead of
	introducing an intermediate jump.
	(Expand_N_Selective_Accept.Process_Delay_Alternative): Fix
	predicate testing for presence of statements following the DELAY.
	that was always true. For the case of no statements following
	the ACCEPT, jump directly to End_Lab instead of introducing an
	intermediate jump.
	(Expand_N_Selective_Accept): Fix incorrect insertion point for
	end label.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi: Minor documentation improvements.

2012-07-16  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Allow Pre
	and Pre'Class aspects on the same declaration.
	* sem_prag.adb (Chain_PPC): Allow Pre and Pre'Class aspects on the
	same hierarchy of primitive operations.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Check_Component_Storage_Order): Do not reject a
	nested composite with different scalar storage order if it is
	byte aligned.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi: Update documentation for Scalar_Storage_Order.

2012-07-16  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr.adb (Propagate_Exception): Adjust call to
	Exception_Traces procedures.
	* a-exexpr-gcc.adb (Setup_Current_Excep): Now a
	function that returns an access to the Ada occurrence.
	(Propagate_GCC_Exception): Adjust calls.
	* raise.h (struct Exception_Occurrence): Declare.
	* a-exextr.adb: Remove useless pragma.	(Notify_Handled_Exception,
	Notify_Unhandled_Exception) (Unhandled_Exception_Terminate):
	Add Excep parameter.
	* a-except.adb (Notify_Handled_Exception,
	Notify_Unhandled_Exception) (Unhandled_Exception_Terminate):
	Add Excep parameter.
	(Process_Raise_Exception): Adjust calls.
	* a-except-2005.adb (Notify_Handled_Exception,
	Notify_Unhandled_Exception) (Unhandled_Exception_Terminate): Add
	Excep parameter.
	(Raise_Exception): Calls Raise_Exception_Always.
	* raise-gcc.c (__gnat_setup_current_excep,
	__gnat_notify_handled_exception)
	(__gnat_notify_unhandled_exception): Adjust declarations.
	(PERSONALITY_FUNCTION): Adjust calls.
	(__gnat_personality_seh0): Remove warning.

2012-07-16  Javier Miranda  <miranda@adacore.com>

	* sem_eval.adb (Test_Expression_Is_Foldable): Adding documentation.
	(Eval_Relational_Op): Adding documentation.

2012-07-16  Robert Dewar  <dewar@adacore.com>

	* freeze.adb, g-debpoo.adb, exp_ch3.adb: Minor reformatting.

2012-07-16  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c: Add definitions of E2BIG and EILSEQ.

2012-07-16  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr.adb (Propagate_Continue): New function replacing
	Raise_Current_Excep.
	(Allocate_Occurrence): New function.
	(Propagate_Exception): Add Excep parameter, remove call to Call_Chain.
	* a-exexpr-gcc.adb (GNAT_GCC_Exception): Occurrence component
	is now aliased.
	(To_GCC_Exception): Convert from Address.
	(Allocate_Occurrence): Allocate an Unwind exception occurrence.
	(Setup_Current_Excep): Fill the machine occurrence in case of
	foreign exception.
	(Propagate_Exception): Add Excep parameter, remove call to Call_Chain.
	* a-except.adb (Set_Exception_C_Msg, Set_Exception_Msg): add
	Excep parameter.
	(Raise_Exception, Raise_Exception_Always,
	Raise_Exception_No_Defer): Adjust calls to the above procedures.
	(Raise_From_Signal_Handler, Raise_With_Location_And_Msg)
	(Rcheck_PE_Finalize_Raised_Exception): Likewise.
	* a-except-2005.adb (Set_Exception_C_Msg, Set_Exception_Msg):
	add Excep parameter.
	(Propagate_Exception): Likewise.
	(Allocate_Occurrence): New function.
	(Raise_Current_Excep): Removed.
	(Complete_Occurrence): New function to save the call chain.
	(Complete_And_Propagate_Occurrence): New procedure.
	(Create_Occurrence_From_Signal_Handler): New function to build an
	occurrence without propagating it.
	(Create_Machine_Occurrence_From_Signal_Handler): Likewise, but
	return the machine occurrence.
	(Raise_From_Signal_Handler): Use Create_Occurrence_From_Signal_Handler.
	(Raise_Exception, Raise_Exception_Always, Raise_Exception_No_Defer):
	Adjust calls to the above procedures. Allocate the occurrence at
	the beginning.
	(Raise_With_Location_And_Msg, Raise_With_Msg)
	(Rcheck_PE_Finalize_Raised_Exceptionm Reraise): Likewise.
	(Reraise_Occurrence): Use Reraise_Occurrence_Always.
	(Reraise_Occurrence_Always): Use Reraise_Occurrence_No_Defer.
	(Reraise_Occurrence_No_Defer): Preserve machine occurrence.
	(Save_Occurrence): Do not save machine occurrence.
	* a-except-2005.ads (Exception_Occurrence): Add Machine_Occurrence
	component.
	(Null_Occurrence): Consider it.
	* a-exexda.adb (Set_Exception_C_Msg, Set_Exception_Msg): add
	Excep parameter.

2012-07-16  Tristan Gingold  <gingold@adacore.com>

	* seh_init.c (__gnat_map_SEH): New function extracted from
	__gnat_SEH_error_handler.
	* raise-gcc.c: __gnat_personality_seh0: Directly transforms
	Windows system exception into GCC one when possible, in order
	to save stack room (particularly useful when Storage_Error will
	be propagated).

2012-07-16  Robert Dewar  <dewar@adacore.com>

	* a-direct.adb, g-dirope.adb: Minor reformatting.

2012-07-16  Tristan Gingold  <gingold@adacore.com>

	* a-except.ads, a-except-2005.ads: Remove outdated comment.

2012-07-16  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Subprogram_Name_Greater): Fix algorithm to
	conform to documentation.

2012-07-16  Ed Schonberg  <schonberg@adacore.com>

	* gnat1drv.adb (Check_Library_Items): Removed, no longer used.

2012-07-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): if component type has
	invariants, the array type itself requires an invariant procedure.
	* exp_ch3.ads, exp_ch3.adb (Build_Array_Invariant_Proc): new
	procedure, to build a checking procedure that applies the
	invariant check on some type T to each component of an array
	of T's.  Code is similar to the construction of the init_proc
	for an array, and handles multidimensional arrays by recursing
	over successive dimensions.

2012-07-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* g-debpoo.adb: Revert previous change.

2012-07-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Freeze_Entity): Insert the itype reference to a
	library-level class-wide subtype after the freeze node of the
	equivalent record type.

2012-07-16  Pascal Obry  <obry@adacore.com>

	* s-crtl.ads (mkdir): New routine, support encoding.
	* adaint.h (__gnat_mkdir): Update spec to pass encoding.
	* mkdir.c (__gnat_mkdir): Add encoding parameter.
	* a-direct.adb (Create_Directory): Use CRTL.mkdir, parse encoding
	in form parameter.
	* g-dirope.adb (Make_Dir): Update to pass encoding parameter.

2012-07-16  Pascal Obry  <obry@adacore.com>

	* adaint.c: Minor reformatting.

2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/utils.c: Include timevar.h.
	* Make-lang.in: Fix dependencies.

2012-07-16  Vasiliy Fofanov  <fofanov@adacore.com>

	* ug_words, vms_data.ads: Document VMS qualifiers for -gnatn1/2
	switches.

2012-07-16  Bob Duff  <duff@adacore.com>

	* sinfo.ads: Minor comment fix.

2012-07-16  Bob Duff  <duff@adacore.com>

	* sem_elab.adb (Within_Elaborate_All): Walk the with clauses to
	find pragmas Elaborate_All that may be found in the transitive
	closure of the dependences.

2012-07-16  Robert Dewar  <dewar@adacore.com>

	* exp_pakd.adb, freeze.adb, sem_util.adb, vms_data.ads: Minor
	reformatting.

2012-07-12  Vasiliy Fofanov  <fofanov@adacore.com>

	* vms_data.ads: Add VMS qualifiers for -gnatn1/2 switches.

2012-07-12  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb, exp_pakd.adb, rtsfind.ads, freeze.adb, sem_util.adb,
	sem_util.ads, exp_aggr.adb
	(Exp_Aggr.Packed_Array_Aggregate_Handled): Simplify processing
	for reverse storage order aggregate.
	(Exp_Pakd.Byte_Swap): New utility routine used by...
	(Exp_Pakd.Expand_Bit_Packed_Element_Set,
	Expand_Packed_Element_Reference): For the case of a free-standing
	packed array with reverse storage order, perform byte swapping.
	(Rtsfind): Make new entities RE_Bswap_{16,32,64} available.
	(Freeze.Check_Component_Storage_Order): New utility routine
	to enforce legality rules for nested composite types whose
	enclosing composite has an explicitly defined Scalar_Storage_Order
	attribute.
	(Sem_Util.In_Reverse_Storage_Order_Object): Renamed from
	Sem_Util.In_Reverse_Storage_Order_Record, as SSO now applies to
	array types as well.
	(Exp_Ch5.Expand_Assign_Array): Remove now unnecessary kludge
	for change of scalar storage order in assignments. The Lhs and
	Rhs now always have the same scalar storage order.

2012-07-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* g-debpoo.adb (Allocate): Add local constant
	No_Element. Initialize the allocated memory chunk to No_Element.

2012-07-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Derived_Type_Instance): Handle properly
	the case of an instance of a child unit where a formal derived
	type DT is an extension of a type T declared in a parent unit,
	and the actual in the instance of the child is the type T declared
	in the parent instance, and that actual is not a derived type.

2012-07-12  Eric Botcazou  <ebotcazou@adacore.com>
	    Tristan Gingold  <gingold@adacore.com>

	* system-hpux-ia64.ads: Enable ZCX by default.
	* gcc-interface/Makefile.in: Use alternate stack on ia64-hpux.
	Change soext to .so.

2012-07-12  Robert Dewar  <dewar@adacore.com>

	* s-atopri.adb, s-atopri.ads: Minor reformatting.

2012-07-12  Robert Dewar  <dewar@adacore.com>

	* ali.adb: Add circuitry to read new named form of restrictions lines.
	* debug.adb: Add doc for new -gnatd.R switch (used positional
	notation for output of restrictions data in ali file).
	* lib-writ.adb: Implement new named format for restrictions lines.
	* lib-writ.ads: Add documentation for new named format for
	restrictions in ali files.
	* restrict.adb, restrict.ads, sem_prag.adb: Update comments.
	* rident.ads: Go back to withing System.Rident
	* s-rident.ads: Add extensive comment on dealing with consistency
	checking.

2012-07-12  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb, scos.ads: Emit detailed SCOs for SELECT statements.

2012-07-12  Robert Dewar  <dewar@adacore.com>

	* sem_disp.adb: Minor reformatting
	* s-bytswa.ads: Minor comment update.

2012-07-12  Vincent Pucci  <pucci@adacore.com>

	* exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body):
	Atomic_Load_N replaced by Lock_Free_Read_N. Atomic_Compare_Exchange_N
	replaced by Lock_Free_Try_Write_N.
	Renaming of several local variables. For
	procedure, Expected_Comp declaration moved to the declaration
	list of the procedure.
	* rtsfind.ads: RE_Atomic_Compare_Exchange_8,
	RE_Atomic_Compare_Exchange_16, RE_Atomic_Compare_Exchange_32,
	RE_Atomic_Compare_Exchange_64, RE_Atomic_Load_8,
	RE_Atomic_Load_16, RE_Atomic_Load_32, RE_Atomic_Load_64,
	RE_Atomic_Synchronize, RE_Relaxed removed.  RE_Lock_Free_Read_8,
	RE_Lock_Free_Read_16, RE_Lock_Free_Read_32, RE_Lock_Free_Read_64,
	RE_Lock_Free_Try_Write_8, RE_Lock_Free_Try_Write_16,
	RE_Lock_Free_Try_Write_32, RE_Lock_Free_Try_Write_64 added.
	* s-atopri.adb: New file.
	* s-atopri.ads (Atomic_Compare_Exchange_8): Renaming of
	parameters.  Import primitive __sync_val_compare_and_swap_1.
	(Atomic_Compare_Exchange_16): Renaming of parameters.
	Import primitive __sync_val_compare_and_swap_2.
	(Atomic_Compare_Exchange_32): Renaming of parameters.
	Import primitive __sync_val_compare_and_swap_4.
	(Atomic_Compare_Exchange_64): Renaming of parameters.  Import
	primitive __sync_val_compare_and_swap_8.
	(Atomic_Load_8): Ptr renames parameter X.
	(Atomic_Load_16): Ptr renames parameter X.
	(Atomic_Load_32): Ptr renames parameter X.
	(Atomic_Load_64): Ptr renames parameter X.
	(Lock_Free_Read_8): New routine.
	(Lock_Free_Read_16): New routine.
	(Lock_Free_Read_32): New routine.
	(Lock_Free_Read_64): New routine.
	(Lock_Free_Try_Write_8): New routine.
	(Lock_Free_Try_Write_16): New routine.
	(Lock_Free_Try_Write_32): New routine.
	(Lock_Free_Try_Write_64): New routine.

2012-07-12  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb, exp_ch9.adb, sem_ch9.adb, exp_aggr.adb: Minor
	reformatting.

2012-07-12  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb (Analyze_Dimension_Function_Call): Reformatting of error
	msgs for elementary functions.

2012-07-12  Vincent Pucci  <pucci@adacore.com>

	* sem_attr.adb (Eval_Attribute): Minor reformatting.

2012-07-12  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb (Check_Library_Attributes): Allow the same library
	project in different project tree (different aggregated projects).

2012-07-12  Thomas Quinot  <quinot@adacore.com>

	* s-bytswa.adb, g-bytswa.adb, g-bytswa.ads, s-bytswa.ads: Further
	reorganization of byte swapping routines.

2012-07-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Dispatching_Context): Refine legality
	checks on tagg indeterminate calls to abstract operations,
	that appear in the context of other calls.

2012-07-12  Thomas Quinot  <quinot@adacore.com>

	* s-bytswa.adb (Swapped2.Bswap16): Remove local function,
	no longer needed.

2012-07-12  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): For
	attributes 'access, 'unchecked_access and 'unrestricted_access,
	iff the current instance reference is located in a protected
	subprogram or entry then rewrite the access attribute to be the
	name of the "_object" parameter.

2012-07-12  Tristan Gingold  <gingold@adacore.com>

	* raise.h: Revert previous patch: structure is used in init.c
	by vms.

2012-07-12  Vincent Celier  <celier@adacore.com>

	* make.adb (Binding_Phase): If --subdirs was used, but not
	-P, change the working directory to the specified subdirectory
	before invoking gnatbind.
	(Linking_Phase): If --subdirs was used, but not -P, change the working
	directory to the specified subdirectory before invoking gnatlink.

2012-07-12  Vincent Pucci  <pucci@adacore.com>

	* exp_ch9.adb (Build_Lock_Free_Unprotected_Subprogram_Body):
	For a procedure, instead of replacing each Comp reference by a
	reference to Current_Comp, make a renaming Comp of Current_Comp
	that rewrites the original renaming generated by the compiler
	during the analysis. Move the declarations of the procedure
	inside the generated block.
	(Process_Stmts): Moved in the body
	of Build_Lock_Free_Unprotected_Subprogram_Body.
	(Process_Node):
	Moved in the body of Build_Lock_Free_Unprotected_Subprogram_Body.
	* sem_ch9.adb (Allows_Lock_Free_Implementation): Restrict any
	non-elementary out parameters in protected procedures.

2012-07-12  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case
	Scalar_Storage_Order): Attribute applies to base type only.

2012-07-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Convert_To_Positional): Increase acceptable size
	of static aggregate when Static_Elaboration_Desired is requested.
	Add a warning if the request cannot be satisfied either because
	some components or some array bounds are non-static.

2012-07-12  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb: Minor reformatting.

2012-07-12  Tristan Gingold  <gingold@adacore.com>

	* tracebak.c: Fix warnings.
	* raise-gcc.c (__gnat_adjust_context): New function
	(__gnat_personality_seh0): Call __gnat_adjust_context to adjust
	PC in machine frame for exceptions that occur in the current
	function.

2012-07-12  Thomas Quinot  <quinot@adacore.com>

	* g-bytswa.adb, g-bytswa.ads, s-bytswa.adb, s-bytswa.ads, Makefile.rtl:
	Move GNAT.Byte_Swapping to System (with a renaming under GNAT)
	so that it is usable in expanded code.

2012-07-12  Tristan Gingold  <gingold@adacore.com>

	* s-osinte-hpux.ads: Increase alternate stack size on hpux.

2012-07-12  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Make_Neq_Body): Fix typo in comment.

2012-07-12  Eric Botcazou  <ebotcazou@adacore.com>

	* tb-gcc.c (trace_callback): On IA-64/HP-UX, use workaround only
	if USE_LIBUNWIND_EXCEPTIONS is defined.
	* init.c: Further tweaks for IA-64/HP-UX.

2012-07-12  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c: Do not include unwind-dw2-fde.h. Adjust comments.
	(db_region_for): Second argument is ip.  Do not recompute ip.
	(action_kind): Remove typedef, add unhandler enum const.
	(action_descriptor): Adjust type of kind field.
	(db_action_for): Second argument is ip, do not recompute it.
	(get_call_site_action_for): First argument is call_site, do not
	recompute it.  Remove useless return.
	(is_handled_by): Now return enum action_kind.
	Handle GNAT_ALL_OTHERS first.
	Return unhandler for GNAT_UNHANDLED_OTHERS.
	(get_action_description_for): First argument is now ip, do not
	recompute it.  Adjust code for call to is_handled_by.
	(__gnat_notify_unhandled_exception): Add prototype.
	(PERSONALITY_FUNCTION): Call get_ip_from_context.  Adjust calls.
	Handle unhandler case.
	(__gnat_cleanupunwind_handler): Add comments, add
	ATTRIBUTE_UNUSED on arguments.
	(__gnat_Unwind_RaiseException, __gnat_Unwind_ForcedUnwind): Define
	only once.
	* raise.h: Makes struct Exception_Data opaque.

2012-07-12  Robert Dewar  <dewar@adacore.com>

	* make.adb, sem_ch9.adb, prj.adb, s-rident.ads, snames.ads-tmpl: Minor
	reformatting.

2012-07-12  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Is_User_Defined_Equality): New subprogram.
	(Make_Neq_Body): New subprogram.
	(Make_Predefined_Primitive_Specs): Adding local variable
	Has_Predef_Eq_ Renaming to ensure that we enable the machinery
	which handles renamings of predefined primitive operators.

2012-07-09  Pascal Obry  <obry@adacore.com>

	* prj.adb (For_Every_Project_Imported_Context): Make sure we
	callback with the project having sources.
	Minor reformatting.

2012-07-09  Eric Botcazou  <ebotcazou@adacore.com>

	* make.adb: Fix typo.

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* sem_ch9.adb (Check_Node): Allow attributes
	that denote static function for lock-free implementation.
	(Is_Static_Function): New routine.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* tracebak.c: Adjust skip_frames on Win64.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* init.c: Add __gnat_adjust_context_for_raise for ia64/hpux.
	* raise-gcc.c: __gnat_cleanupunwind_handler: Do not call
	_Unwind_GetGR on hpux when using libgcc unwinder.  Part of

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* exp_attr.adb, sem_attr.adb: Minor reformatting.
	* par-ch13.adb, par-ch4.adb, par-util.adb: Reformatting
	considering that internal attribute names are not defined anymore
	in the main attribute names list.
	* snames.adb-tmpl (Get_Attribute_Id): Special processinf
	for names CPU, Dispatching_Domain and Interrupt_Priority.
	(Is_Internal_Attribute_Name): Minor reformatting.
	* snames.ads-tmpl: New list of internal attribute names. Internal
	attributes moved at the end of the attribute Id list.

2012-07-09  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor code reorganization (use Ekind_In).
	* exp_attr.adb, sem_ch9.adb par-ch4.adb, s-taprop-mingw.adb,
	sem_attr.adb, exp_ch8.adb, snames.adb-tmpl, par-util.adb,
	sem_ch13.adb, snames.ads-tmpl: Minor reformatting.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c: Adjust previous patch.

2012-07-09  Vincent Celier  <celier@adacore.com>

	* make.adb (Compilation_Phase): Do not build libraries in
	Codepeer mode (do not call Library_Phase).

2012-07-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Extend previous change to elementary types.

2012-07-09  Javier Miranda  <miranda@adacore.com>

	* exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration): Reverse
	previous patch since unconditionally handling as renaming_as_body
	renamings of predefined dispatching equality and unequality operator
	cause visibility problems with private overridings of the equality
	operator (see ACATS C854001).

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* exp_attr.adb (Signal_Bad_Attribute): Raise Program_Error in
	case of internal attribute names (already rejected by the parser).
	* par-ch13.adb (P_Representation_Clause): Complain if an internal
	attribute name that comes from source occurs.
	* par-ch4.adb (P_Name): Complain if an internal attribute name
	occurs in the context of an attribute reference.
	* par-util.adb (Signal_Bad_Attribute): Don't complain about
	mispelling attribute with internal attributes.
	* sem_attr.adb (Analyze_Attribute): Raise Program_Error in case
	of internal attribute names (already rejected by the parser).
	* snames.adb-tmpl (Is_Internal_Attribute_Name): New routine.
	* snames.ads-tmpl: Attributes CPU, Dispatching_Domain and
	Interrupt_Priority are marked as INT attributes since they
	don't denote real attribute and are only used internally in
	the compiler.
	(Is_Internal_Attribute_Name): New routine.

2012-07-09  Thomas Quinot  <quinot@adacore.com>

	* einfo.adb (Set_Reverse_Storage_Order): Update assertion,
	flag is now valid for array types as well.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* tracebak.c: Implement __gnat_backtrace for Win64 SEH.

2012-07-09  Robert Dewar  <dewar@adacore.com>

	* einfo.ads: Minor reformatting.

2012-07-09  Javier Miranda  <miranda@adacore.com>

	* exp_ch8.adb (Expand_N_Subprogram_Renaming_Declaration): Handle as
	renaming_as_body renamings of predefined dispatching equality
	and unequality operators.

2012-07-09  Robert Dewar  <dewar@adacore.com>

	* rident.ads: Do not instantiate r-ident.ads, this is now an
	independent unit.

2012-07-09  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Write_DT): Avoid runtime crash of this debugging
	routine.
	* sem_disp.adb (Find_Dispatching_Time): Protect this routine
	against partially decorated entities.

2012-07-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Size): Reject a size clause that specifies
	a value greater than Int'Last for a scalar type.

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* sem_ch9.adb (Allows_Lock_Free_Implementation): type must support
	atomic operation moved to the protected body case. No non-elementary
	out parameter moved to the protected declaration case. Functions have
	only one lock-free restriction.
	(Analyze_Protected_Type_Declaration): Issue a warning when
	Priority given with Lock_Free.

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb: Grammar of aspect Dimension fixed.

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* freeze.adb (Freeze_Record_Type): Code reorg in order to avoid
	pushing and popping the scope stack whenever a delayed aspect occurs.

2012-07-09  Gary Dismukes  <dismukes@adacore.com>

	* s-os_lib.ads: Remove pragma Elaborate_Body, as
	this is now unnecessary due to recently added pragma Preelaborate.

2012-07-09  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-mingw.adb (Set_Priority): Remove the code that was
	previously in place to reorder the ready queue when a task drops
	its priority due to the loss of inherited priority.

2012-07-09  Robert Dewar  <dewar@adacore.com>

	* layout.adb, i-cstrea.ads, a-ststio.ads, prj-util.ads, sem_cat.adb,
	s-commun.ads, s-ficobl.ads, s-os_lib.ads, s-fileio.ads: Minor
	reformatting.

2012-07-09  Eric Botcazou  <ebotcazou@adacore.com>

	* raise-gcc.c: Update comments. Fix typo.

2012-07-09  Thomas Quinot  <quinot@adacore.com>

	* einfo.adb, einfo.ads, sem_attr.adb, sem_ch13.adb: Attribute
	Scalar_Storage_Order can be defined or queried for array types as well
	as record types.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (CleanupUnwind_Handler): Now imported from
	raise-gcc.c
	* raise-gcc.c (__gnat_cleanupunwind_handler): Defined.
	Strictly follow the ABI convention on ia64.

2012-07-09  Gary Dismukes  <dismukes@adacore.com>

	* a-ststio.ads: Add pragma Preelaborate, per AI05-0283.
	* i-cstrea.ads (max_path_len): Change from variable to deferred
	constant to allow it to be used as a bound in string component
	in type System.File_IO.Temp_File_Record.
	* s-os_lib.ads, s-commun.ads, s-ficobl.ads, s-fileio.ads: Add pragma
	Preelaborate.
	* s-fileio.adb (Get_Case_Sensitive): Move function inside
	procedure Open.
	(File_Names_Case_Sensitive): Move variable inside
	procedure Open, to avoid violation of Preelaborate restriction
	(due to call to Get_Case_Sensitive).

2012-07-09  Ed Schonberg  <schonberg@adacore.com>

	* layout.adb (Set_Elem_Alignment): Protect against meaningless
	size clause, to prevent overflow in internal computation of
	alignment.

2012-07-09  Robert Dewar  <dewar@adacore.com>

	* freeze.adb, prj-util.adb, prj-util.ads, sem_ch13.adb: Minor
	reformatting.

2012-07-09  Gary Dismukes  <dismukes@adacore.com>

	* sem_cat.adb (Check_Categorization_Dependencies):
	Allow dependence of both Remote_Types and Remote_Call_Interface
	declarations (not just Remote_Types units) on preelaborated
	units, but require that the dependence be made via a private
	with_clause. Issue a specialized error message.

2012-07-09  Pascal Obry  <obry@adacore.com>

	* prj-util.adb, prj-util.ads (For_Interface_Sources): New routine.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* seh_init.c (__gnat_SEH_error_handler): On Win64 and SEH,
	return for unknown exceptions.
	* raise-gcc.c (__gnat_personality_seh0): Call __gnat_SEH_error_handler.

2012-07-09  Joel Brobecker  <brobecker@adacore.com>

	* exp_dbug.ads (No_Dollar_In_Label): Delete.

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* sem_ch13.adb (Check_Overloaded_Name): New routine.

2012-07-09  Vincent Pucci  <pucci@adacore.com>

	* freeze.adb (Freeze_Record_Type): Analyze the delayed aspects of the
	components in a record type.

2012-07-09  Pascal Obry  <obry@adacore.com>

	* prj-util.ads: Minor reformatting.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (db_indent): Simplify style, improve comments.
	Remove !IN_RTS part (dead).

2012-07-09  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Minor change to format of -gnatn line.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb: Reorder routine.

2012-07-09  Vincent Celier  <celier@adacore.com>

	* lib-writ.ads: Add documentation for the Z lines (implicitly
	withed units) and Y lines (limited withed units).

2012-07-09  Robert Dewar  <dewar@adacore.com>

	* lib.ads, exp_attr.adb, exp_ch9.adb, sem_dim.adb, sem_ch9.adb,
	sem_prag.adb, sem_ch12.adb, mlib-utl.adb, freeze.adb, sem_res.adb,
	sem_attr.adb, sem_case.adb, gnatlink.adb, exp_ch4.adb, sem_ch6.adb,
	sem_elim.adb, s-dimmks.ads, sem_ch13.adb: Minor code clean ups.

2012-07-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi (Switches for gcc): Document -gnatn[12] only
	lightly in the summary and more thoroughly in inlining section.
	(Performance Considerations): Document -gnatn[12] in inlining
	section.

2012-07-09  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (Unhandled_Except_Handler): New procedure.
	(Unhandled_Others_Value): New const.
	* raise-gcc.c (GNAT_UNHANDLED_OTHERS): Define.
	(action_descriptor): Remove ttype_entry.
	(get_action_description_for): Do not assign ttype_entry.
	(is_handled_by): Consider GNAT_UNHANDLED_OTHERS.

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

	* gcc-interface/trans.c (Call_to_gnu): Robustify test for function case
	if the CICO mechanism is used.

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

	* gcc-interface/utils2.c (build_simple_component_ref): Do not look
	through an extension if the type contains a placeholder.

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

	* exp_disp.adb (Expand_Dispatching_Call): Propagate the convention on
	the designated subprogram type and also set Is_Dispatch_Table_Entity.
	(Expand_Interface_Thunk): Propagate the convention on the thunk.
	(Set_CPP_Constructors_Old): Set Is_Constructor and Convention_CPP on
	the internal view of the constructors.
	(Set_CPP_Constructors): Likewise.
	* sem_prag.adb (Analyze_Pragma) <Pragma_CPP_Constructor>: Set the
	convention on the function.
	* gcc-interface/gigi.h (is_cplusplus_method): Declare.
	* gcc-interface/decl.c (Has_Thiscall_Convention): New macro.
	(gnat_to_gnu_entity) <E_Subprogram_Type>: Test it to set the `thiscall'
	calling convention
	(get_minimal_subprog_decl): Likewise.
	(is_cplusplus_method): New predicate.
	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Access>: Issue an
	error on access to C++ constructor or member function.

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

	* gcc-interface/utils.c (gnat_pushdecl): Set TYPE_CONTEXT for types
	attached to a TYPE_DECL.

2012-06-26  Vincent Pucci  <pucci@adacore.com>

	* exp_ch3.adb (Build_Init_Statements): Don't check the parents
	in the Rep Item Chain of the task for aspects Interrupt_Priority,
	Priority, CPU and Dispatching_Domain.
	* exp_ch9.adb (Expand_N_Task_Type_Declaration): fields _Priority,
	_CPU and _Domain are present in the corresponding record type
	only if the task entity has a pragma, attribute definition
	clause or aspect specification.
	(Make_Initialize_Protection): Don't check the parents in the Rep Item
	Chain of the task for aspects Interrupt_Priority, Priority, CPU and
	Dispatching_Domain.
	* freeze.adb (Freeze_Entity): Use of Evaluate_Aspects_At_Freeze_Point
	call replaced by Analyze_Aspects_At_Freeze_Point.
	* sem_ch13.adb, sem_ch13.ads (Analyze_Aspects_At_Freeze_Point):
	Renaming of Evaluate_Aspects_At_Freeze_Point.

2012-06-26  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Detect if 'Old is used outside a
	postcondition, and issue an error in such a case.

2012-06-26  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor editing.

2012-06-26  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c: Minor cleanup: remove unused prototype.
	* seh_init.c: Do not create an image wide unwind info to catch
	SEH when SEH unwind info are emitted by the compiler.

2012-06-19  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/trans.c: Include target.h.
	(gigi): Try to put out .ident with targetm.asm_out.output_ident.
	Remove uses of ASM_OUTPUT_IDENT.
	* gcc-interface/Make-lang.in: Fix dependencies.

2012-06-15  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/53592
	* gcc-interface/gigi.h (maybe_vector_array): Make static inline.
	* gcc-interface/utils.c (maybe_vector_array): Delete.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Indexed_Component>: Mark the
	array object as addressable if it has vector type and is on the LHS.

2012-06-15  Eric Botcazou  <ebotcazou@adacore.com>

	PR middle-end/53590
	* gcc-interface/misc.c (gnat_init_options_struct): Set
	opts->x_flag_delete_dead_exceptions to 1.

2012-06-14  Jose Ruiz  <ruiz@adacore.com>

	* gcc-interface/Make-lang.in (ada.install-common, ada.uninstall):
	Use the prefix specified with the --program-prefix configure option
	to determine the install name of the Ada tools.
	(ada.all.cross): Use a for loop to iterate over the set of Ada tools
	instead of duplicate the same processing.
	Update dependencies.

2012-06-14  Vincent Pucci  <pucci@adacore.com>

	* exp_ch6.adb (Expand_Call): Expand_Put_Call_With_Dimension_Symbol
	call replaced by Expand_Put_Call_With_Symbol call.
	* sem_dim.adb: New fields Unit_Names, Unit_Symbols
	and Dim_Symbols for record type System_Type.
	(From_Dimension_To_String_Of_Symbols): Removed.
	(From_Dim_To_Str_Of_Dim_Symbols): Renames previous
	routine From_Dimension_To_String_Of_Symbols.
	(From_Dim_To_Str_Of_Unit_Symbols): New routine.
	(Analyze_Aspect_Dimension): argument Symbol in aspect
	Dimension aggregate is optional. Named association implemented.
	(Has_Compile_Time_Known_Expressions): Removed.
	(Analyze_Aspect_Dimension_System): New
	component Dim_Symbol in each Dimension aggregate in
	aspect Dimension_System. Named associations implemented.
	(Add_Dimension_Vector_To_Buffer): Removed.
	(Add_Whole_To_Buffer): Removed.
	(Expand_Put_Call_With_Dimension_Symbol.): Removed.
	(Expand_Put_Call_With_Symbol): Renames previous routine
	Expand_Put_Call_With_Dimension_Symbol.
	(Has_Dimension_Symbols): Removed.
	(Has_Symbols): Renames previous routine
	Has_Dimension_Symbols.	(Store_String_Oexpon): New routine.
	* sem_dim.ads (Expand_Put_Call_With_Dimension_Symbol.): Removed.
	(Expand_Put_Call_With_Symbol): Renames previous routine
	Expand_Put_Call_With_Dimension_Symbol.
	* s-diflio.adb, s-diinio.adb (Put): Symbol renames Symbols.
	(Put_Dim_Of): New routines.
	* s-diflio.ads, s-diinio.ads: documentation updated.
	(Put): Symbol renames Symbols.
	(Put_Dim_Of): New routines.
	* s-dim.ads: documentation updated.
	* s-dimmks.ads: dimensioned type and subtypes updated.
	* snames.ads-tmpl: Name_Dim_Symbol, Name_Put_Dim_Of, Name_Symbol,
	and Name_Unit_Symbol added. Name_Symbols removed.

2012-06-14  Vincent Pucci  <pucci@adacore.com>

	* freeze.adb (In_Exp_Body): Expression function case added.
	(Freeze_Expression): Insert the Freeze_Nodes
	list before the correct current scope in case of a quantified
	expression.

2012-06-14  Pascal Obry  <obry@adacore.com>

	* projects.texi: Document the Install package for gprinstall.
2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_elim.adb (Check_For_Eliminated_Subprogram): Do not check within
	a default expression.
	* sem_res.adb (Resolve_Call): simplify code.

2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_case.adb (Check, Issue_Msg): within an instance, non-other
	values in a variant part or a case expression do not have to
	belong to the actual subtype.

2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Derived_Type_Instance): If parent is
	an interface type, check whether it is itself a previous formal
	already instantiated in the current list of actuals.

2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): The
	expression for a stream attribute is a name that may be overloaded
	with other declarations. To determine whether it matches the
	aspect at the freeze point, it is necessary to verify that one
	of its interpretations matches.

2012-06-14  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb, exp_util.adb, sem_aux.ads, exp_ch9.adb,
	sem_ch10.adb, freeze.adb, sem_util.adb, exp_ch4.adb,
	s-taprop-dummy.adb: Minor reformatting.

2012-06-14  Vincent Pucci  <pucci@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Lock_Free
	attribute case added.
	* par-prag.adb (Prag): Lock_Free pragma case added.
	* sem_attr.adb (Analyze_Attribute_Reference): Lock_Free attribute
	case added.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Record_Rep_Item
	call added for Aspect_Lock_Free.
	* sem_ch9.adb (Allows_Lock_Free_Implementation): New Lock_Free
	error messages for subprogram bodies.
	(Lock_Free_Disabled): New routine.
	(Analyze_Protected_Body): Call to Lock_Free_Disabled added.
	* sem_prag.adb (Analyze_Pragma): Lock_Free pragma case added.
	* snames.adb-tmpl (Get_Pragma_Id): Name_Lock_Free case added.
	(Is_Pragma_Name): Name_Lock_Free case added.
	* snames.ads-tmpl: Attribute_Lock_Free and Pragma_Lock_Free added.

2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* a-coorma.adb, a-cborma.adb, a-cbhama.adb, a-ciorma.adb: Add missing
	aliased keyword.

2012-06-14  Bob Duff  <duff@adacore.com>

	* lib.ads, lib.adb, sem.adb (Write_Unit_Info): Move this
	procedure from Sem body to Lib spec, so it can be used for
	debugging elsewhere.

2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Conformance): Add Ada 2012 check on mode
	conformance: "aliased" must apply to both or neither formal
	parameters.

2012-06-14  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.adb: Minor reformatting.

2012-06-14  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Freeze_Record_Type): Warn about useless bit order
	specification [when there's no component clause] regardless
	of whether the specified bit order is reversed or not.

2012-06-14  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (__gnat_personality_seh0): New function.

2012-06-14  Tristan Gingold  <gingold@adacore.com>

	* gnatname.adb (Gnatname): Make sure that dynamic table
	argument_data is initialized.

2012-06-14  Robert Dewar  <dewar@adacore.com>

	* sem_aux.adb: Minor code reorganization.

2012-06-14  Vincent Pucci  <pucci@adacore.com>

	* einfo.adb einfo.ads (Get_Rep_Item): Removed.
	(Get_Rep_Item_For_Entity): Removed.
	(Get_Rep_Pragma): Removed.
	(Get_Rep_Pragma_For_Entity): Removed.
	(Has_Rep_Item): Removed.
	(Has_Rep_Pragma): Removed.
	(Has_Rep_Pragma_For_Entity): Removed.
	* exp_ch9.adb (Expand_N_Task_Type_Declaration):
	Has_Rep_Pragma_For_Entity replaced by Has_Rep_Pragma
	and Get_Rep_Pragma_For_Entity replaced by Get_Rep_Pragma.
	(Make_Task_Create_Call): Has_Rep_Pragma_For_Entity replaced
	by Has_Rep_Pragma and Get_Rep_Pragma_For_Entity replaced by
	Get_Rep_Pragma.
	* exp_intr.adb: Dependency to Sem_Aux added for call to Get_Rep_Pragma.
	* sem_aux.adb (Get_Rep_Item): New routine.
	(Get_Rep_Pragma): New routine.
	(Has_Rep_Item): New routine.
	(Has_Rep_Pragma): New routine.
	(Nearest_Ancestor): Minor reformatting.
	* sem_aux.ads (Get_Rep_Item): New routine.
	(Get_Rep_Pragma): New routine.
	(Has_Rep_Item): New routine.
	(Has_Rep_Pragma): New routine.
	* sem_ch13.adb (Duplicate_Clause): Restore original error messages.
	* sem_eval.adb (Subtypes_Statically_Match): Get_Rep_Item_For_Entity
	replaced by Get_Rep_Item.
	* sem_prag.adb (Analyze_Pragma): Restore original error messages.
	(Check_Duplicate_Pragma): Restore original error messages.

2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Object_Reference): in Ada 2012, qualified
	expressions are valid names.

2012-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_Compilation_Unit): If the unit is an
	instantiation do not emit warnings for obsolescent units. The
	warnings belong on the corresponding generic.

2012-06-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Update the usage of Node15.
	(Return_Flag_Or_Transient_Decl): Removed.
	(Set_Return_Flag_Or_Transient_Decl): Removed.
	(Set_Status_Flag_Or_Transient_Decl): New routine.
	(Status_Flag_Or_Transient_Decl): New routine.
	(Write_Field15_Name): Update the output for variables and constants.
	* einfo.ads: Remove attribute
	Return_Flag_Or_Transient_Decl along with occurrences in nodes.
	(Return_Flag_Or_Transient_Decl): Removed along with pragma Inline.
	(Set_Return_Flag_Or_Transient_Decl): Removed along with pragma Inline.
	(Set_Status_Flag_Or_Transient_Decl): New routine along with pragma
	Inline.
	(Status_Flag_Or_Transient_Decl): New routine along with pragma Inline.
	* exp_ch4.adb (Create_Alternative): New routine.
	(Expand_N_Conditional_Expression): Handle the case
	where at least one of the conditional expression
	alternatives prodices a controlled temporary by means of a function
	call.
	(Is_Controlled_Function_Call): New routine.
	(Process_Transient_Object): Update the call to
	Set_Return_Flag_Or_Transient_Decl.
	* exp_ch6.adb (Enclosing_Context): New routine.
	(Expand_N_Extended_Return_Statement): Update all calls to
	Set_Return_Flag_Or_Transient_Decl.
	(Expand_Ctrl_Function_Call): Prohibit the finalization of a controlled
	function result when the context is a conditional expression.
	* exp_ch7.adb (Process_Declarations): Update all calls to
	Return_Flag_Or_Transient_Decl. Add processing for intermediate
	results of conditional expressions where one of the alternatives
	uses a controlled function call.
	(Process_Object_Declaration): Update all calls to
	Return_Flag_Or_Transient_Decl and rearrange the logic to process
	"hook" objects first.
	(Process_Transient_Objects): Update the call to
	Set_Return_Flag_Or_Transient_Decl.
	* exp_util.adb (Requires_Cleanup_Actions (List_Id, Boolean,
	Boolean)): Update all calls to Return_Flag_Or_Transient_Decl. Add
	detection for intermediate results of conditional expressions
	where one of the alternatives uses a controlled function call.

2012-06-13  Eric Botcazou  <ebotcazou@adacore.com>

	Revert
	2012-05-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (Has_Thiscall_Convention): New macro.
	(gnat_to_gnu_entity) <E_Subprogram_Type>: Test it to set the thiscall
	calling convention
	(get_minimal_subprog_decl): Likewise.
	(gnat_first_param_is_class): New predicate.

2012-06-12  Robert Dewar  <dewar@adacore.com>

        * gcc-interface/Make-lang.in: Update dependencies.
	* sem_ch9.ads, einfo.adb, einfo.ads, sem_prag.adb, freeze.adb,
	sem_util.adb, sem_ch13.adb, sem_ch13.ads, exp_ch3.adb: Add comments.
	Minor reformatting.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Instantiate_Formal_Subprogram): Remove code that
	implements AI05-0296, because the actual may be overloaded.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): and move it here,
	to be applied once the actual subprogram is properly resolved.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* switch-c.adb, a-exexpr-gcc.adb: Minor reformatting.

2012-06-12  Vincent Pucci  <pucci@adacore.com>

	* checks.adb (Tag_Checks_Suppressed): Remove Kill_Tag_Checks check.
	* einfo.adb (Universal_Aliasing): Apply to the implementation
	base type instead of the base type.
	(Get_Rep_Item_For_Entity):
	Return a pragma if the pragma node is not present in the Rep
	Item chain of the parent.
	(Kill_Tag_Checks): Removed (unused flag).
	(Set_Kill_Tag_Checks): Removed.
	(Get_First_Rep_Item): New routine.
	(Get_Rep_Pragma_For_Entity): New routine.
	(Has_Rep_Item): New routine.
	(Has_Rep_Pragma_For_Entity): New routine.
	(Present_In_Rep_Item): New routine.
	* einfo.ads (Kill_Tag_Checks): Removed.
	(Set_Kill_Tag_Checks): Removed.
	(Get_First_Rep_Item): New routine.
	(Get_Rep_Pragma_For_Entity): New routine.
	(Has_Rep_Item): New routine.
	(Has_Rep_Pragma_For_Entity): New routine.
	(Present_In_Rep_Item): New routine.
	* exp_attr.adb, sem_attr.adb: Attribute_CPU,
	Attribute_Dispatching_Domain and Attribute_Interrupt_Priority
	case added.
	* exp_ch13.adb (Expand_N_Attribute_Definition_Clause): For
	attribute Storage_Size, insert the new assignement statement
	after the Size variable declaration.
	* exp_ch3.adb (Build_Init_Statements): Fill the CPU,
	Dispatching_Domain, Priority and Size components with the Rep
	Item expression (if any).
	* exp_ch9.adb (Expand_N_Task_Type_Declaration): _CPU,
	_Priority, _Domain fields are always present in the
	corresponding record type.
	(Find_Task_Or_Protected_Pragma): Removed.
	(Get_Relative_Deadline_Pragma): New routine.
	(Make_Initialize_Protection): Find_Task_Or_Protected_Pragma removed.
	(Make_Task_Create_Call): Check CPU, Size or
	Dispatching_Domain Rep Item is present using new routine Has_Rep_Item.
	* freeze.adb (Freeze_All): Push_Scope_And_Install_Discriminants
	and Uninstall_Discriminants_And_Pop_Scope calls added.
	(Freeze_Entity): Evaluate_Aspects_At_Freeze_Point call added.
	* sem_aux.adb (Nearest_Ancestor): Retrieve the nearest ancestor
	for private derived types.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Clean-up
	and reordering. Delay analysis for all aspects (except some
	peculiar cases).
	(Analyze_Attribute_Definition_Clause):
	Attribute_CPU, Attribute_Dispatching_Domain,
	Interrupt_Priority and Attribute_Priority cases added.
	(Analyze_Freeze_Entity): Push_Scope_And_Install_Discriminants
	and Uninstall_Discriminants_And_Pop_Scope calls added.
	(Check_Aspect_At_Freeze_Point): Reordering and clean-up.
	(Duplicate_Clause): Issue an explicit error msg when the current
	clause duplicates an aspect specification, an attribute definition
	clause or a pragma.
	(Evaluate_Aspects_At_Freeze_Point): New routine.
	* sem_ch13.ads (Evaluate_Aspects_At_Freeze_Point): New routine.
	* sem_ch9.adb, sem_ch9.ads (Install_Discriminants): New routine.
	(Push_Scope_And_Install_Discriminants): New routine.
	(Uninstall_Discriminants): New routine.
	(Uninstall_Discriminants_And_Pop_Scope): New routine.
	* sem_prag.adb (Check_Duplicate_Pragma): Issue an explicit error
	msg when the current pragma duplicates an aspect specification,
	an attribute definition clause or a pragma.
	(Analyze_Pragma): Remove use of flags Has_Pragma_CPU,
	Has_Pragma_Priority and Has_Pragma_Dispatching_Domain.
	* sem_util.adb (Compile_Time_Constraint_Error): Don't complain
	about the type if the corresponding concurrent type doesn't come
	from source.
	* sinfo.adb, sinfo.ads (Has_Pragma_CPU): Removed.
	(Has_Pragma_Dispatching_Domain): Removed.
	(Has_Pragma_Priority): Removed.
	(Has_Task_Info_Pragma): Removed.
	(Has_Task_Name_Pragma): Removed.
	(Set_Has_Pragma_CPU): Removed.
	(Set_Has_Pragma_Dispatching_Domain): Removed.
	(Set_Has_Pragma_Priority): Removed.
	(Set_Has_Task_Info_Pragma): Removed.
	(Set_Has_Task_Name_Pragma): Removed.
	* snames.adb-tmpl (Get_Pragma_Id): Pragma_CPU,
	Pragma_Dispatching_Domain and Pragma_Interrupt_Priority added.
	(Is_Pragma_Name): Name_CPU, Name_Dispatching_Domain and
	Name_Interrupt_Priority added.
	* snames.ads-tmpl: Name_Dispatching_Domain, Name_CPU
	and Name_Interrupt_Priority moved to the list of
	Attribute_Name. Attribute_CPU, Attribute_Dispatching_Domain and
	Attribute_Interrupt_Priority added.  Pragma_Dispatching_Domain,
	Pragma_CPU and Pragma_Interrupt_Priority moved to the end of
	the Pragma_Name list.

2012-06-12  Arnaud Charlet  <charlet@adacore.com>

	* xref_lib.adb (Get_Full_Type): Add support for 'G'.

2012-06-12  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (Unwind_Exception): Add 4 more private fields.

2012-06-12  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Update doc on gnattest.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb: Add comments.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* switch-c.adb, inline.adb, usage.adb, opt.ads: Minor reformatting.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb: Minor reformatting.

2012-06-12  Eric Botcazou  <ebotcazou@adacore.com>

	* opt.ads (Inline_Level): New variable.
	* gnat1drv.adb (Adjust_Global_Switches): Set it based on optimization
	level if it has not been set by the user.
	* switch-c.adb (Scan_Front_End_Switches): Accept -gnatn1 and -gnatn2
	and set Inline_Level accordingly.
	* inline.adb (Add_Inlined_Body): Declate new Inline_Level_Type type.
	(Must_Inline): Return Inline_Level_T instead of Boolean to indicate
	whether the package of the inlined subprogram must be compiled.
	If Inline_Level is set to 1, only compile packages of subprograms
	directly called from the main unit.
	* usage.adb (Usage): Adjust line for -gnatn switch.
	* gnat_ugn.texi (Switches for gcc): Document -gnatn1 and -gnatn2.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Instantiate_Formal_Subprogram): Do not apply
	AI05-296 if the actual is overloaded. In this case The rule must
	be applied after resolution, in Analyze_Subprogram_Renaming.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* stringt.adb: Minor reformatting.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* ali-util.adb, stringt.ads: Minor reformatting.

2012-06-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Declarations): Handle the case where
	the original context has been wrapped in a block to avoid
	interference between exception handlers and At_End handlers.
	(Wrap_HSS_In_Block): Mark the block which contains the original
	statements of the context as being a finalization wrapper.
	* sinfo.adb (Is_Finalization_Wrapper): New routine.
	(Set_Is_Finalization_Wrapper): New routine.

	* sinfo.ads: Add new attribute Is_Finalization_Wrapper applicable
	to block statemnts.
	(Is_Finalization_Wrapper): New routine with corresponding pragma Inline.
	(Set_Is_Finalization_Wrapper): New routine with corresponding pragma
	Inline.

2012-06-12  Steve Baird  <baird@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): No longer need to set
	Exception_Extra_Info in CodePeer_Mode.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* sem_dist.adb, exp_ch7.adb, sem_type.adb, exp_attr.adb,
	sinfo.ads, sem_ch7.adb, exp_alfa.adb, sem_scil.adb, sem_ch12.adb,
	sem_util.adb, sem_res.adb, sem_attr.adb, sem_elab.adb, exp_ch6.adb,
	sem_ch4.adb, sem_warn.adb, scil_ll.adb, exp_cg.adb: Minor code
	reorganization.

2012-06-12  Eric Botcazou  <ebotcazou@adacore.com>

	* s-tasini.ads: Minor fix in comment.

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Freeze_Record_Type): Warn on record with
	Scalar_Storage_Order if there is no placed component.

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb: Minor comment fix.

2012-06-12  Vincent Celier  <celier@adacore.com>

	* ali-util.adb (Time_Stamp_Mismatch): In minimal recompilation
	mode, use Stringt Mark and Release to avoid growing the Stringt
	internal tables uselessly.
	* stringt.adb (Strings_Last): New global variable
	(String_Chars_Last): New global variable.
	(Mark, Release): New procedures.
	* stringt.ads (Mark, Release) New procedures.

2012-06-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Transient_Objects): Renamed constant
	Requires_Hooking to Must_Hook and replace all occurrences of the name.
	(Requires_Hooking): New routine. Detect all contexts that require
	transient variable export to the outer finalizer due to a potential
	exception.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Small adjustment.

2012-06-12  Vincent Celier  <celier@adacore.com>

	* vms_cmds.ads (Command_Type): New enumeration value Test
	* vms_conv.adb (Initialize): Add component at index Test in
	Command_List
	* vms_data.ads (Test_Switches): New global variable for the
	switches of gnattest, currently empty.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): if an incomplete
	type is tagged, so is a subtype of it.
	* sem_ch12.adb (Validate_Actual_Subprogram): implement AI05-0296,
	concerning freeze rules in the presence of formal incomplete
	types: a formal abstract subprogram cannot have an incomplete
	controlling type, and the profile of the actual subprogram does
	not freeze if it includes an incomplete untagged type.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* a-direct.adb: Minor reformatting.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add missing documentation for -gnatw.v and
	-gnatw.V.

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* sem_ch7.adb, sem_prag.adb, sem_ch12.adb, sem_ch4.adb,
	sem_ch13.adb: Minor rewording of error messages for unchecked unions.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* lib-xref.ads: Minor reformatting.

2012-06-12  Pascal Obry  <obry@adacore.com>

	* a-direct.adb (Delete_File): Delete symbolic links silently
	instead of raising the Name_Error exception when the symbolic
	link is pointing to a non existent file.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* xref_lib.adb, sem_ch13.adb, lib-xref.adb: Minor reformatting.

2012-06-12  Javier Miranda  <miranda@adacore.com>

	* lib-xref.ads Adding missing documentation.

2012-06-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Create_Finalizer): Add the
	exception reraise mechanism at the very end of the finalizer
	statements. This placement ensures that all objects are finalized,
	the secondary stack mark released and aborts undeferred before
	propagating an exception.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Remove_Unit_From_Visibility): if the unit is a
	wrapper package. remove from visibility the original subprogram
	instance.

2012-06-12  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Process_Convention): Generate reference to entity
	exported to foreign language. Needed for GPS navigation.
	* xref_lib.adb (Parse_Identifier_Info): Parse exported entities.
	* lib-xref (Output_References): Output exported entities.

2012-06-12  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb: Add install package and corresponding attributes.
	* snames.ads-tmpl (Name_Active): New constant.
	(Name_Exec_Subdir): Likewise.
	(Name_Install): Likewise.
	(Name_Lib_Subdir): Likewise.
	(Name_Project_Subdir): Likewise.
	(Name_Sources_Subdir): Likewise.

2012-06-12  Bob Duff  <duff@adacore.com>

	* sem_res.adb (Check_Infinite_Recursion):
	Suppress spurious warning on recursion after "raise with ...".

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Unchecked_Union): Do
	not crash on illegal unchecked union that is a null record.

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Has_Inferable_Discriminants): Reorganize code to
	treat implicit dereferences with a constrained unchecked union
	nominal subtype as having inferable discriminants. 

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Minor reformatting.

2012-06-12  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi: Couple of minor corrections.

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb (Check_Variant): An empty component list is not
	illegal in an unchecked union variant.

2012-06-12  Gary Dismukes  <dismukes@adacore.com>

	* projects.texi: Remove comments.

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* back_end.adb (Scan_Back_End_Switches): Treat -fdump-scos as
	synonym of -gnateS.
	(gnat_post_options): Disable gimple-based SCO generator.
	* gnat_ugn.texi: Document that -gnateS is an obsolete synonym
	of -fdump-scos.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Different_Generic_Profile): new predicate for
	Find_Corresponding_Spec, to handle a rare case of accidental
	overloading in an instance, when the profile of a subprogram body
	that depends on a formal type becomes compatible with that of
	a homonym whose profile in the generic mentions the actual type.

2012-06-12  Thomas Quinot  <quinot@adacore.com>

	* gnat1drv.adb: Minor reformatting.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Build_Explicit_Dereference): If the expression
	is an entity, ensure that the type of the expression is the same
	as that of the entity.

2012-06-12  Pat Rogers  <rogers@adacore.com>

	* projects.texi: Corrected instances of the word "build" that
	should be "built" instead. Other similar changes and minor
	punctuation changes.

2012-06-12  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.adb (Is_Atomic_Object): Return true for an atomic
	component as well as a prefix which is an atomic component.

2012-06-12  Ed Schonberg  <schonberg@adacore.com>

	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): revert previous
	patch. The processing of interfacing aspects now generates a
	proper Ada 2005 pragma.
	* sem_prag.adb (Analyze_Pragma, cases Pragma_Export and
	Pragma_Import): revert previous patch.	The processing of
	interfacing aspects now generates a proper Ada 2005 pragma.
	* sem_ch13.adb (Analyze_Aspect_Specifications): generate proper
	pragam for aspects Convention, Import and Export. Scan list
	of aspects to collect link name and external name if present,
	and verify that a complete pragma can be generated.

2012-06-11  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/Makefile.in (GNATLIBCFLAGS_FOR_C): Remove
	$(PIC_FLAG_FOR_TARGET).
	(gnatlib-shared-default): Add $(PIC_FLAG_FOR_TARGET) to
	GNATLIBCFLAGS_FOR_C passed to gnatlib.
	(gnatlib-shared-win32): Likewise.
	(gnatlib-shared-darwin): Likewise.
	(gnatlib-shared-dual-win32): Pass PIC_FLAG_FOR_TARGET to
	gnatlib-shared-win32.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Convert GNU_SIZE
	to units before invoking allocatable_size_p on it.
	Remove orphaned comment.  Do not use ssize_int.
	<E_Record_Subtype>: Traverse list in original order.  Minor tweak.
	(allocatable_size_p): Adjust and simplify.
	(build_subst_list): Use consistent terminology throughout.
	(build_variant_list): Likewise.  Traverse list in original order.
	(create_field_decl_from): Likewise.
	(copy_and_substitute_in_size): Likewise.
	(create_variant_part_from): Add comment about field list order.
	* gcc-interface/utils.c (build_vms_descriptor): Do not use ssize_int.
	* gcc-interface/utils2.c (build_allocator): Likewise.

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

	* gcc-interface/trans.c (Identifier_to_gnu): Test Is_Elementary_Type
	instead of Is_Scalar_Type for a constant with an address clause.
	Do not return the underlying constant for a constant used by reference
	if it holds the address of a constant and an lvalue is required.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not specifically deal
	with external constants wrt force_global here...
	<E_Constant>: ...but here instead.
	* gcc-interface/utils.c (gnat_pushdecl): Do not put external DECLs onto
	the list of global DECLs.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Translate the Esize on
	entry only for elementary types and abort if it is too large.
	<E_Record_Type>: Make sure the Esize is known before using it.

2012-06-04  Steven Bosscher  <steven@gcc.gnu.org>

	* gcc-interface/utils2.c: Do not include output.h.
	* gcc-interface/Make-lang.in: Fix dependencies.

2012-05-29  Michael Matz  <matz@suse.de>

	* gcc-interface/utils.c (create_var_decl_1): Don't call expand_decl.

2012-05-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'.
	(build_variant_list): Adjust to above renaming.
	(gnat_to_gnu_entity) <E_Record_Subtype>: Likewise.  Give a unique name
	to the type of the variant containers.
	(create_variant_part_from): Likewise.  Give a unique name to the type
	of the variant part.

2012-05-25  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/52362
	* link.c (__gnat_object_file_option): Set to "-Wl,@" for GNU linker.
	(__gnat_using_gnu_linker): Delete.
	* gnatlink.adb (Gnatlink): Declare Object_File_Option_Ptr here...
	Declare Object_File_Option string constant and Using_GNU_response_file
	boolean constant.
	(Process_Binder_File): ...instead of here.  Delete Using_GNU_Linker,
	Opening and Closing local variables.  Do not handle the GNU linker
	specially.
	(Write_RF): New procedure to write into the response file.  Escape some
	characters if a GNU response file is used.  Keep track of error status.
	Invoke Write_RF to write into the response file.  Delete the file only
	if the link was successful.
	* mlib-utl.adb: Do not `with' package System.
	(Gcc): Likewise.  Declare Object_File_Option string constant and
	Using_GNU_response_file boolean constant.
	(Write_RF): Take a string instead of address and length.  Escape some
	characters if a GNU response file is used.
	Invoke Write_RF to write into the response file.  Delete the file only
	if the link was successful.  Do not warn if it cannot be deleted.

2012-05-20  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (gnat_write_global_declarations): Put a name
	on the dummy global variable.

2012-05-19  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (Has_Thiscall_Convention): New macro.
	(gnat_to_gnu_entity) <E_Subprogram_Type>: Test it to set the thiscall
	calling convention
	(get_minimal_subprog_decl): Likewise.
	(gnat_first_param_is_class): New predicate.

	* gcc-interface/misc.c (gnat_handle_option): Fix formatting.
	* gcc-interface/Makefile.in: Likewise.

2012-05-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: For an object at
	global level with unconstrained nominal subtype and a non-fixed size,
	make a variable for the size.

2012-05-15  Andris Pavenis  <andris.pavenis@iki.fi>

	PR ada/52494
	* s-taprop-dummy.adb (Specific): New package.

2012-05-15  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/Make-lang.in (COMMON_FLAGS_TO_PASS): Use WARN_CFLAGS
	instead of trying to mimic it.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb, sem_util.adb, s-stposu.adb, exp_ch4.adb: Minor
	reformatting.

2012-05-15  Geert Bosch  <bosch@adacore.com>

	* uintp.adb (UI_Rem): Remove optimizations, as they are complex and are
	not needed.
	(Sum_Digits): Remove, no longer used.
	(Sum_Double_Digits): Likewise.

2012-05-15  Yannick Moy  <moy@adacore.com>

	* aspects.ads: Minor typo.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi (Scalar_Storage_Order): Fix RM reference.
	* sem_ch13.adb: Minor comment fix: incorrect RM reference.

2012-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_prag.adb (Process_Atomic_Shared_Volatile): Propagate
	atomicity from an object to its underlying type only if it
	is composite.

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): Set kind of
	loop variable after pre-analysis of iterator name, to prevent
	premature usage of loop variable.

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Variable): In Ada 2012, an explicit
	dereference that is a rewriting of an expression whose type has
	a declared Implicit_Derenference aspect is a variable.

2012-05-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Insert_Dereference_Action): Reimplemented. The
	routine performs address and size adjustments for dereferences
	of heap-allocated controlled objects. This manipulation is needed
	in order to restore the original state of the memory at the time
	it was allocated by the finalization machinery.
	* rtsfind.ads: Add RE_Adjust_Controlled_Dereference to tables
	RE_Id and RE_Unit_Table.
	* sinfo.adb (Has_Dereference_Action): New routine.
	(Set_Has_Dereference_Action): New routine.
	* sinfo.ads: Add new semantic flag Has_Dereference_Action along
	its association in nodes.
	(Has_Dereference_Action): New routine and pragma Inline.
	(Set_Has_Dereference_Action): New routine and pragma Inline.
	* s-stposu.ads, s-stposu.adb (Adjust_Controlled_Dereference): New
	routine.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* uintp.adb (Image_Uint): Use UI_Div_Rem to get quotient and
	remainder of U / Base in a single operation.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, inline.adb, sem_ch10.adb, prj.ads, sem_util.adb,
	a-ngelfu.ads, exp_ch4.adb, exp_ch6.adb, aspects.ads, sem_ch6.adb,
	vms_data.ads, exp_ch3.adb, prj-env.adb: Minor reformatting.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Has_Inferable_Discriminants): For a qualified
	expression, use correct node for test on the subtype denoted by
	the subtype mark.

2012-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Scope_In_Main_Unit): Rename into...
	(In_Main_Unit_Or_Subunit): ...this.  Also return
	true if the subprogram is within a subunit of the
	main unit.
	(Add_Inlined_Body): Adjust for above renaming.
	(Add_Inlined_Subprogram): Likewise.  Pass the subprogram directly.
	(Analyze_Inlined_Bodies): Really set aside inlined subprograms
	not handled by Add_Inlined_Body.

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Expand_With_Clause): In the context of a generic
	package declaration, a private with-clause on a child unit implies
	that the implicit with clauses on its parents are private as well.

2012-05-15  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Is_Interface_Conformant): Add missing call to
	Base_Type to handle subtypes.
	* exp_ch6.adb (Expand_Call): For calls located in thunks handle
	unchecked conversions of access types found in actuals.
	* exp_disp.adb (Expand_Interface_Thunk): Add missing unchecked
	conversion to actuals whose type is an access type. Done to
	avoid reporting spurious errors.

2012-05-15  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (Create_Mapping): Ignore sources that are
	suppressed (Create_Mapping_File.Process): Ditto
	* prj-nmsc.adb (Add_Source): Update to take into
	account suppressed files that may hide inherited sources.
	(Mark_Excluded_Sources): Mark excluded sources of the current
	project as suppressed.
	* prj.ads (Source_Data): New Boolean component Suppressed,
	defaulted to False

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* exp_intr.adb: Minor reformatting.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi: Document attribute Scalar_Storage_Order.

2012-05-15  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Offset_To_Top): Modify the
	expansion of the offset_to_top functions to ensure that their
	profile is conformant with the profile specified in Ada.Tags. No
	change in functionality.

2012-05-15  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Subp_Info): Remove Count and Next_Nopred
	components, add Processed component and move around Next component.
	(Add_Call): Reverse meaning of Successors table to the natural one.
	(Add_Inlined_Body): Do not inline a package if it is in the main unit.
	(Add_Inlined_Subprogram): Do not add the subprogram to the list if the
	package is in the main unit. Do not recurse on the successors.
	(Add_Subp): Adjust to new contents of Subp_Info.
	(Analyze_Inlined_Bodies): Do not attempt
	to compute a topological order on the list of inlined subprograms,
	but compute the transitive closure from the main unit instead.
	(Get_Code_Unit_Entity): Always return the spec for a package.

2012-05-15  Yannick Moy  <moy@adacore.com>

	* aspects.ads: Minor addition of comments to provide info on
	how to add new aspects.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* osint.ads: Minor reformatting.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb, exp_pakd.adb, sem_util.adb, sem_util.ads
	(Expand_Assign_Array): Handle the case of a packed bit array within a
	record with reverse storage order (assign element by element in that
	case).
	(In_Reverse_Storage_Order_Record): New subprogram,
	code extracted from Exp_Pakd.

2012-05-15  Yannick Moy  <moy@adacore.com>

	* a-ngelfu.ads: Add postconditions using Ada 2012
	aspect syntax, reflecting some of the RM requirements for these
	functions, from Annex A.5.1 or G.2.4.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* adaint.c: Minor fix: move misplaced comment.

2012-05-15  Doug Rupp  <rupp@adacore.com>

	* vms_data.ads: Enhance help for /IMMEDIATE_ERRORS to discourage
	use by customers.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* a-exextr.adb: Add comment.

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Minor reformatting (remove long dead code).

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* aspects.adb, aspects.ads: Add aspects for Convention, Export,
	External_Name, Import, and Link_Name.
	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): if the
	pragma comes from an aspect specification, the entity is the
	first argument.
	* sem_prag.adb (Analyze_Pragma, cases Pragma_Export and
	Pragma_Import): if the pragma comes from an aspect specification,
	the entity is the first argument, and the second has the value
	True by default.
	* sem_ch13.adb (Analyze_Aspect_Specifications): generate pragam
	for aspect Convention. Add placeholders for Link_Name and
	External_Name.

2012-05-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Expand_N_Asynchronous_Select): Extract the statements
	of the abortable part and triggering alternative after being processed
	for controlled objects.
	(Expand_N_Timed_Entry_Call): Code and comment reformatting.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor code reorganization.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb, exp_ch11.adb, exp_ch11.ads: Minor reformatting.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb (Resolve): Enforce E.2.2(11/2) and E.2.2(12) for
	'Unrestricted_Access and 'Unchecked_Access (not just 'Access):
	even in those cases, a remote access type may only designate a
	remote subprogram.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb, sem_util.ads, sem_cat.adb: Minor refactoring.
	(Enclosing_Lib_Unit_Node): Rename to Enclosing_Comp_Unit_Node.

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Remove obsolete
	checks on nested inlined subprograms.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* fe.h (Get_RT_Exception_Name): Declare.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (db_region_for): Use %p + cast to avoid warnings.
	(get_region_description_for): Likewise.
	(db_action_for): Likewise.
	(get_call_site_action_for): Likewise.
	(get_ttype_entry_for): Remove useless 'const'.
	(PERSONALITY_FUNCTION): Add ATTRIBUTE_UNUSED on uw_exception_class.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* a-exextr.adb (Unhandled_Exception_Terminate): Save occurrence
	on the stack to avoid a dynamic memory allocation.

2012-05-15  Bob Duff  <duff@adacore.com>

	* exp_ch9.adb (Expand_N_Timed_Entry_Call): Move initialization of
	E_Stats and D_Stats after Process_Statements_For_Controlled_Objects,
	because those calls can destroy the Statements list.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* fe.h (Get_RT_Exception_Name): Define.
	* types.ads (RT_Exception_Code): Update comment.
	* exp_ch11.adb, exp_ch11.ads (Get_RT_Exception_Name): New
	procedure to get the name of the rcheck subprograms.
	* a-except-2005.adb (Rcheck_xx): Rename.
	* a-except.adb Likewise, but also keep the old Rcheck_nn routines
	for bootstrap.
	* arith64.c (__gnat_mulv64): Use __gnat_rcheck_CE_Overflow_Check
	instead of __gnat_rcheck_10.
	* gcc-interface/trans.c (build_raise_check): Use Get_RT_Exception_Name
	to create the __gnat_rcheck routines name.
	* gcc-interface/Make-lang.in: Update dependencies.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* exp_ch7.adb (Build_Exception_Handler): Save current
	occurrence only if -gnateE.
	(Build_Object_Declaration): Declare E_Id only if -gnateE.
	(Build_Raise_Statement): Call Raise_From_Controlled_Operation only if
	-gnateE (else raise PE).
	* s-soflin.adb (Save_Library_Occurrence): Handle null occurrence
	access.
	* a-except-2005.adb (Reraise_Library_Exception_If_Any): Call
	Raise_From_Controlled_Operation only if the saved occurrence is
	not null, otherwise raise PE.

2012-05-15  Yannick Moy  <moy@adacore.com>

	* exp_alfa.ads: Add comments describing the Alfa mode.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* s-soflin.ads, s-soflin.adb (Save_Library_Occurrence): Parameter
	E is now of type Exception_Occurrence_Access.
	* exp_ch7.ads, exp_ch7.adb (Build_Exception_Handler): Adjust generated
	call to Save_Library_Occurrence.

2012-05-15  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb (Rewrite_Coextension): Use Insert_Action to
	insert temporary variable decl at the proper place in the tree.

2012-05-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* g-calend.adb (Split_At_Locale): New routine.
	(Time_Of_At_Locale): New routine.
	* g-calend.ads (Split_At_Locale): New routine.
	(Time_Of_At_Locale): New routine.

2012-05-15  Gary Dismukes  <dismukes@adacore.com>

	* a-except.ads: Minor reformatting.

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): If the loop
	parameter specification is part of a quantified expression, and it
	already carries a type, do not repeat the analysis to preserve
	type information: a range attribute reference may have been
	rewritten as a range with static bounds, and its re-analysis may
	type it as Integer by default, instead of the original index type.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* s-osprim-mingw.adb: Minor reformatting.

2012-05-15  Arnaud Charlet  <charlet@adacore.com>

	* a-except.adb, a-except.ads (Reraise_Library_Exception_If_Any): New.
	Mark this unit preelaborate.
	* s-soflin.ads: Make package Preelaborate.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* s-osprim-mingw.adb, sem_eval.adb, a-calend-vms.ads: Minor reformatting

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Match): In Ada 2012, static
	matching requires matching of static subtype predicates as well.

2012-05-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_case.adb (Analyze_Choices): If the subtype of the
	expression has a non-static predicate, the case alternatives
	must cover the base type.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* a-calend-vms.ads: Add pragma export to Split and Time_Of.
	Merge comments from a-calend.ads to minimize differences.

2012-05-15  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: gnatmetric: add a small example that demonstrates
	the difference between control coupling and unit coupling.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (Gen_Header): Remove code to emit LE_Set.
	(Gen_Finalize_Library): Replace test with
	a call to __gnat_reraise_library_exception_if_any.
	* s-soflin.ads (Library_Exception): Do not export.
	(Library_Exception_Set): Likewise.
	* a-except-2005.ads, a-except-2005.adb
	(Reraise_Library_Exception_If_Any): New procedure.

2012-05-15  Geert Bosch  <bosch@adacore.com>

	* sem_ch9.adb (Allows_Lock_Free_Implementation): out or in out
	parameters can be access types as well, not just scalar types,
	so relax the test to Is_Elementary_Type.

2012-05-15  Bob Duff  <duff@adacore.com>

	* s-atacco.ads s-atacco.adb: Replace pragma Elaborate_Body
	with pragma No_Body.
	(Xyz): Remove Xyz, which is apparently unnecessary.

2012-05-15  Tristan Gingold  <gingold@adacore.com>

	* a-calend-vms.adb: Complete previous change.

2012-05-15  Bob Duff  <duff@adacore.com>

	* s-win32.ads: Minor comment fix.
	* s-osprim-mingw.adb: Minor editing.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, sem_ch9.adb, sem_ch13.adb: Minor reformatting.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* g-comlin.adb, g-comlin.ads: Minor reformatting.

2012-05-15  Vincent Pucci  <pucci@adacore.com>

	* aspects.adb, aspects.adb: Reordering of the Aspect_Idi list. New
	aspect Aspect_Lock_Free.
	* einfo.adb, einfo.ads: New flag Uses_Lock_Free (flag 188).
	(Set_Uses_Lock_Free): New routine.
	(Uses_Lock_Free): New routine.
	* exp_ch7.adb (Is_Simple_Protected_Type): Return False for
	lock-free implementation.
	* exp_ch9.adb (Allows_Lock_Free_Implementation): Moved to Sem_Ch9.
	(Build_Lock_Free_Unprotected_Subprogram_Body): Protected
	procedure uses __sync_synchronise. Check both Object_Size
	and Value_Size.
	(Expand_N_Protected_Body): Lock_Free_Active
	renames Lock_Free_On.
	(Expand_N_Protected_Type_Declaration):
	_Object field removed for lock-free implementation.
	(Install_Private_Data_Declarations): Protection object removed
	for lock-free implementation.
	(Make_Initialize_Protection):
	Protection object initialization removed for lock-free implementation.
	* rtsfind.ads: RE_Atomic_Synchronize and RE_Relaxed added.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Aspect_Lock_Free
	analysis added.
	* sem_ch9.adb (Allows_Lock_Free_Implementation): New routine.
	(Analyze_Protected_Body): Allows_Lock_Free_Implementation call added.
	(Analyze_Protected_Type_Declaration):
	Allows_Lock_Free_Implementation call added.
	(Analyze_Single_Protected_Declaration): Second analysis of
	aspects removed.
	* s-atopri.ads: Header added.
	(Atomic_Synchronize): New routine.

2012-05-15  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.ads: Add comment.

2012-05-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend.adb (Day_Of_Week): The routine once again treats
	all dates as historic.	(Formatting_Operations.Split): All
	calls to UTC_Time_Offset are now controlled through formal
	parameter Is_Historic.	(Formatting_Operations.Time_Of):
	All calls to UTC_Time_Offset are now handled through
	formal parameter Is_Historic.
	(Split): Update the call to Formatting_Operations.Split.
	(Time_Of): Update the call to Formatting_Operations.Time_Of.
	(To_Ada_Time): Update the call to Formatting_Operations.Time_Of.
	(To_Strict_Tm): Update the call to Formatting_Operations.Split.
	* a-calend.ads (Split): Add new formal Is_Historic along with
	comment on usage. This routine is now exported for the purposes
	of GNAT.Calendar.Locale.
	(Time_Of): Remove defaults. Add new
	formal Is_Historic along with comment on usage. This routine is
	now exported for the purposes of GNAT.Calendar.Locale.
	* a-calend-vms.adb (Split): Update the call to
	Formatting_Operations.Split.
	(Time_Of): Update the call to Formatting_Operations.Time_Of.
	* a-calend-vms.ads (Split): Add new formal Is_Historic along
	with comment on usage.	(Time_Of): Remove defaults. Add new
	formal Is_Historic along with comment on usage.
	* a-calfor.adb (Split): Update the call to
	Formatting_Operations.Split.
	(Time_Of): Update the call to Formatting_Operations.Time_Of.

2012-05-15  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Add_Source): Always add the source if it is
	excluded, to avoid incorrect duplicate checks.

2012-05-15  Yannick Moy  <moy@adacore.com>

	* sem_aux.ads: Correct typo.
	* sem_eval.adb (Compile_Time_Known_Value): Return False in Alfa
	mode for a deferred constant when outside of the scope of its
	full view.

2012-05-15  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb, g-comlin.ads (Define_Switch): Allow specifying the name
	of the argument, for the automatic help message.
	(Getopt): do not systematically initialize switches with string values
	to the empty string, when the user has already specified a default.

2012-05-14  Bernd Schmidt  <bernds@codesourcery.com>

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

2012-05-14  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR 53063
	* gcc-interface/misc.c: Include opts.h and options.h before tm.h.
	(gnat_handle_option): Call lang-specific generated function.

2012-05-13  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* gcc-interface/lang.opt (I): Comment out help text with no effect.
	(nostdinc): Comment out help text with no effect.

2012-05-12  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (TOOLS_LIBS): Add ../../ggc-none.o.

2012-05-11  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR 53063
	* gcc-interface/misc.c (gnat_parse_file): Move before ...
	(gnat_handle_option): ... this. Use handle_generated_option.

2012-05-10  Richard Guenther  <rguenther@suse.de>

	* gcc-interface/cuintp.c (UI_From_gnu): Remove TYPE_IS_SIZETYPE use.

2012-05-06  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c (gigi): Decorate reraise_zcx_decl.

2012-05-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: In the renaming
	case, use the padded type if the renamed object has an unconstrained
	type with default discriminant.

2012-05-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Loop_Statement_to_gnu): Also handle invariant
	conditions with only one bound.
	(Raise_Error_to_gnu): Likewise.  New function extracted from...
	(gnat_to_gnu) <N_Raise_Constraint_Error>: ...here.  Call above function
	in regular mode only.

2012-05-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_post_options): Disable caret by default.

2012-05-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (make_packable_type): Declare.
	(make_type_from_size): Likewise.
	(relate_alias_sets): Likewise.
	(maybe_pad_type): Adjust.
	(init_gnat_to_gnu): Delete.
	(destroy_gnat_to_gnu): Likewise.
	(init_dummy_type): Likewise.
	(destroy_dummy_type): Likewise.
	(init_gnat_utils): Declare.
	(destroy_gnat_utils): Likewise.
	(ceil_pow2): New inline function.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use ceil_pow2.
	<object>: Pass True for the final processing of alignment and size.
	<E_Subprogram_Type>: Only create the TYPE_DECL for a padded return
	type if necessary.
	(round_up_to_align): Delete.
	(ceil_alignment): Likewise.
	(relate_alias_sets): Move to...
	(make_aligning_type): Likewise.
	(make_packable_type): Likewise.
	(maybe_pad_type): Likewise.
	(make_type_from_size): Likewise.
	* gcc-interface/utils.c (MAX_BITS_PER_WORD): Delete.
	(struct pad_type_hash): New type.
	(pad_type_hash_table): New static variable.
	(init_gnat_to_gnu): Merge into...
	(init_dummy_type): Likewise.
	(init_gnat_utils): ...this.  New function.
	(destroy_gnat_to_gnu): Merge into...
	(destroy_dummy_type): Likewise.
	(destroy_gnat_utils): ...this.  New function.
	(pad_type_hash_marked_p): New function.
	(pad_type_hash_hash): Likewise.
	(pad_type_hash_eq): Likewise.
	(relate_alias_sets): ...here.
	(make_aligning_type): Likewise.
	(make_packable_type): Likewise.
	(maybe_pad_type): Likewise.  Change same_rm_size parameter into
	set_rm_size; do not set TYPE_ADA_SIZE if it is false.  Do not set
	null as Ada size.  Do not set TYPE_VOLATILE on the padded type.  If it
	is complete and has constant size, canonicalize it.  Bail out earlier
	if a warning need not be issued.
	(make_type_from_size): Likewise.
	<INTEGER_TYPE>: Bail out if size is too large
	(gnat_types_compatible_p): Do not deal with padded types.
	(convert): Compare main variants for padded types.
	* gcc-interface/trans.c (gigi): Call {init|destroy}_gnat_utils.
	(gnat_to_gnu): Do not convert at the end for a call to a function that
	returns an unconstrained type with default discriminant.
	(Attribute_to_gnu) <Attr_Size>: Simplify handling of padded objects.
	* gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Likewise.
	Do not use the padded type if it is BLKmode and the inner type is
	non-BLKmode.

2012-05-02  Pascal Obry  <obry@adacore.com>

	Revert
	2012-02-24  Dave Korn  <dave.korn.cygwin@gmail.com>

	* gcc-interface/Makefile.in (WIN_SO_PREFIX [windows targets]): New
	Windows-specific make variable.
	(WIN_SO_INSTALL_DIR [windows targets]): Likewise.
	(install-gnatlib): Respect the above during installation when set,
	and also install any windows import library that has been built.
	(gnatlib-shared-win32): Use WIN_SO_PREFIX to name output DLL and also
	build a corresponding import library.

2012-04-30  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/utils.c (rest_of_subprog_body_compilation): Update
	comment.
	(gnat_write_global_declarations): Use finalize_compilation_unit.

2012-04-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity): In type annotation mode,
	do not adjust the size of a tagged type if there is a representation
	clause on it.  Otherwise, round the adjustment up to the alignment
	of the first field and use the appropriate helper routine.
	(maybe_pad_type): Do not warn in type annotation mode on a tagged type.
	(gnat_to_gnu_field): Do not error out under the same circumstances.
	(annotate_rep): In type annotation mode, do not adjust the offset of
	components of a tagged type with representation clause.  Otherwise,
	round the adjustment up to the alignment of the first field.

2012-04-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (finish_record_type): Force the traditional GCC
	layout for bitfields on the type if it is packed or has a representation
	clause and an alternate layout is available.

2012-04-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (mark_out_of_scope): Delete.
	(destroy_gnat_to_gnu): Declare.
	(destroy_dummy_type): Likewise.
	* gcc-interface/decl.c (mark_out_of_scope): Delete.
	* gcc-interface/utils.c (destroy_gnat_to_gnu): New function.
	(destroy_dummy_type): Likewise.
	* gcc-interface/trans.c (gnat_validate_uc_list): New variable.
	(gigi): Call validate_unchecked_conversion on gnat_validate_uc_list
	after the translation is completed.  Call destroy_gnat_to_gnu and
	destroy_dummy_type at the end.
	(Subprogram_Body_to_gnu): Do not call mark_out_of_scope.
	(gnat_to_gnu) <N_Block_Statement>: Likewise.
	<N_Validate_Unchecked_Conversion>: Do not process the node, only push
	it onto gnat_validate_uc_list.
	(validate_unchecked_conversion): New function.

2012-04-26  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	Remove s-traceb and tracebak objects from gnat1 and gnatbind (not used).
	Remove s-tasdeb and s-vaflop rules (not used).

2012-04-26  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/targtyps.c (WIDEST_HARDWARE_FP_SIZE): Default to
	DOUBLE_TYPE_SIZE instead of LONG_DOUBLE_TYPE_SIZE.

2012-04-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend.adb (Day_Of_Week): Keep the internal
	usage of UTC_Time_Offset consistent with Time_Of and Split.

2012-04-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Do not freeze
	the loop variable while preanalyzing a quantified expression.

2012-04-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend.adb (Split, Time_Of): Rename parameter Is_Ada_05
	to Use_TZ to better illustrate its function. Update all
	references to the parameter.
	(To_Ada_Time): Update the call to Formatting_Operations.Time_Of.
	* a-calend.ads (Split, Time_Of): Rename parameter Is_Ada_05
	to Use_TZ to better illustrate its function. Update the related
	comment on usage.
	* a-calend-vms.adb (Split, Time_Of): Rename parameter
	Is_Ada_05 to Use_TZ to better illustrate its function. Update
	all references to the parameter.
	(To_Ada_Time): Update the call to Formatting_Operations.Time_Of.
	* a-calend-vms.ads (Split, Time_Of): Rename parameter Is_Ada_05
	to Use_TZ to better illustrate its function. Update the related
	comment on usage.
	* a-calfor.adb (Split, Time_Of): Update the call to
	Formatting_Operations.Time_Of.
	* sysdep.c (__gnat_localtime_tzoff): Dereference pointer
	"is_historic" and rewrite the check as a comparison. Add a
	comment on flag values.

2012-04-26  Robert Dewar  <dewar@adacore.com>

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

2012-04-26  Vasiliy Fofanov  <fofanov@adacore.com>

	* a-stzunb-shared.adb, gnat_ugn.texi, a-strunb-shared.adb,
	a-strunb-shared.ads, uintp.adb, a-stwiun-shared.adb,
	a-stwiun-shared.ads, a-cbhama.ads, vms_data.ads, a-cobove.adb,
	a-convec.adb, sem_ch13.adb, a-cbhase.ads: Fix common misuses of the
	word "then" where "than" should be used in English.

2012-04-26  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb (Check_Unreachable_Code): Skip past pragmas.

2012-04-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-finroo.ads: Remove with clause for
	Ada.Streams. Type Root_Controlled is now abstract tagged null
	record. Remove internal package Stream_Attributes. Root_Controlled
	doesn't need stream attribute redeclaration and avoids the
	dependency on streams.

2012-04-26  Tristan Gingold  <gingold@adacore.com>

	* adaint.c (to_host_path_spec): Removed (unused).
	Minor reformatting.

2012-04-26  Steve Baird  <baird@adacore.com>

	* gnat_rm.texi Improve description of Valid_Scalars attribute.

2012-04-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Can_Override_Operator): If the formal is a
	generic type the operator cannot be overriding.

2012-04-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Spec_Reloaded_For_Body): Check whether the type
	is declared in a package specification, and current unit is the
	corresponding package body. The use clauses themselves may be
	within a nested package.

2012-04-26  Bob Duff  <duff@adacore.com>

	* exp_ch2.adb (Param_Entity): Take into account the case where
	the type of the entry parameter has a representation clause.

2012-04-26  Ed Schonberg  <schonberg@adacore.com>

	* gnat_ugn.texi: Tweak dimensionality doc.

2012-04-26  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb: Minor reformatting.

2012-04-26  Robert Dewar  <dewar@adacore.com>

	* einfo.adb, einfo.ads, sem_res.adb, sem_ch4.adb,
	sem_eval.adb: Minor reformatting.

2012-04-26  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb: Minor change in error wording.

2012-04-26  Ed Schonberg  <schonberg@adacore.com>

	* gnat_ugn.texi: Documentation on dimensional analysis.

2012-04-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb, einfo.ads: Remove synthesized attribute
	Proper_First_Index along with its associations in various nodes.
	(Proper_First_Index): Removed.
	* sem_ch4.adb (Analyze_Slice): Alphabetize constants. Add new
	local variable Index_Type. The index type of a string literal
	subtype is that of the stored low bound.
	* sem_eval (Get_Static_Length): Remove the use of Proper_First_Index.
	* sem_res.adb (Resolve_Slice): Alphabetize constants. Add
	new local variable Index_Type. The index type of a
	string literal subtype is that of the stored low bound.
	(Set_String_Literal_Subtype): Code reformatting.

2012-04-26  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb: Minor reformatting.

2012-04-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Expand_Cleanup_Actions): Update the call to
	Requires_Cleanup_Actions.
	* exp_util.adb (Requires_Cleanup_Actions (List_Id; Boolean;
	Boolean)): Rename formal parameter For_Package to Lib_Level to
	better reflect its purpose. Update the related comment and all
	occurrences of For_Package in the body.
	(Requires_Cleanup_Actions
	(Node_Id; Boolean)): Add new formal parameter Lib_Level. Add
	local constant At_Lib_Level to keep monitor whether the path
	taken from the top-most context to the current construct involves
	package constructs. Update all calls to Requires_Cleanup_Actions.
	* exp_util.ads (Requires_Cleanup_Actions): Add new formal
	parameter Lib_Level and associated comment.

2012-04-26  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): If the type of the formal is
	a non null access type, mark the generated subtype as having a
	delayed freeze only if the designated type is not frozen yet.

2012-04-26  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New package Clean with attributes
	Object_Artifact_Extensions and Source_Artifact_Extensions.
	* prj-nmsc.adb (Process_Clean): Process new package Clean
	* prj.ads (Language_Config): New components
	Clean_Object_Artifacts and Clean_Source_Artifacts.
	* snames.ads-tmpl: New standard names Clean,
	Object_Artifact_Extensions and Source_Artifact_Extensions.

2012-04-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Proper_First_Index): Moved from Sem_Util.
	* einfo.ads: Add new synthesized attribute Proper_First_Index
	along with usage in nodes.
	(Proper_First_Index): Moved from Sem_Util.
	* sem_util.ads, sem_util.adb (Proper_First_Index): Moved to Einfo.

2012-04-26  Gary Dismukes  <dismukes@adacore.com>

	* layout.adb (Layout_Component_List): Test for the case of a
	single variant and the size of its component list was computed
	as an integer literal, and use that size (which is in bits)
	as is rather than converting to storage units.

2012-04-26  Robert Dewar  <dewar@adacore.com>

	* exp_aggr.adb: Minor reformatting.

2012-04-26  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor reformatting.

2012-04-26  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb, exp_pakd.adb (Setup_Inline_Packed_Array_Reference,
	Packed_Array_Aggregate_Handled.Get_Component_Val):
	Reverse bit numbering within PAT when Reverse_Storage_Order
	applies to the enclosing record.

2012-04-26  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Freeze_Record_Type): Improve error message for
	Scalar_Storage_Order inconsistent with Bit_Order.

2012-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch9.adb: Add comments on the usage of the
	lock-free data structures.

2012-04-25  Vincent Pucci  <pucci@adacore.com>

	* exp_intr.adb (Expand_Shift): Convert the left
	operand and the operator when the type of the call differs from
	the type of the operator.

2012-04-25  Geert Bosch  <bosch@adacore.com>

	* stand.ads: Minor comment fix.

2012-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Analyze_Slice): Handle the case where the prefix
	is a string literal. Retrieve the first index from the base type
	when slicing a string literal.
	* sem_ch12.adb (Check_Private_View): Move the initialization
	of the type inside the loop to reflect the changing index.
	* sem_eval.adb (Eval_Relational_Op): Retrieve the first index
	from the base type when dealing with a string literal.
	* sem_res.adb (Resolve_Slice): Retrieve the first index from
	the base type when slicing a string literal.
	* sem_util.adb (Is_Internally_Generated_Renaming): New routine.
	(Is_Object_Reference): String literals may act
	as object references only when they are renamed internally.
	(Proper_First_Index): New routine.
	* sem_util.ads (Proper_First_Index): New routine.

2012-04-25  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, csinfo.adb, lib-writ.adb, sem_ch12.adb,
	lib-xref.adb: Minor reformatting.

2012-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb: Rename Lock_Free_Sub_Type
	to Lock_Free_Subprogram. Remove type Subprogram_Id.
	Rename LF_Sub_Table to Lock_Free_Subprogram_Table.
	(Allow_Lock_Free_Implementation): Renamed to
	Allows_Lock_Free_Implementation.  Update the comment on
	lock-free restrictions. Code clean up and restructuring.
	(Build_Lock_Free_Protected_Subprogram_Body): Update the
	profile and related comments. Code clean up and restructuring.
	(Build_Lock_Free_Unprotected_Subprogram_Body): Update the
	profile and related comments. Code clean up and restructuring.
	(Comp_Of): Removed.

2012-04-25  Vincent Celier  <celier@adacore.com>

	* sem_ch12.adb (Inherit_Context): Compare library units, not
	names of units, when checking if a unit is already in the context.

2012-04-25  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb: Reverse_Storage_Order must be propagated to
	untagged derived record types.

2012-04-25  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb: Adjust position of end label.

2012-04-22  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/utils.c (gnat_write_global_declarations): Do not mark
	needed node.

2012-04-20  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/utils.c (gnat_write_global_declarations): Update for new
	force_output placement.

2012-04-14  Jan Hubicka  <jh@suse.cz>

	* gcc-interface/trans.c (finalize_nrv): Update field referenced for new
	cgraph/varpool layout.

2012-04-09  Mike Stump  <mikestump@comcast.net>

	* a-assert.ads: Remove execute permission.
	* a-chacon.ads: Likewise.
	* a-coteio.ads: Likewise.
	* a-envvar.ads: Likewise.
	* a-exetim-mingw.ads: Likewise.
	* a-fzteio.ads: Likewise.
	* a-izteio.ads: Likewise.
	* a-lcteio.ads: Likewise.
	* a-llctio.ads: Likewise.
	* a-scteio.ads: Likewise.
	* a-suenco.ads: Likewise.
	* a-suenst.ads: Likewise.
	* a-suewst.ads: Likewise.
	* a-suezst.ads: Likewise.
	* a-tirsfi.ads: Likewise.
	* a-wichha.ads: Likewise.
	* a-zchara.ads: Likewise.
	* a-zchhan.ads: Likewise.
	* a-zchuni.ads: Likewise.
	* a-zrstfi.ads: Likewise.
	* aspects.ads: Likewise.
	* g-byorma.ads: Likewise.
	* g-decstr.ads: Likewise.
	* g-encstr.ads: Likewise.
	* g-spchge.ads: Likewise.
	* g-u3spch.ads: Likewise.
	* g-wispch.ads: Likewise.
	* g-zspche.ads: Likewise.
	* namet-sp.ads: Likewise.
	* s-os_lib.ads: Likewise.
	* s-regexp.ads: Likewise.
	* s-regpat.ads: Likewise.
	* s-string.ads: Likewise.
	* s-tasloc.ads: Likewise.
	* s-utf_32.ads: Likewise.
	* sem_aux.ads: Likewise.
	* a-assert.adb: Likewise.
	* a-chacon.adb: Likewise.
	* a-envvar.adb: Likewise.
	* a-exetim-mingw.adb: Likewise.
	* a-suenco.adb: Likewise.
	* a-suenst.adb: Likewise.
	* a-suewst.adb: Likewise.
	* a-suezst.adb: Likewise.
	* a-tirsfi.adb: Likewise.
	* a-wichha.adb: Likewise.
	* a-zchhan.adb: Likewise.
	* a-zchuni.adb: Likewise.
	* a-zrstfi.adb: Likewise.
	* aspects.adb: Likewise.
	* g-byorma.adb: Likewise.
	* g-decstr.adb: Likewise.
	* g-encstr.adb: Likewise.
	* g-spchge.adb: Likewise.
	* g-u3spch.adb: Likewise.
	* g-wispch.adb: Likewise.
	* g-zspche.adb: Likewise.
	* namet-sp.adb: Likewise.
	* s-except.adb: Likewise.
	* s-inmaop-vxworks.adb: Likewise.
	* s-os_lib.adb: Likewise.
	* s-regexp.adb: Likewise.
	* s-regpat.adb: Likewise.
	* s-string.adb: Likewise.
	* s-tasloc.adb: Likewise.
	* s-utf_32.adb: Likewise.
	* s-wchcon.adb: Likewise.
	* sem_aux.adb: Likewise.

2012-04-02  Robert Dewar  <dewar@adacore.com>

	* s-atopri.ads: Minor reformatting.

2012-04-02  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb: Minor reformatting, minor code cleanup.

2012-04-02  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Generate_Reference): For a reference to an
	operator symbol, set the sloc to point to the first character
	of the operator name, and not to the initial quaote.
	(Output_References): Ditto for the definition of an operator
	symbol.

2012-04-02  Vincent Celier  <celier@adacore.com>

	* ali.adb (Scan_Ali): Recognize Z lines. Set
	Implicit_With_From_Instantiation to True in the With_Record for
	Z lines.
	* ali.ads (With_Record): New Boolean component
	Implicit_With_From_Instantiation, defaulted to False.
	* csinfo.adb: Indicate that Implicit_With_From_Instantiation
	is special
	* lib-writ.adb (Write_ALI): New array Implicit_With.
	(Collect_Withs): Set Implicit_With for the unit is it is not Yes.
	(Write_With_Lines): Write a Z line instead of a W line if
	Implicit_With is Yes for the unit.
	* sem_ch12.adb (Inherit_Context): Only add a unit in the context
	if it is not there yet.
	* sinfo.ads: New flag Implicit_With_From_Instantiation (Flag12)
	added.

2012-04-02  Yannick Moy  <moy@adacore.com>

	* osint.adb, osint.ads (Add_Default_Search_Dirs): Add library
	search dirs in file specified with option -gnateO.

2012-04-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb, exp_util.adb, sem_util.adb, exp_ch4.adb: Minor
	reformatting.

2012-04-02  Olivier Hainque  <hainque@adacore.com>

	* g-sse.ads: Add x86-solaris and x86_64-darwin to the set of
	platforms where the use of this spec is supported. Add current
	year to the copyright notice.
	* gcc-interfaces/Makefile.in: Add g-sse.o and g-ssvety.o to
	EXTRA_GNATRTL_NONTASKING_OBJS on x86 32/64 targets that support
	it and where they were missing (x86-solaris, x86-freebsd,
	x86_64-freebsd, and x86-darwin).

2012-04-02  Gary Dismukes  <dismukes@adacore.com>

	* bindgen.adb (Gen_Ada_Init): When compiling for the AAMP small
	library, where we no longer suppress the Standard_Library,
	generate an empty body rather than the usual generation of
	assignments to imported globals, since those aren't present in
	the small library.

2012-04-02  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads: Minor documentation fix.

2012-04-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Conditional_Expression): Add local variables
	Else_Typ and Then_Typ. Add missing type conversions to the "then" and
	"else" expressions when their respective types are scalar.

2012-04-02  Vincent Pucci  <pucci@adacore.com>

	* exp_ch9.adb: Reordering of the local subprograms. New Table
	for the lock free implementation that maps each protected
	subprograms with the protected component it references.
	(Allow_Lock_Free_Implementation): New routine. Check if
	the protected body enables the lock free implementation.
	(Build_Lock_Free_Protected_Subprogram_Body): New routine.
	(Build_Lock_Free_Unprotected_Subprogram_Body): New routine.
	(Comp_Of): New routine.
	* Makefile.rtl: Add s-atopri.o
	* debug.adb: New compiler debug flag -gnatd9 for lock free
	implementation.
	* rtsfind.ads: RE_Atomic_Compare_Exchange_8,
	RE_Atomic_Compare_Exchange_16, RE_Atomic_Compare_Exchange_32,
	RE_Atomic_Compare_Exchange_64, RE_Atomic_Load_8,
	RE_Atomic_Load_16, RE_Atomic_Load_32, RE_Atomic_Load_64, RE_Uint8,
	RE_Uint16, RE_Uint32, RE_Uint64 added.
	* s-atropi.ads: New file. Defines atomic primitives used
	by the lock free implementation.

2012-04-02  Emmanuel Briot  <briot@adacore.com>

	* g-expect.adb (Expect_Internal): Fix leak of the input file descriptor.

2012-04-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Quantified_Expression): Reimplemented.
	The expansion no longer uses the copy of the original QE created
	during analysis.
	* sem.adb (Analyze): Add processing for loop parameter specifications.
	* sem_ch4.adb (Analyze_Quantified_Expression): Reimplemented. The
	routine no longer creates a copy of the original QE. All
	constituents of a QE are now preanalyzed and resolved.
	* sem_ch5.adb (Analyze_Iteration_Scheme): Remove the guard which
	bypasses all processing when the iteration scheme is related to a
	QE. Relovate the code which analyzes loop parameter specifications
	to a separate routine.	(Analyze_Iterator_Specification):
	Preanalyze the iterator name. This action was originally
	done in Analyze_Iteration_Scheme. Update the check which
	detects an iterator specification in the context of a QE.
	(Analyze_Loop_Parameter_Specification): New routine. This
	procedure allows for a stand-alone analysis of a loop parameter
	specification without the need of a parent iteration scheme. Add
	code to update the type of the loop variable when the range
	generates an itype and the context is a QE.
	(Pre_Analyze_Range): Renamed to Preanalyze_Range. Update all references
	to the routine.
	* sem_ch5.ads: Code reformatting.
	(Analyze_Loop_Parameter_Specification): New routine.
	* sem_ch6.adb (Fully_Conformant_Expressions): Detect a case
	when establishing conformance between two QEs utilizing different
	specifications.
	* sem_res.adb (Proper_Current_Scope): New routine.
	(Resolve): Do not resolve a QE as there is nothing to be done now.
	Ignore any loop scopes generated for QEs when detecting an expression
	function as the scopes are cosmetic and do not appear in the tree.
	(Resolve_Quantified_Expression): Removed. All resolution of
	QE constituents is now performed during analysis. This ensures
	that loop variables appearing in array aggregates are properly
	resolved.

2012-04-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Build_Default_Subtype): If the base type is
	private and its full view is available, use the full view in
	the subtype declaration.

2012-04-02  Jose Ruiz  <ruiz@adacore.com>

	* gnat_ugn.texi: Add some minimal documentation about how to
	use GNATtest for cross platforms.

2012-04-02  Vincent Celier  <celier@adacore.com>

	* opt.ads (Object_Path_File_Name): New variable.
	* prj-attr.adb: New Compiler attribute Object_Path_Switches.
	* prj-nmsc.adb (Process_Compiler): Recognize new attribute
	Object_Path_Switches.
	* snames.ads-tmpl: New standard name Object_Path_Switches.
	* switch-c.adb (Scan_Front_End_Switches): Recognize new switch
	-gnateO= and put its value in Opt.Object_Path_File_Name.

2012-04-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Declarations): Detect a case where
	a source object was initialized by another source object,
	but the expression was rewritten as a class-wide conversion
	of Ada.Tags.Displace.
	* exp_util.adb (Initialized_By_Ctrl_Function): Removed.
	(Is_Controlled_Function_Call): New routine.
	(Is_Displacement_Of_Ctrl_Function_Result): Removed.
	(Is_Displacement_Of_Object_Or_Function_Result): New routine.
	(Is_Source_Object): New routine.
	(Requires_Cleanup_Actions): Detect a case where a source object was
	initialized by another source object, but the expression was rewritten
	as a class-wide conversion of Ada.Tags.Displace.
	* exp_util.ads (Is_Displacement_Of_Ctrl_Function_Result): Removed.
	(Is_Displacement_Of_Object_Or_Function_Result): New routine.

2012-04-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Call): A call to an expression function
	does not freeze if it appears in a different scope from the
	expression function itself. Such calls appear in the generated
	bodies of other expression functions, or in pre/postconditions
	of subsequent subprograms.

2012-04-02  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb: Code clean up.

2012-04-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Do not suppress
	style checks, because the subprogram instance itself may contain
	violations of syle rules.
	* style.adb (Missing_Overriding): Check for missing overriding
	indicator on a subprogram instance.

2012-04-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Last_Implicit_Declaration): New routine.
	(Process_PPCs): Insert the body of _postconditions after the
	last internally generated declaration. This ensures that actual
	subtypes created for formal parameters are visible and properly
	frozen as _postconditions may reference them.

2012-04-02  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (First_Component_Or_Discriminant) Now applies to
	all types with discriminants, not just records.
	* exp_attr.adb (Expand_N_Attribute): Add Scalar_Values handling
	for arrays, scalars and non-variant records.
	* sem_attr.adb (Analyze_Attribute): Handle Valid_Scalars
	* sem_attr.ads (Valid_Scalars): Update description
	* sem_util.ads, sem_util.adb (No_Scalar_Parts): New function.

2012-03-31  Eric Botcazou  <ebotcazou@adacore.com>

	Revert
	2012-03-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (SS_MARK_NAME): New define.
	(gnat_to_gnu_entity) <E_Function>: Prepend leaf attribute on entities
	whose name is SS_MARK_NAME.

2012-03-30  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, sem_util.adb, exp_ch4.adb: Minor comment updates.

2012-03-30  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Add_Alfa_File): Treat possibly 2 units at the same
	time, putting all scopes in the same Alfa file.
	(Add_Alfa_Xrefs): Correct errors in comparison function. Correct value
	of Def component.
	(Collect_Alfa): Possibly pass 2 units to Add_Alfa_File.

2012-03-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Is_Secondary_Stack_BIP_Func_Call): Handle a case where
	a build-in-place call appears as Prefix'Reference'Reference.

2012-03-30  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb: Minor refactoring to remove internal package.

2012-03-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch5.adb (Analyze_Iteration_Scheme): Preanalyze the subtype
	definition of a loop when the context is a quantified expression.

2012-03-30  Vincent Celier  <celier@adacore.com>

	* prj.ads: Minor comment update.

2012-03-30  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb, alloc.ads, lib-xref.ads: Minor addition of
	comments and refactoring.

2012-03-30  Robert Dewar  <dewar@adacore.com>

	* lib-xref.adb, lib-xref-alfa.adb: Minor reformatting & code
	reorganization.

2012-03-30  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Generate_Dereference): Use Get_Code_Unit
	instead of Get_Source_Unit to get file for reference.
	(Traverse_Compilation_Unit): Do not add scopes for generic units.
	* lib-xref.adb (Generate_Reference): Use Get_Code_Unit instead
	of Get_Source_Unit to get file for reference.
	* sem_ch12.adb (Analyze_Package_Instantiation): Enable
	instantiation in Alfa mode.

2012-03-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Declarations): Replace
	the call to Is_Null_Access_BIP_Func_Call with
	Is_Secondary_Stack_BIP_Func_Call. Update the related comment.
	* exp_util.adb (Is_Null_Access_BIP_Func_Call): Removed.
	(Is_Secondary_Stack_BIP_Func_Call): New routine.
	(Requires_Cleanup_Actions): Replace
	the call to Is_Null_Access_BIP_Func_Call with
	Is_Secondary_Stack_BIP_Func_Call. Update the related comment.
	* exp_util.ads (Is_Null_Access_BIP_Func_Call): Removed.
	(Is_Secondary_Stack_BIP_Func_Call): New routine.

2012-03-30  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb, lib-xref.adb: Code clean ups.

2012-03-30  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): For the case of a
	loop entity which is rewritten as a renaming
	of the indexed array, explicitly mark the entity as needing
	debug info so that Materialize entity will be set later by
	Debug_Renaming_Declaration when the renaming is expanded.

2012-03-30  Robert Dewar  <dewar@adacore.com>

	* sem_attr.ads: Update comment.

2012-03-30  Vincent Celier  <celier@adacore.com>

	* prj.ads: New Dependency_Kind: ALI_Closure.

2012-03-30  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.adb: Minor reformatting.

2012-03-30  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Add_Alfa_File): Take into account possible absence
	of compilation unit for unit in Sdep_Table.

2012-03-30  Thomas Quinot  <quinot@adacore.com>

	* freeze.adb (Freeze_Record_Type): For a type with reversed bit
	order and reversed storage order, disable front-end relayout.

2012-03-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Copy
	the TYPE_PACKED flag from the base type.

2012-03-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (SS_MARK_NAME): New define.
	(gnat_to_gnu_entity) <E_Function>: Prepend leaf attribute on entities
	whose name is SS_MARK_NAME.

2012-03-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (add_parallel_type): Take a TYPE instead of a
	DECL and adjust.  Move around.
	(has_parallel_type): New predicate.
	(rest_of_record_type_compilation): Return early if the type already
	has a parallel type.
	* gcc-interface/gigi.h (add_parallel_type): Adjust.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Adjust for above changes.

2012-03-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (finish_record_type): Return early for padded
	types and tidy up.

2012-03-20  Arnaud Charlet  <charlet@adacore.com>

	* hlo.ads, hlo.adb: Removed, no longer used.
	* gcc-interface/Make-lang.in: Remove hlo.o. Update dependencies.
	* gcc-interface/Makefile.in: Remove EXTRA_LIBGNAT_SRCS (temporarly)
	and compute it from EXTRA_LIBGNAT_OBJS.
	Clean up comments, reorder LIBGNAT_SRCS and LIBGNAT_OBJS.

2012-03-20  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi, sem_attr.ads: Update documentation.

2012-03-19  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb: Minor code clean up.

2012-03-19  Vincent Celier  <celier@adacore.com>

	* make.adb (Scan_Make_Arg): Make sure all significant -m switches
	on the command line are counted.

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* sem_elab.adb (Generate_Elab_Warnings): Fix spec, fix attribute
	reference case

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (Check_Bad_Exp): New procedure

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb, sem_attr.adb, sem_attr.ads, snames.ads-tmpl: Add
	initial framework for Valid_Scalars attribute.

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Scan): Recognize incorrect preprocessor directive

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* atree.adb (Allocate_Initialize_Node): Use Num_Extension_Nodes
	* atree.ads (Num_Extension_Nodes): New variable
	* debug.adb: New debug flag -gnatd.N
	* gnat1drv.adb (Adjust_Global_Switches): Adjust
	Num_Extension_Nodes if -gnatd.N set

2012-03-19  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads: Minor update to First_Rep_Item and Has_Gigi_Rep_Item
	descriptions.

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* opt.ads: Remove HLO_Active flag.
	* sem.adb: Remove call of high level optimizer.
	* sem.ads (New_Nodes_OK): Removed.
	* sem_ch10.adb: Remove references to New_Nodes_OK.
	* switch-c.adb: Remove handling of -gnatH switch.

2012-03-19  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Check_Subprogram_Contract): Do not emit warnings
	on trivially True or False postconditions and Ensures components
	of contract-cases.

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Fix index entry for -gnatei (now we have
	ug_words entry).

2012-03-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb (Get_Discriminant_Value): Instead of looking
	at the immediate correcponsing discriminant, traverse a
	potential chain of discriminants produced by type derivations.
	(Root_Corresponding_Discriminant): Traverse a chain of inherited
	discriminants and return the topmost discriminant.

2012-03-19  Bob Duff  <duff@adacore.com>

	* debug.adb: Minor comment change.
	* gnat_ugn.texi: Update documentation for elaboration regarding
	indirect calls.

2012-03-19  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): In
	the case of an object of a class-wide interface type, where the
	declaration is rewritten as a renaming, call Set_Debug_Info_Needed
	on the renaming entity so that Materialize_Entity will be
	set. Also, change existing call (for other than interface cases)
	to call Set_Debug_Info_Needed rather than Set_Needs_Debug_Info
	(as specified for that flag).

2012-03-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Detect an allocator generated
	by the build-in-place machinery where the designated type is
	indefinite, but the underlying type is not. Do not emit errors
	related to missing initialization in this case.

2012-03-19  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add documentation for -gnateinnn switch.
	* sem_elab.adb, put_alfa.adb, lib-xref-alfa.adb: Minor reformatting.
	* sem_prag.adb: Minor comment update.

2012-03-15  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Add entry for translating -gnateinn to
	/MAX_INSTANTIATIONS for VMS.
	* hostparm.ads (Max_Instantiations): Moved to Opt.
	* opt.ads (Maximum_Instantiations): Moved from Hostparm, and renamed.
	* sem_ch12.adb (Maximum_Instantiations): New name of
	Max_Instantiations (Analyze_Package_Instantiation): Change error
	msg for too many instantiations (mention -gnateinn switch).
	* switch-c.adb (Scan_Front_End_Switches): Implement -gnateinn switch.
	* switch.ads: Minor comment update.
	* usage.adb (Usage): Output line for -maxeinn switch.
	* vms_data.ads: Add entry for MAX_INSTANTIATIONS (-gnateinn).

2012-03-15  Yannick Moy  <moy@adacore.com>

	* alfa.ads Update the decription of ALI sections.
	(Alfa_File_Record): Add a component Unit_File_Name to store the
	unit file name for subunits.
	* get_alfa.adb, put_alfa.adb Adapt to the possible presence of
	a unit file name.
	* lib-xref-alfa.adb (Add_Alfa_File): For subunits, retrieve the
	file name of the unit.

2012-03-15  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (Check_Subprogram_Contract): Do
	not issue warning on missing 'Result in postcondition if all
	postconditions and contract-cases already get a warning for only
	referring to pre-state.

2012-03-15  Bob Duff  <duff@adacore.com>

	* debug.adb: Add new debug switch -gnatd.U, which disables the
	support added below, in case someone trips over a cycle, and needs
	to disable this.
	* sem_attr.adb (Analyze_Access_Attribute):
	Treat Subp'Access as a call for elaboration purposes.
	* sem_elab.ads, sem_elab.adb (Check_Elab_Call): Add support
	for Subp'Access.

2012-03-15  Vincent Pucci  <pucci@adacore.com>

	* sem.ads, sem.adb (Preanalyze): New routine.
	* sem_ch4.adb (Analyze_Quantified_Expression): Call to the
	Preanalyze routine in Sem added.  Renaming of Needs_Expansion
	into Need_Preanalysis.
	* sem_ch6.adb (Preanalyze): Removed.

2012-03-15  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb (Analyze_Quantified_Expression): Add comment.
	* sem_prag.adb: Minor comment additions.
	* sem_attr.adb (Check_First_Last_Valid): Make sure prefix type
	is frozen.

2012-03-15  Vincent Pucci  <pucci@adacore.com>

	* sem_ch4.adb (Analyze_Quantified_Expression):
	Preanalyze the condition when the quantified expression will be
	further expanded.

2012-03-15  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb, sem_util.adb, sem_util.ads, sem_attr.adb, sem_ch6.adb,
	sem_warn.adb: Minor refactoring, renaming Case_Pragma in CTC_Pragma,
	to refer to both Test_Case pragma and Contract_Case pragma (same
	acronym as in Spec_CTC_List).

2012-03-15  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_prag.ads, sem_util.ads, sem_attr.adb, sem_ch6.adb,
	sem_warn.adb: Minor reformatting.

2012-03-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Initialized_By_Ctrl_Function): Do not loop over
	selector names as the function call always appears at the top selected
	component.

2012-03-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Validate_Access_Subprogram_Instance): keep
	Mode_Conformance check for older versions of the language.

2012-03-15  Yannick Moy  <moy@adacore.com>

	* gnat_ugn.texi Document the extension of option -gnatw.t.
	* sem_ch3.adb (Analyze_Declaration): Check for suspicious
	contracts only after contract cases have been semantically
	analyzed.
	* sem_ch6.adb (Check_Subprogram_Contract): Consider also Ensures
	components of contract cases for detecting suspicious contracts.

2012-03-15  Yannick Moy  <moy@adacore.com>

	* aspects.adb, aspects.ads (Aspect_Id): New GNAT aspect
	Aspect_Contract_Case.
	* gnat_rm.texi Document the new pragma/aspect
	Contract_Case. Correct the documentation of the existing
	pragma/aspect Test_Case with the new semantics.
	* sem_attr.adb (Analyze_Attribute): Allow use of 'Result in the
	Ensures component of a Contract_Case pragma.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Check new aspect
	and translate it into a pragma.
	(Check_Aspect_At_Freeze_Point): Take into account the new aspect.
	* sem_ch3.adb, sinfo.adb, sinfo.ads Renaming of TC (for test case)
	into CTC (for contract and test case).
	* sem_ch6.adb (Process_PPCs): Generate Check pragmas from
	Contract_Case pragmas, similarly to what is done already for
	postconditions.
	* sem_prag.adb, sem_prag.ads (Check_Contract_Or_Test_Case):
	Renaming of Check_Test_Case.
	(Analyze_Pragma, Sig_Flags): Take into account the new pragma.
	* sem_util.adb, sem_util.ads Renaming to take into account the
	new pragma, so that functions which applied only to Test_Case
	now apply to both Test_Case and Contract_Case.
	* par-prag.adb, sem_warn.adb, snames.ads-tmpl Take into account
	the new pragma.

2012-03-15  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.ads: Minor comment updates.
	* sem_ch12.adb: Minor comment clarification.

2012-03-15  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb: Minor reformatting.

2012-03-15  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): When rewriting the
	declaration of a class-wide object, retain the Ekind to prevent
	subsequent misuse of constants.

2012-03-15  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Minor correction of invariant
	terminology.

2012-03-15  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Initialized_By_Ctrl_Function): Add code to
	process the case when a function call appears in object.operation
	format.

2012-03-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.ads, sem_ch6.adb (Check_Subtype_Conformant): add
	Get_Inst formal, so that conformance within an instantiation
	follows renamings of formals. This is similar to what is already
	done in Check_Mode_conformant.
	* sem_ch12.adb (Vailidate_Access_Subprogram_Instance): check that
	formal and actual are subtype conformant. Previously only mode
	conformance was required.

2012-03-15  Robert Dewar  <dewar@adacore.com>

	* par-ch6.adb, einfo.ads, sem_eval.adb, sem_eval.ads,
	sem_case.adb: Minor reformatting.

2012-03-15  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Add handling
	of First_Valid/Last_Valid.
	* sem_attr.adb (Check_First_Last_Valid): New procedure
	(Analyze_Attribute): Add handling of First_Valid and Last_Valid
	(Eval_Attribute): ditto.
	* snames.ads-tmpl: Add entries for First_Valid and Last_Valid.

2012-03-15  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Predicated_Loop): Suppress warnings on
	loop variable, for the unusual case where the range has a single
	element and the loop variable has no visible assignment to it.

2012-03-15  Vincent Pucci  <pucci@adacore.com>

	* exp_ch4.adb (Expand_N_Quantified_Expression): Expand the
	original quantified expression node.
	* sem_ch4.adb (Analyze_Quantified_Expression): Properly analyze
	the quantified expression and preserve the original non-analyzed
	quantified expression when an expansion is needed.
	* sem_ch5.adb (Analyze_Iteration_Scheme): Special treatment
	for quantified expressions.
	(Analyze_Iterator_Specification): Special treatment for quantified
	expressions.

2012-03-15  Ed Falis  <falis@adacore.com>

	* s-vxwork-ppc.ads: Update FP_CONTEXT so name of former pad
	field matches VxWorks headers.

2012-03-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (mips-sgi-irix6*): Remove.

	* a-intnam-irix.ads, mlib-tgt-specific-irix.adb,
	s-intman-irix.adb, s-mastop-irix.adb, s-osinte-irix.adb,
	s-osinte-irix.ads, s-proinf-irix-athread.adb,
	s-proinf-irix-athread.ads, s-taprop-irix.adb, s-tasinf-irix.ads,
	system-irix-n32.ads, system-irix-n64.ads, system-irix-o32.ads:
	Remove.

	* adaint.c [__mips && __sgi]: Remove.
	(__gnat_number_of_cpus) [__mips && __sgi]: Remove.
	[IS_CROSS && !(__mips && __sgi)]: Remove.
	* adaint.h [sgi && _LFAPI]: Remove.
	* cstreams.c (__gnat_full_name) [sgi]: Remove.
	* env.c (__gnat_unsetenv) [__mips && __sgi]: Remove.
	(__gnat_clearenv) [__mips && __sgi]: Remove.
	* errno.c (_SGI_MP_SOURCE): Remove.
	* gsocket.h [sgi]: Remove.
	* init.c: Remove IRIX reference.
	[sgi]: Remove.
	* link.c [sgi]: Remove.
	* s-oscons-tmplt.c [__mips && __sgi] (IOV_MAX): Don't define.
	(main) [__mips && __sgi] (MAX_tv_sec): Don't define.
	(CLOCK_SGI_FAST, CLOCK_SGI_CYCLE): Remove.
	* sysdep.c [sgi]: Remove.
	(getc_immediate_common) [sgi]: Remove.
	(__gnat_localtime_tzoff) [sgi]: Remove.
	* terminals.c [__mips && __sgi] (IRIX): Don't define.
	[IRIX] (USE_GETPTY): Don't define.
	(allocate_pty_desc) [USE_GETPTY]: Remove.

	* g-traceb.ads: Remove IRIX reference.
	* g-trasym.ads: Likewise.
	* memtrack.adb: Likewise.
	* s-interr-sigaction.adb: Likewise.

	* gnat_rm.texi (Implementation Advice): Remove SGI info.
	(Implementation Defined Characteristics): Likewise.
	* gnat_ugn.texi (Summary of Run-Time Configurations, mips-irix):
	Remove.
	(Irix-Specific Considerations): Remove.

2012-03-13  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/gigi.h (flag_vms_malloc64): Refine condition.

2012-03-13  Tristan Gingold  <gingold@adacore.com>

	* sysdep.c: Adjust condition after removal of __osf__.

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

	* gcc-interface/gigi.h (shift_unc_components_for_thin_pointers): Kill.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Remove call
	to above function.
	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Adjust
	handling of thin pointers.
	<Attr_Descriptor_Size>: Likewise.
	(gnat_to_gnu) <N_Free_Statement>: Likewise.
	* gcc-interface/utils.c (shift_unc_components_for_thin_pointers): Kill.
	(convert_to_fat_pointer): Adjust handling of thin pointers.
	(convert) <POINTER_TYPE>: Likewise.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: Likewise.

2012-03-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (alpha*-dec-osf*): Remove.
	* a-intnam-tru64.ads, mlib-tgt-specific-tru64.adb,
	s-mastop-tru64.adb, s-osinte-tru64.adb, s-osinte-tru64.ads,
	s-taprop-tru64.adb, s-tasinf-tru64.ads, s-taspri-tru64.ads,
	system-tru64.ads: Remove.

	* adaint.c (__gnat_number_of_cpus) [__alpha__ && __osf__]:
	Remove.
	[IS_CROSS] [!(__alpha__ && __osf__)]: Remove.
	* env.c [__alpha__ && __osf__]: Remove.
	* gsocket.h (_OSF_SOURCE): Remove.
	(HAVE_THREAD_SAFE_GETxxxBYyyy) [__osf__]: Remove.
	* init.c [__alpha__ && __osf__]: Remove.
	* link.c [__osf__]: Remove.
	* s-oscons-tmplt.c [__alpha__ && __osf__]: Remove.
	[__osf__ && !_SS_MAXSIZE]: Remove.
	* sysdep.c [__osf__]: Remove.
	* terminals.c [__alpha__ && __osf__]: Remove.
	[OSF1]: Remove.

	* g-traceb.ads: Remove Tru64 reference.
	* g-trasym.ads: Likewise.
	* gnat_ugn.texi (Linking a Mixed C++ & Ada Program): Likewise.
	(Summary of Run-Time Configurations): Likewise.
	* memtrack.adb: Likewise.

2012-03-12  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_param): Use flag_vms_malloc64
	instead of TARGET_MALLOC64.
	* gcc-interface/gigi.h (flag_vms_malloc64): Define instead
	of TARGET_MALLOC64.

2012-03-09  Robert Dewar  <dewar@adacore.com>

	* a-direct.adb, comperr.adb, freeze.adb: Minor reformatting.

2012-03-09  Arnaud Charlet  <charlet@adacore.com>

	* s-taskin.adb (Initialize_ATCB): Set Task_Image_Len to
	0 so that we never access this field uninitialized (e.g. in
	Task_Primitives.Operations.Enter_Task for the environment task).

2012-03-09  Vincent Pucci  <pucci@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop):
	Call to Expand_Iterator_Loop_Over_Array added.
	(Expand_Iterator_Loop_Over_Array): New routine. Expansion of
	"of" iterator loop over arrays. Multidimensional array case added.

2012-03-09  Eric Botcazou  <ebotcazou@adacore.com>

	* uintp.ads: Fix minor pasto in comment.

2012-03-09  Vasiliy Fofanov  <fofanov@adacore.com>

	* a-direct.adb: Do not strip the trailing directory separator
	from path, as this is already done inside Normalize_Pathname;
	doing it again produces the wrong result on Windows for the
	drive's root dir (i.e. "X:\" becomes "X:").

2012-03-09  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb, freeze.adb, sem_attr.adb, aspects.adb, aspects.ads,
	sem_ch13.adb, snames.ads-tmpl (Exp_Attr.Expand_N_Attribute_Reference):
	Add Attribute_Scalar_Storage_Order.
	(Sem_Attr.Analyze_Attribute, Eval_Attribute): Ditto.
	(Aspects): Add Aspect_Scalar_Storage_Order (Snames): Add
	Name_Scalar_Storage_Order and Attribute_Scalar_Storage_Order.
	(Sem_Ch13.Analyze_Attribute_Definition_Clause): Add processing
	for Scalar_Storage_Order.
	(Freeze): If Scalar_Storage_Order is specified, check that it
	is compatible with Bit_Order.

2012-03-09  Robert Dewar  <dewar@adacore.com>

	* s-osinte-linux.ads, sem_util.adb, s-taprop-linux.adb, exp_ch4.adb,
	a-strsup.ads, sem_ch6.adb, a-stwisu.ads, exp_ch3.adb,
	a-stzsup.ads: Minor reformatting.

2012-03-09  Thomas Quinot  <quinot@adacore.com>

	* s-ransee-vms.adb: Minor reformatting.

2012-03-09  Arnaud Charlet  <charlet@adacore.com>

	* comperr.adb (Delete_SCIL_Files): Fix handling of
	N_Package_Renaming_Declaration and N_Generic_Package_Declaration.

2012-03-09  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Check_Body_To_Inline): In AAMP and VM targets
	use frontend inlining at all optimization levels.
	* sem_util.adb (Must_Inline): In AAMP and VM targets, given that
	there is no inlining support in the backend, use also frontend
	inlining when compiling with optimizations enabled.
	* exp_ch6.adb (Expand_Call): Minor code reorganization.

2012-03-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (TYPE_VAX_FLOATING_POINT_P): Move around.
	(TYPE_UNCONSTRAINED_ARRAY): Adjust comment.
	* gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Tidy
	up.  Add comment and use canonical predicate for thin pointers.
	(gnat_to_gnu) <N_Free_Statement>: Tidy up and reorder.  Add comment
	and use canonical predicate for thin pointers.
	* gcc-interface/utils.c (convert_to_fat_pointer): Remove superfluous
	'else' and use standard name.
	(convert_to_thin_pointer): Delete.
	(convert) <POINTER_TYPE>: Do the difference in sizetype directly and
	change obsolete idioms.  Do not call above function.
	(unchecked_convert): Fix formatting.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: In the thin
	pointer case, use byte_position to get the field position.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not set flags on the
	DECL node built for a type which has a non-trivial equivalent type.

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

	* gcc-interface/gigi.h (rest_of_type_decl_compilation): Delete.
	* gcc-interface/decl.c (defer_finalize_level): Likewise.
	(defer_finalize_list): Likewise.
	(gnat_to_gnu_entity): Delete references to above variables and do not
	call rest_of_type_decl_compilation.
	(rest_of_type_decl_compilation): Delete.
	(rest_of_type_decl_compilation_no_defer): Likewise.
	* gcc-interface/utils.c (rest_of_record_type_compilation): Do not call
	rest_of_type_decl_compilation.
	(create_type_decl): Likewise.
	(update_pointer_to): Likewise.

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

	* gcc-interface/trans.c (Identifier_to_gnu): Don't unshare initializer.
	(add_decl_expr): Mark external DECLs as used.
	* gcc-interface/utils.c (convert) <CONSTRUCTOR>: Copy the vector.

2012-03-07  Tristan Gingold  <gingold@adacore.com>

	* s-ransee-vms.adb: New file.
	* gcc-interface/Makefile.in: Use s-ransee-vms.adb on VMS.
	* gcc-interface/Make-lang.in: Update dependencies.

2012-03-07  Bob Duff  <duff@adacore.com>

	* rtsfind.ads: Add support for finding Super_String types.
	* sem_util.ads, sem_util.adb (Is_Bounded_String): New function
	to determine whether a given type is a bounded string type.
	(Is_Fully_Initialized_Type): Return True for bounded
	string types, to suppress bogus warnings.
	* exp_ch4.adb (Expand_Composite_Equality): Special case for bounded
	strings: equality composes. This allows us to remove default values in
	super strings.
	* a-strsup.ads, a-stwisu.ads, a-stzsup.ads: Update comments.
	* exp_ch3.adb (Expand_Freeze_Record_Type): Comment.

2012-03-07  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, exp_ch4.adb, exp_ch6.adb, sem_ch6.adb: Minor
	reformatting.

2012-03-07  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: gnatpp: fix paragraph about sources with
	preprocessor directives.

2012-03-07  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-linux.ads, s-taprop-linux.adb (prctl): New function.
	(Enter_Task): Call prctl when relevant.

2012-03-07  Tristan Gingold  <gingold@adacore.com>

	* s-osinte-vms.ads: pthread_mutex_setname_np: new function.

2012-03-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Process_Formals): a generic subprogram with
	a formal incomplete type does not require a freeze node.

2012-03-07  Bob Duff  <duff@adacore.com>

	* sem_util.ads: Minor reformatting.

2012-03-07  Geert Bosch  <bosch@adacore.com>

	* targparm.ads: New target parameter Atomic_Sync_Default,
	defaulting to True.
	* targparm.adb (Get_Target_Parameters): Add processing for
	Atomic_Sync_Default.
	* gnat1drv.adb (Adjust_Global_Switches): Adjust Supress_Options
	based on ASD.

2012-03-07  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): If the object
	declaration has an init expression then stop the analysis of the
	object declaration if the expression which initializes the object
	is a call to an inlined function which returns an unconstrained
	and has been expanded into a procedure call.
	* sem_ch5.adb (Has_Call_Using_Secondary_Stack): Add missing
	support to handle selected components.
	* sem_ch6.ads (Cannot_Inline): Adding parameter Is_Serious plus
	documentation.
	* sem_ch6.adb (Check_And_Build_Body_To_Inline): New
	subprogram which implements the checks required by the
	new rules for frontend inlining and builds the body to inline.
	(Analyze_Subprogram_Body_Helper): Move code that
	checks inlining of subprogram that has nested subprogram
	to Check_And_Build_Body_To_Inline.  Replace call to
	Build_Body_To_Inline by call to the new subprogram
	Check_And_Build_Body_To_Inline.
	(Cannot_Inline): New implementation.
	* sem_ch12.adb (Analyze_Package_Instantiation.Must_Inline_Subp):
	New subprogram.
	* sem_util.ad[sb] (Must_Inline): New subprogram.
	(Returns_Unconstrained_Type): New subprogram.
	* sem_res.adb (Resolve_Call): Do not create a transient scope
	for inlined calls.
	* inline.ads (Analyzing_Inlined_Bodies): Remove unreferenced variable.
	* inline.adb (Analyze_Inlined_Bodies, Initialize): Remove setting
	to false the variable Analyzing_Inlined_Bodies.  Fix comments.
	* exp_ch4.adb (Expand_N_Allocator): Fix handling of finalization master.
	* exp_ch6.ads (List_Inlining_Info): New subprogram.
	* exp_ch6.adb (Expand_Call.Do_Inline): New subprogram.
	(Expand_Call.Do_Inline_Always): New subprogram.
	(In_Unfrozen_Instance): Move the declaration of this subprogram.
	(Expand_Inlined_Call.Reset_Dispatching_Calls): New subprogram.
	(Expand_Inlined_Call): Adding new support for inlining functions
	that return unconstrained types.
	(List_Inlining_Info): New subprogram.
	* debug.adb Document flags -gnatd.j and -gnatd.k
	* gnat1drv.adb Add call to generate the new listing of inlined
	calls and calls passed to the backend.

2012-03-07  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb, s-vaflop.adb, s-taprop-vms.adb, exp_ch6.adb,
	s-gearop.adb, sem_ch6.adb, g-trasym.adb: Minor reformatting.

2012-03-07  Javier Miranda  <miranda@adacore.com>

	* a-ngrear.ads: Add documentation.

2012-03-07  Tristan Gingold  <gingold@adacore.com>

	* s-taprop-vms.adb (Create_Task): set thread name.
	* s-osinte-vms.ads (pthread_attr_setname_np): Declare.

2012-03-07  Arnaud Charlet  <charlet@adacore.com>

	* g-trasym.adb: Minor reformatting.

2012-03-07  Robert Dewar  <dewar@adacore.com>

	* a-ngrear.ads: Minor addition of ??? comment.

2012-03-07  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Apply_Accessibility_Check): Call
	Remove_Side_Effects in the build-in-place case, to ensure that
	we capture the call and don't end up with two calls.

2012-03-07  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): Skip inlining of functions
	that return unconstrained types using an extended return statement
	since the support for inlining these functions has not been yet
	added to the frontend.
	* s-vaflop.adb, s-vaflop-vms-alpha.adb: Code reorganization.
	* a-ngrear.ads: Replace all the Inline_Always pragmas by pragma
	Inline.
	* a-ngrear.adb (Eigenvalues, Transpose): Restructured to use
	extended return statement.
	* a-strsup.adb, a-stzsup.adb, a-stwisu.adb (Concat, Super_Slice,
	Super_To_String): Restructured to use extended return statement.
	* a-chahan.adb (To_Basic, To_Lower, To_Upper): Restructured to
	use extended return statement.
	* s-gearop.adb (Diagonal, Matrix_Elementwise_Operation,
	Vector_Elementwise_Operation, Matrix_Elementwise_Operation,
	Matrix_Matrix_Scalar_Elementwise_Operation,
	Vector_Vector_Elementwise_Operation,
	Vector_Vector_Scalar_Elementwise_Operation,
	Matrix_Scalar_Elementwise_Operation,
	Vector_Scalar_Elementwise_Operation,
	Scalar_Matrix_Elementwise_Operation,
	Scalar_Vector_Elementwise_Operation, Matrix_Matrix_Product,
	Matrix_Vector_Product, Outer_Product, Unit_Matrix, Unit_Vector,
	Vector_Matrix_Product): Restructured to use extended return
	statement.

2012-03-07  Vincent Pucci  <pucci@adacore.com>

	* sem_ch5.adb (One_Bound): Minor reformatting.

2012-03-07  Tristan Gingold  <gingold@adacore.com>

	* s-osinte-vms-ia64.adb, s-osinte-vms-ia64.ads, s-osinte-vms.adb,
	s-osinte-vms.ads, gcc-interface/Makefile.in: Merge s-osinte-vms and
	s-osinte-vms-ia64.

2012-03-07  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Predicate_Check): Do not generate a predicate
	check is the context is an internally generated type-specific
	function.
	* sem_ch6.adb (Process_PPCs); the formals of internally generated
	type-specific functions do not get assertion checks.

2012-03-07  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor renaming of title.
	* gnat_ugn.texi: Minor correction.

2012-03-07  Vincent Pucci  <pucci@adacore.com>

	* exp_ch4.adb (Expand_N_Quantified_Expression): Minor
	reformating.
	* sem_ch4.adb (Analyze_Quantified_Expression): Creation and
	analysis of the iteration scheme added in all cases.
	* sem_ch5.adb (Analyze_Iteration_Scheme): Minor reformating.
	(Analyze_Iterator_Specification): Minor reformating.
	* sem_res.adb (Resolve_Quantified_Expression): Resolution of
	the condition added in all cases.

2012-03-07  Thomas Quinot  <quinot@adacore.com>

	* einfo.adb, einfo.ads: Add flag Reverse_Storage_Order.

2012-03-07  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Rewording of GNAT UG and GNAT RM to
	account for Ada 2012 assertions, and their pragma counterparts in GNAT.

2012-03-07  Thomas Quinot  <quinot@adacore.com>

	* exp_attr.adb, sem_attr.adb: Minor reformatting.

2012-03-07  Bob Duff  <duff@adacore.com>

	* hostparm.ads (Max_Instantiations): Increase parameter.

2012-03-07  Bob Duff  <duff@adacore.com>

	* par-prag.adb: Minor code rearrangement.

2012-03-07  Bob Duff  <duff@adacore.com>

	* a-strsup.ads, a-stwisu.ads, a-stzsup.ads (Super_String):
	Remove default initial value for Data. It is no longer needed
	because "=" now composes properly for untagged records. This
	default has caused efficiency problems.

2012-03-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): If the actual is a selected
	component of an anonymous access type, whose prefix is a variable,
	treat the variable as if it may be modified by the call, to
	suppress spurious warnings that a variable might be declared as
	a constant.

2012-03-07  Thomas Quinot  <quinot@adacore.com>

	* einfo.adb, einfo.ads: Remove unused entity flags.

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

	* gnat_ugn.texi (Inline Assembler): Fix swapping of Input and
	Output operands throughout.

2012-03-07  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Earlier): When two nodes come from the same
	generic instantiation, compare their locations. Otherwise always
	use the top level locations of the nodes.

2012-03-07  Thomas Quinot  <quinot@adacore.com>

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

2012-03-05  Jason Merrill  <jason@redhat.com>

	* gcc-interface/Make-lang.in (doc/gnat_ugn.texi): Build xgnatugn
	before using it.

2012-03-04  Eric Botcazou  <ebotcazou@adacore.com>

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

2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>

	* init.c (__gnat_adjust_context_for_raise): Also check
	"orq $0x0,(%esp)" for x32.

	* link.c (__gnat_default_libgcc_subdir): Set to libx32 for x32.

	* gcc-interface/Makefile.in (arch): Set to x32 if MULTISUBDIR
	is /x32 and add support for x32.

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

	* gcc-interface/decl.c (components_to_record): Add ARTIFICIAL parameter
	and set TYPE_ARTIFICIAL according to it.  Adjust recursive call.
	(gnat_to_gnu_entity) <E_Record_Type>: Adjust call to above function.
	* gcc-interface/utils.c (rest_of_record_type_compilation): Do not
	invoke rest_of_type_decl_compilation on the parallel type, if any.

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

	* gcc-interface/utils.c (gnat_write_global_declarations): Make sure the
	dummy global built for global types is preserved.

2012-02-27  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) [E_String_Type,
	E_Array_Type]: Reuse dummy fat type for gnu_ptr_template and
	gnu_template_type.

2012-02-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Add checking.
	(TYPE_BY_REFERENCE_P): New flag.
	(TYPE_IS_BY_REFERENCE_P): New macro.
	(TYPE_DUMMY_P): Add checking and remove VOID_TYPE.
	(TYPE_IS_DUMMY_P): Adjust for above change.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use TYPE_BY_REFERENCE_P
	and TYPE_IS_BY_REFERENCE_P instead of TREE_ADDRESSABLE.
	(gnat_to_gnu_param): Likewise.
	(maybe_pad_type): Likewise.
	(make_type_from_size): Use TYPE_IS_PACKED_ARRAY_TYPE_P.
	* gcc-interface/misc.c (must_pass_by_ref): Use TYPE_IS_BY_REFERENCE_P
	instead of TREE_ADDRESSABLE.
	* gcc-interface/trans.c (finalize_nrv): Likewise.
	(call_to_gnu): Likewise.  Do not create a temporary for return values
	with by-reference type here.
	(gnat_to_gnu): Test TYPE_IS_DUMMY_P instead of TYPE_DUMMY_P.
	(gnat_gimplify_expr) <ADDR_EXPR>: Don't do anything for non-constant
	CONSTRUCTORs and calls.
	* gcc-interface/utils.c (make_dummy_type): Get the equivalent type of
	the underlying type and use it throughout.  Use TYPE_IS_BY_REFERENCE_P
	instead of TREE_ADDRESSABLE.
	* gcc-interface/utils2.c (build_cond_expr): Deal with by-reference
	types explicitly.

2012-02-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Revert previous
	change that creates a special VAR_DECL for debugging purposes.  For an
	aliased object with an unconstrained nominal subtype, make its type a
	thin reference to the underlying object.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: Deal with
	expressions built for the initialization of above objects.

2012-02-24  Dave Korn  <dave.korn.cygwin@gmail.com>

	* gcc-interface/Makefile.in (WIN_SO_PREFIX [windows targets]): New
	Windows-specific make variable.
	(WIN_SO_INSTALL_DIR [windows targets]): Likewise.
	(install-gnatlib): Respect the above during installation when set,
	and also install any windows import library that has been built.
	(gnatlib-shared-win32): Use WIN_SO_PREFIX to name output DLL and also
	build a corresponding import library.

2012-02-22  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, make.adb, sem_dim.adb, sem_ch4.adb, exp_disp.adb: Minor
	reformatting.

2012-02-22  Geert Bosch  <bosch@adacore.com>

	* g-bytswa-x86.adb, g-bytswa.adb, gcc-interface/Makefile.in: Remove
	x86-specific version of byteswap and use GCC builtins instead.

2012-02-22  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) [E_String_Type,
	E_Array_Type]: Translate component ealier.

2012-02-22  Robert Dewar  <dewar@adacore.com>

	* par-ch3.adb (P_Signed_Integer_Type_Definition): Specialize
	error message for 'Range.

2012-02-22  Pascal Obry  <obry@adacore.com>

	* s-taprop-mingw.adb (Finalize_TCB): Do not wait on thread handle as
	this is our own thread.

2012-02-22  Sergey Rybin  <rybin@adacore.com frybin>

	* tree_io.ads: Update ASIS_Version_Number because of the changes
	in Snames.

2012-02-22  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Create_Finalizer): Suppress elaboration checks on
	stack-related finalizers.

2012-02-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): If the construct
	is a completion, indicate that its formals are the formals of
	a completion, and as such do not get a cross- reference entry.
	(Analyze_Subprogram_Specification): Do not generate a definition
	for the entity of an expression function, because it may be a
	completion. Definition will be generated if needed when analyzing
	the generated subprogram declaration.

2012-02-22  Vincent Celier  <celier@adacore.com>

	* make.adb (Check): When checking if an object file is in the
	correct object directory, get the unit name from a previous call
	to Check_Source_Info_In_ALI.
	* makeutl.adb (Check_Source_Info_In_ALI): Return the name of
	the unit when everything is OK, otherwise return No_Name.
	* makeutl.ads (Check_Source_Info_In_ALI): Return Name_Id instead
	of Boolean

2012-02-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Find_Equality_Types, Try_One_Interp): In an
	instance, the operator is visible if an operand is of some
	numeric type which is not in use or directly visible, and the
	other operand is a numeric literal.

2012-02-22  Tristan Gingold  <gingold@adacore.com>

	* init.c: Minor code clean up.
	* gcc-interface/Make-lang.in: Update dependencies.

2012-02-22  Arnaud Charlet  <charlet@adacore.com>

	* gnatlink.adb (Gnatlink): Use -gnatcC in CodePeer_Node,
	otherwise GCC will generate an object file.

2012-02-22  Vincent Celier  <celier@adacore.com>

	* projects.texi: Correct typo related to "**" in Source_Dirs.

2012-02-22  Steve Baird  <baird@adacore.com>

	* sem_prag.adb (Analyze_PPC_In_Decl_Part): Clean up generation of
	error message text.

2012-02-22  Vincent Pucci  <pucci@adacore.com>

	* rtsfind.adb (Get_Unit_Name): Ada_Numerics_Child and
	System_Dim_Child cases added.
	* rtsfind.ads: Ada_Numerics,
	Ada_Numerics_Generic_Elementary_Functions, System_Dim,
	System_Dim_Float_IO and System_Dim_Integer_IO added to the list
	of RTU_Id.  Ada_Numerics_Child and System_Dim_Child added as
	new RTU_Id subtypes.
	* sem_dim.adb (Is_Dim_IO_Package_Entity): Use of
	Rtsfind to verify the package entity is located either
	in System.Dim.Integer_IO or in System.Dim.Float_IO.
	(Is_Dim_IO_Package_Instantiation): Minor
	changes.  (Is_Elementary_Function_Call): Removed.
	(Is_Elementary_Function_Entity): New routine.
	(Is_Procedure_Put_Call): Is_Dim_IO_Package_Entity call added.
	* snames.ads-tmpl: Name_Dim and Name_Generic_Elementary_Functions
	removed.

2012-02-22  Vincent Pucci  <pucci@adacore.com>

	* sem_prag.adb: Minor reformatting.

2012-02-22  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Find_Type_Name): When analyzing a private type
	declaration that is the completion of a tagged incomplete type, do
	not associate the class-wide type already created with the private
	type to prevent order-of-elaboration issues in the back-end.
	* exp_disp.adb (Find_Specific_Type): Find specific type of
	a class-wide type, and handle the case of an incomplete type
	coming	either from a limited_with clause or from an incomplete
	type declaration. Used when expanding a dispatchin call and
	generating tag checks (minor refactoring).

2012-02-22  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb: Add comment.
	* sem_ch12.adb, exp_ch6.adb: minor reformatting

2012-02-22  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): Do not perform type layout within
	a generic unit.

2012-02-22  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c (__gnat_error_handler) [Linux]: Map SIGBUS to
	Storage_Error.

2012-02-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Reject an
	assignment to a classwide type whose type is limited, as
	can happen in an instantiation in programs that run afoul or
	AI05-0087.

2012-02-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Legal_Copy): If layout is not
	determined in the front-end, do not emit error message when
	by-reference actual is potentially unaligned.
	* gcc-interface/decl.c (gnat_to_gnu_field): Better error message for
	illegal representation clause on tagged or aliased component, or on
	by-reference type with forced alignment.

2012-02-17  Nicolas Roche  <roche@adacore.com>

	* gcc-interface/Makefile.in: Ensure FORCE_DEBUG_ADAFLAGS variables is
	propagated by gnatlib-sjlj and gnatlib-zcx targets.
	* gcc-interface/Make-lang.in: Update dependencies.

2012-02-17  Thomas Quinot  <quinot@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): For an
	instantiation in an RCI library unit, omit the instance body
	if the RCI library unit is the instance itself (E.2.3(18)),
	but include the body if the instantiation is within the RCI
	declaration (12.3(12)).

2012-02-17  Steve Baird  <baird@adacore.com>

	* sem_prag.adb (Analyze_PPC_In_Decl_Part): Pre'Class and
	Post'Class aspects can only be specified for a primitive operation
	of a tagged type.

2012-02-17  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor shuffling.

2012-02-17  Ed Schonberg  <schonberg@adacore.com>

	* aspects.adb: Expression functions can carry pre/postconditions.
	* par-ch6.adb (P_Subprogram): look for optional pre/postconditions
	in an expression function.
	* sem_prag (Check_Precondition_Postcondition): legal on expression
	functions.

2012-02-17  Vincent Pucci  <pucci@adacore.com>

	* a-cdlili.adb, a-cidlli.adb, a-cihama.adb, a-cimutr.adb,
	* a-ciorma.adb, a-cohama.adb, a-coinve.adb, a-comutr.adb,
	* a-convec.adb, a-coorma.adb (Adjust): New routine.
	(Constant_Reference): Increment Busy and Lock counters.
	(Reference): Increase Busy and Lock counters.
	(Finalize): New routine.
	* a-cihase.adb, a-ciorse.adb, a-cohase.adb, a-coorse.adb:
	(Adjust): New routine.	(Constant_Reference): Increment Busy
	and Lock counters.
	(Finalize): New routine.
	* a-cdlili.ads, a-cidlli.ads, a-cihama.ads, a-cihase.ads,
	* a-cimutr.ads, a-ciorma.ads, a-ciorse.ads, a-cohama.ads,
	* a-cohase.ads, a-coinve.ads, a-comutr.ads, a-convec.ads,
	* a-coorma.ads, a-coorse: Controlled component added to the
	reference types.

2012-02-17  Robert Dewar  <dewar@adacore.com>

	* restrict.adb (Check_Restriction): Add special handling for
	No_Obsolescent_Features.

2012-02-17  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Find_Finalize_Address): When dealing with an
	internally built full view for a type with unknown discriminants,
	use the original record type.

2012-02-17  Robert Dewar  <dewar@adacore.com>

	* sem_dim.adb: Minor reformatting.

2012-02-17  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor rewording.

2012-02-17  Thomas Quinot  <quinot@adacore.com>

	* sem_aggr.adb: Minor reformatting.

2012-02-17  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Update doc for -gnatw.m to include 2*x case.

2012-02-17  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb (Is_Dim_IO_Package_Entity): New routine.
	(Is_Dim_IO_Package_Instantiation): Is_Dim_IO_Package_Entity
	call added.
	(Is_Procedure_Put_Call): Is_Dim_IO_Package_Entity
	call added.
	* s-dim.ads: Make package Pure.

2012-02-17  Gary Dismukes  <dismukes@adacore.com>

	* prj-nmsc.adb: Minor reformatting.

2012-02-17  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Update GNAT RM with a separate chapter on restrictions.

2012-02-17  Yannick Moy  <moy@adacore.com>

	* gnat_ugn.texi: Fix typos.

2012-02-17  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb: prj-nmsc.adb (Check_Aggregated): Check that an
	aggregate is not Externally_Built.

2012-02-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate): If a composite
	component has a box association, copy the default value using
	the current scope as the scope of internal types, to prevent
	scoping anomalies in gigi.

2012-02-17  Robert Dewar  <dewar@adacore.com>

	* sem_dim.adb, sem_dim.ads, s-tasren.adb, prj.adb, prj.ads, freeze.adb,
	sem_res.adb, exp_ch4.adb, sinput.adb, sinput.ads, exp_aggr.adb,
	exp_intr.adb, s-os_lib.adb: Minor reformatting.

2012-02-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Is_Non_Overriding_Operation): Add warning if the
	old operation is abstract, the relevant type is not abstract,
	and the new subprogram fails to override.

2012-02-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Identifier_to_gnu): Move block retrieving the
	type of the result to the end and execute it for a deferred constant of
	a discriminated type whose full view can be elaborated statically.

2012-02-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu) <N_Qualified_Expression>: If the
	type is tagged, mark it as used for debugging purposes.
	<N_Allocator>: Likewise for a qualified expression.

2012-02-15  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (call_to_gnu): Create the temporary for the
	return value in the by-reference return type case if this isn't the
	expression of an object declaration.  Tidy up.

2012-02-09  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/Makefile.in: Remove .sym rule (not used).
	Remove adamsg.o object (requires native message compiler).
	* init.c (CMA$_EXIT_THREAD, MTH$_FLOOVEMAT, SS$_INTDIV): Define as a
	macro instead of as extern int.
	(ADA$_ALREADY_OPEN, ADA$_CONSTRAINT_ERRO, ADA$_DATA_ERROR)
	(ADA$_DEVICE_ERROR, ADA$_END_ERROR, ADA$_FAC_MODE_MISMAT)
	(ADA$_IOSYSFAILED, ADA$_KEYSIZERR, ADA$_KEY_MISMATCH)
	(ADA$_LAYOUT_ERROR, ADA$_LINEXCMRS, ADA$_MAXLINEXC)
	(ADA$_MODE_ERROR, ADA$_MRN_MISMATCH, ADA$_MRS_MISMATCH)
	(ADA$_NAME_ERROR, ADA$_NOT_OPEN, ADA$_ORG_MISMATCH)
	(ADA$_PROGRAM_ERROR, ADA$_RAT_MISMATCH, ADA$_RFM_MISMATCH)
	(ADA$_STAOVF, ADA$_STATUS_ERROR, ADA$_STORAGE_ERROR)
	(ADA$_UNSUPPORTED, ADA$_USE_ERROR): Likewise.
	(struct cond_except): Field cond is now an unsigned int.
	(dec_ada_cond_except_table): Adjust.
	(cond_except_table): Likewise.
	(cond_resignal_table): Likewise.
	(__gnat_default_resignal_p): Fix style.

2012-02-08  Vincent Celier  <celier@adacore.com>

	* gcc-interface/Make-lang.in: Add g-byorma.o to gnatbind objects
	(g-buorma is now imported by sinput).
	Update dependencies.
	* scn.adb (Initialize_Scanner): Call Check_For_BOM
	* sinput-p.adb (Source_File_Is_Subunit): Call Check_For_BOM
	* sinput.adb: New procedure Check_For_BOM
	* sinput.ads: New procedure Check_For_BOM

2012-02-08  Vincent Pucci  <pucci@adacore.com>

	* impunit.adb: Dimension package names updated
	* Makefile.rtl: s-dim added
	* sem_dim.adb (Is_Procedure_Put_Call): minor changes
	(Is_Dim_IO_Package_Instantiation): minor changes
	* sem_dim.ads: minor changes in comments
	* snames.ads-tmpl: Name_Dim added Name_Dim_Float_IO and
	Name_Dim_Integer_IO removed
	* s-dim.ads: New package. Define the dimension terminology.
	* s-diflio.adb, s-diinio.adb, s-dimkio.ads, s-dimmks.ads,
	* s-dmotpr.ads: Package names updated.
	* s-diflio.ads, s-diinio.ads: Documentation added and package
	names updated.

2012-02-08  Gary Dismukes  <dismukes@adacore.com>

	* gcc-interface/utils2.c (build_call_alloc_dealloc_proc): Revise test
	for storage pools to test for an underlying record type rather than
	testing Is_Tagged_Type, so that simple storage pools will be handled
	the same as normal Ada storage pools.

2012-02-08  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor reshuffling to place restriction at
	appropriate place.

2012-02-08  Bob Duff  <duff@adacore.com>

	* warnsw.adb (Set_Warning_Switch): Set Warn_On_Suspicious_Modulus_Value
	False for '-gnatwA', to suppress these warnings.

2012-02-08  Vincent Celier  <celier@adacore.com>

	* sinput-p.adb (Source_File_Is_Subunit): Check for BOM before
	starting to scan, so that UTF8 encoding is taken into account.

2012-02-08  Arnaud Charlet  <charlet@adacore.com>

	* s-tasren.adb, s-tasren.ads (Internal_Complete_Rendezvous): New
	function.
	(Complete_Rendezvous): Now call Internal_Complete_Rendezvous.
	(Exceptional_Complete_Rendezvous): Mark No_Return.

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

	* exp_aggr.adb (Compile_Time_Known_Composite_Value):
	New predicate to compute whether a composite value can be
	evaluated at compile time.
	(Component_Not_OK_For_Backend): Use Compile_Time_Known_Value for all
	expressions of elementary type and Compile_Time_Known_Composite_Value
	for all other expressions.
	(Expand_Record_Aggregate): Convert to assignments in the case
	of a type with mutable components if the aggregate cannot be
	built statically.

2012-02-08  Gary Dismukes  <dismukes@adacore.com>

	* aspects.ads (type Aspect_Id): Add Simple_Storage_Pool_Type.
	(Impl_Defined_Aspects): Add association for
	Aspect_Simple_Storage_Pool_Type.
	(Aspect_Names): Add
	association for Aspect_Simple_Storage_Pool_Type.
	* aspects.adb:
	(Canonical_Aspect): Add association for Simple_Storage_Pool_Type.
	* exp_attr.adb (Expand_N_Attribute_Reference):
	Change name to Name_Simple_Storage_Pool_Type.
	* exp_ch4.adb (Expand_N_Allocator): Change
	name to Name_Simple_Storage_Pool_Type.
	* exp_intr.adb (Expand_Unc_Deallocation): Change name to
	Name_Simple_Storage_Pool_Type.	* freeze.adb (Freeze_Entity):
	Change names to Name_Simple_Storage_Pool_Type.	* par-prag.adb:
	Change names to Name_Simple_Storage_Pool_Type.	* sem_attr.adb:
	(Analyze_Attribute): Change name to Name_Simple_Storage_Pool_Type.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause):
	Change name to Name_Simple_Storage_Pool_Type.
	* sem_prag.adb:
	(Analyze_Pragma): Change name to Name_Simple_Storage_Pool_Type.
	(Sig_Flags): Change name to Name_Simple_Storage_Pool_Type.
	* sem_res.adb (Resolve_Allocator): Change name to
	Name_Simple_Storage_Pool_Type.	* snames.ads-tmpl:
	(Name_Simple_Storage_Pool_Type): New name constant.
	(type Pragma_Id): Change name to Name_Simple_Storage_Pool_Type and
	move to main pragma section because it no longer matches the
	attribute name.
	* snames.adb-tmpl (Get_Pragma_Id): Remove test for
	Name_Simple_Storage_Pool.
	(Is_Pragma_Name): Remove test for Name_Simple_Storage_Pool.

2012-02-08  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add some clarification to -gnatwA and -gnatws.

2012-02-08  Pascal Obry  <obry@adacore.com>

	* prj.adb (Compute_All_Imported_Projects): Use new
	For_Project_And_Aggregated_Context to ensure proper context is
	used for encapsulated aggregate libraries.
	* prj-proc.adb (Recursive_Process): Call
	Process_Aggregated_Projects earlier to ensure that all dependent
	projects are set with the proper encapsulated status.

2012-02-08  Pascal Obry  <obry@adacore.com>

	* s-os_lib.adb (Normalize_Arguments): Properly escape last \ in null
	terminated string.

2012-02-08  Pascal Obry  <obry@adacore.com>

	* prj.ads, prj.adb (For_Project_And_Aggregated_Context): New
	generic routine with a context parameter.

2012-02-08  Robert Dewar  <dewar@adacore.com>

	* a-coinve.adb, sem_util.adb, sem_ch8.adb, a-cobove.adb,
	a-convec.adb: Minor reformatting and code reorganization.

2012-02-08  Steve Baird  <baird@adacore.com>

	* sem_cat.adb (In_Preelaborated_Unit): A child
	unit instantiation does not inherit preelaboration requirements
	from its parent.

2012-02-08  Gary Dismukes  <dismukes@adacore.com>

	* aspects.ads (type Aspect_Id): Add Aspect_Simple_Storage_Pool.
	(Impl_Defined_Aspects): Add entry for Aspect_Simple_Storage_Pool.
	(Aspect_Argument): Add Name entry for Aspect_Simple_Storage_Pool.
	(Aspect_Names): Add entry for Aspect_Simple_Storage_Pool.
	* aspects.adb (Canonical_Aspect): Add entry for
	Aspect_Simple_Storage_Pool.
	* exp_attr.adb (Expand_N_Attribute_Reference): Handle case of
	Attribute_Simple_Storage_Pool in the same way as Storage_Pool
	(add conversion, analyze/resolve). For the Storage_Size attribute,
	for the simple pool case, locate and use the simple pool type's
	Storage_Size function (if any), otherwise evaluate to zero.
	* exp_ch4.adb (Expand_N_Allocator): In the case of an allocator
	for an access type with an associated simple storage pool,
	locate and use the pool type's Allocate.
	* exp_intr.adb (Expand_Unc_Deallocation): In the case where the
	access type has a simple storage pool, locate the pool type's
	Deallocate procedure (if present) and use it as the procedure
	to call on the Free operation.
	* freeze.adb (Freeze_Entity): In the case of a full type for
	a private type defined with pragma Simple_Storage_Pool, check
	that the full type is also appropriate for the pragma. For
	a simple storage pool type, validate that the operations
	Allocate, Deallocate (if present), and Storage_Size
	(if present) are defined with appropriate expected profiles.
	(Validate_Simple_Pool_Op_Formal): New procedure
	(Validate_Simple_Pool_Operation): New procedure Add with and
	use of Rtsfind.
	* par-prag.adb: Add Pragma_Simple_Storage_Pool to case statement
	(no action required).
	* sem_attr.adb (Analyze_Attribute): For the case of the
	Storage_Pool attribute, give a warning if the prefix type has an
	associated simple storage pool, and rewrite the attribute as a
	raise of Program_Error. In the case of the Simple_Storage_Pool
	attribute, check that the prefix type has an associated simple
	storage pool, and set the attribute type to the pool's type.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add
	Aspect_Simple_Storage_Pool case choice.
	(Analyze_Attribute_Definition_Clause): Add
	Aspect_Simple_Storage_Pool to case for Ignore_Rep_Clauses
	(no action). Add handling for Simple_Storage_Pool attribute
	definition, requiring the name to denote a simple storage pool
	object.
	(Check_Aspect_At_Freeze_Point): For a simple storage pool
	aspect, set the type to that of the name specified for the aspect.
	* sem_prag.adb (Analyze_Pragma): Add handling for pragma
	Simple_Storage_Pool, requiring that it applies to a library-level
	type declared in a package declaration that is a limited private
	or limited record type.
	* sem_res.adb (Resolve_Allocator): Flag an attempt to call a
	build-in-place function in an allocator for an access type with
	a simple storage pool as unsupported.
	* snames.ads-tmpl: Add Name_Simple_Storage_Pool.
	(type Attribute_Id): Add Attribute_Simple_Storage_Pool.
	(type Pragma_Id): Add Pragma_Simple_Storage_Pool.
	* snames.adb-tmpl (Get_Pragma_Id): Handle case of
	Name_Simple_Storage_Pool.
	(Is_Pragma_Name): Return True for Name_Simple_Storage_Pool.

2012-02-08  Cyrille Comar  <comar@adacore.com>

	* projects.texi: Clarify doc for interfaces.

2012-02-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (GCC_LINKERFLAGS): New variable.
	(GCC_LINK): Use it.

2012-02-01  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/trans.c (Loop_Statement_to_gnu): Use sizetype
	instead of size_type_node.

2012-01-30  Nicolas Roche  <roche@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	* gcc-interface/Makefile.in: Use system-vxworks-system-ppc-mils.ads
	when needed.
	Remove Linker_Options -crtbe when building sjlj run-time.

2012-01-30  Robert Dewar  <dewar@adacore.com>

	* sem.adb (Analyze): Call Analyze_Mod for N_Op_Mod mode.
	* sem_ch3.adb (Modular_Type_Declaration): Warn on mod value of
	form 2 * small-literal.
	* sem_ch4.adb (Analyze_Mod): New procedure (warn on suspicious
	mod value).
	* sem_ch4.ads (Analyze_Mod): New procedure.

2012-01-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: sem_ch6.adb (Analyze_Expression_Function): Copy
	types and return expression when building spec for implicit
	body, to preserve global references that may be present in an
	instantiation.

2012-01-30  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb, a-coinve.adb, a-cobove.adb (Sort,
	Reverse_Elements): Check for cursor tampering.

2012-01-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Fully_Initialized_Type): In Ada 2012, a
	type with aspect Default_Value or Default_Component_Value is
	fully initialized, and use of variables of such types do not
	generate warnings.

2012-01-30  Javier Miranda  <miranda@adacore.com>

PR ada/15846
	* sem_ch8.adb (Analyze_Subprogram_Renaming):
	Handle self-renaming when the renamed entity is referenced using
	its expanded name.

2012-01-30  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add documentation for attribute Interfaces.

2012-01-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Finalizer_Call): Set loc again.
	* exp_ch11.adb (Expand_At_End_Handler): Do not provide a source
	location for the wrapped call to the original AT_END routine
	and the subsequent return statement.

2012-01-30  Pascal Obry  <obry@adacore.com>

	* s-rannum.adb: Minor reformatting.

2012-01-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend-vms.adb, a-calend.adb: Increment the number of leap seconds
	to 25 and add the hard time value for 2012-06-30.

2012-01-30  Robert Dewar  <dewar@adacore.com>

	* a-strhas.ads, einfo.adb, einfo.ads, exp_ch7.adb, exp_ch9.adb,
	freeze.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-proc.adb, s-llflex.ads,
	s-ransee.adb, s-ransee.ads, sem_ch13.adb, sem_dim.adb, sem_prag.adb:
	Minor reformatting/code reorganization.

2012-01-30  Thomas Quinot  <quinot@adacore.com>

	* s-rannum.adb, s-ransee.adb, s-ransee.ads (Get_Seed): Return
	Unsigned_64 rather than Duration.
	(System.Random_Numbers.Reset): Use full value of seed
	(do not truncate sub-second bits).

2012-01-30  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb, sem_ch12.adb: Minor reformatting.

2012-01-30  Yannick Moy  <moy@adacore.com>

	* gnat_ugn.texi: Minor correction of GNAT UG, to take into
	account changes to -gnatwa and more recent warnings.

2012-01-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Finalizer_Call): Do not provide a source
	location when creating a call to a finalizer.
	* exp_ch11.adb (Expand_Exception_Handlers): Do not provide
	a source location for the first actual of Save_Occurrence for
	consistency sake.

2012-01-30  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo,adb: New attribute on scalar types:
	Default_Aspect_Value New attribute on  array types:
	Default_Aspect_Component_Value Move attribute Related_Array_Object
	to a different position to accomodate new aspect attributes.
	* freeze.adb (Freeze_Entity): Use new attributes to retrieve value
	of defaults set with an aspect specification, rather than using
	the list of aspects attached to the type, to prevent issues with
	partial views.
	* sem_ch13.adb (Analyze_Aspect_Specifications): For aspects
	Default_Value and Default_Component _Value, store corresponding
	expression in type entity.
	(Check_Aspect_At_End_Of_Declaration): If the default aspects
	are declared on the full view, use the full view to resolve the
	correseponding expression.
	* exp_ch3.adb (Init_Component): Use attribute
	Default_Aspect_Component_Value to perform default initialization,
	rather than relying on the rep item list for the type.
	(Get_Simple_Init_Val): Ditto.

2012-01-30  Thomas Quinot  <quinot@adacore.com>

	* a-strhas.ads: Document risk of collision attack.

2012-01-30  Yannick Moy  <moy@adacore.com>

	* gnat_ugn.texi: Minor update wrt warning switches.

2012-01-30  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Interfaces): Report an error when a
	unit from Library_Interface is not a unit of the project.

2012-01-30  Vincent Pucci  <pucci@adacore.com>

	* sem_prag.adb (Make_Aspect_For_PPC_In_Gen_Sub_Decl): Parent
	links fixed inside PPC pragmas.
	* sem_ch12.adb: Move call to Make_Aspect_For_PPC_In_Gen_Sub_Decl.

2012-01-30  Thomas Quinot  <quinot@adacore.com>

	* s-ransee.ads: Minor reformatting.

2012-01-30  Pascal Obry  <obry@adacore.com>

	* prj.ads, prj.adb (For_Each_Source): Add support for skipping
	sources coming from an encapsulated library.

2012-01-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process-Full_View): fix typo.
	* sem_ch13.adb (Aalyze_Aspect_Specifications): if predicates
	appear on a private type and the full view is available, ensure
	existence of freeze node for full view.
	(Build_Predicate_Function): Attach predicate function to both
	views of a private type.

2012-01-30  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Interfaces): Compute the Lib_Interface_ALIs
	for the project if either attribute Library_Interface or
	Interfaces is declared.
	(Check_Stand_Alone_Library): Use Lib_Interface_ALIs computed in
	Check_Interfaces.

2012-01-30  Pascal Obry  <obry@adacore.com>

	* prj-proc.adb (Recursive_Process): Set From_Encapsulated_Lib
	boolean value to true in the process list created by this routine.
	* prj.ads (Project_List_Element): New field From_Encapsulated_Lib.
	Continued work for KA06-021.
	* prj.adb (Compute_All_Imported_Projects): Set
	From_Encapsulated_Lib boolean flag.

2012-01-30  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb (Expand_Put_Call_With_Dimension_Symbol): Minor
	code clean up.
	* s-diflio.ads: Minor change.

2012-01-30  Javier Miranda  <miranda@adacore.com>

	* exp_ch9.adb (Build_Dispatching_Requeue): Add missing call
	to Get_Entry_Index.  Required to generate code which provides
	the correct value of Entry_Index in the target entry.

2012-01-30  Nicolas Roche  <roche@adacore.com>

	* system-vxworks-ppc.ads: Add pragma Linker_Options -crtbe to
	fix issue with zcx on VxWorks5.

2012-01-30  Pascal Obry  <obry@adacore.com>

	* prj.ads, prj.adb (For_Every_Project_Imported): Remove
	In_Aggregate_Lib.
	(For_Every_Project_Imported_Context): New generic routine with
	a context parameter.
	* prj-nmsc.adb: Revert to use For_Every_Project_Imported Avoid
	distributed complexity.
	* prj-env.adb, prj-conf.adb, makeutl.adb, gnatcmd.adb: Ditto.

2012-01-30  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.adb (Expand_Record_Aggregate): After creating the
	_parent aggregate for an extension aggregate, check whether it
	requires delayed (top-down) expansion.

2012-01-30  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb (Expand_Put_Call_With_Dimension_Symbol): Rewritten.
	* snames.ads-tmpl: Name_Item and Name_Symbols added.
	* s-diflio.adb, s-diflio.ads, s-diinio.adb, s-diinio.ads: Rename
	and change the position of parameter Symbols in every Put routine.
	* s-dimmks.ads: Convert long float type Mks_Type into long
	long float.
	* s-llflex.ads: Modifications in comments.

2012-01-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Earlier): Do not use the
	top level source locations of the two input nodes.

2012-01-30  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, sem_prag.adb, sem_attr.adb, aspects.ads,
	sem_cat.adb, sem_aggr.adb, exp_aggr.adb: Minor reformatting.

2012-01-30  Robert Dewar  <dewar@adacore.com>

	* a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb: Minor reformatting.

2012-01-30  Olivier Hainque  <hainque@adacore.com>

	* sigtramp-ppcvxw.c (CFI_COMMON_REGS): Add rule for r1 back +
	comments.

2012-01-30  Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi, sem_dist.adb, sem_dist.ads, einfo.ads, sem_prag.adb,
	sem_ch12.adb, sem_attr.adb, aspects.adb, aspects.ads, par-prag.adb,
	sem_cat.adb, snames.ads-tmpl (Sem_Dist.Is_Valid_Remote_Object_Type):
	New subprogram (extracted from
	Sem_Cat.Validate_Remote_Access_Object_Type_Declaration).
	(Einfo.Is_Remote_Types): Now applies to generic types. Update
	documentation accordingly.
	(Sem_Ch12.Analyze_Associations): A RACW type is acceptable as
	actual for a formal type to which a pragma Remote_Access_Type
	applies.
	(Aspects, Par.Prag, Sem_Prag): Support for new pramga/aspect
	Remote_Access_Type.
	(Sem_Attr.Analyze_Attribute, case Stub_Type): Attribute can
	be applied to a generic type if pragma Remote_Access_Type
	applies, in which case the type of the attribute is
	System.Partition_Interface.RACW_Stub_Type.

2012-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Do not set
	an alignment on fields of the RETURN type built for the CICO mechanism.

2012-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): Avoid making a SAVE_EXPR for
	a call to a function that returns an unconstrained type with default
	discriminant.  Similarly, avoid doing the conversion to the nominal
	result type in this case.

2012-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (DECL_ALIASED_P): New flag.
	* gcc-interface/decl.c (is_variable_size): Rename to...
	(type_has_variable_size): ...this.
	(adjust_packed): Adjust to above renaming.
	(gnat_to_gnu_field): Set DECL_ALIASED_P on the field.
	(field_is_artificial): New predicate.
	(field_is_aliased): Likewise.
	(field_has_self_size): Likewise.
	(field_has_variable_size): Likewise.
	(components_to_record): Record information for the final layout during
	the first pass on fields.
	If there is an aliased field placed after a field whose length depends
	on discriminants, put all the fields of the latter sort, last.

2012-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (get_minimal_subprog_decl): Declare.
	* gcc-interface/decl.c (get_minimal_subprog_decl): New function.
	* gcc-interface/trans.c (Attribute_to_gnu): Use it for the prefix of an
	Access-like attribute in a dispatch table if the subprogram is public.

2012-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (create_label_decl): Adjust.
	* gcc-interface/utils.c (create_label_decl): Add GNAT_NODE parameter
	and invoke gnat_pushdecl on it.  Remove obsolete settings.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Label>: Adjust call to
	create_label_decl.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Null): Likewise.  Ignore the
	label for debugging purposes.

2012-01-27  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: For an aliased
	object with an unconstrained nominal subtype and if optimization isn't
	enabled, create a special VAR_DECL for debugging purposes.

2012-01-23  Robert Dewar  <dewar@adacore.com>

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

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Check for
	language defined aspect applied to renaming or formal type
	declaration (not permitted)

2012-01-23  Matthew Heaney  <heaney@adacore.com>

	* a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb (Vet): Replaced
	comment with pragma Assert.

2012-01-23  Vincent Pucci  <pucci@adacore.com>

	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Call
	to Make_Aspect_For_PPC_In_Gen_Sub_Decl added in ASIS mode.
	* sem_prag.adb, sem_prag.ads (Make_Aspect_For_PPC_In_Gen_Sub_Decl): New
	routine. In ASIS mode, convert any PPC pragmas into aspects in generic
	subprogram declaration in order to enable the analysis of PPC boolean
	expressions.

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Properly
	handle Current_Value for volatile variables (also propagate
	Treat_As_Volatile from type to object).

2012-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Install_Body): Detect the case
	where the enclosing context is a package with a stub body that
	has already been replaced by the actual body. In such cases,
	the freeze node for the enclosing context must be inserted after
	the real body.

2012-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Debug): Freeze the called
	subprogram before expanding the pragma into an if-statement with
	a block, to ensure that when the subprogram is null its body is
	properly generated before expansion.

2012-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Analyze_Associations): Alphabetize local variables and
	constants. Rename Actual_Types to Actuals_To_Freeze. Rename Next_Formal
	to Saved_Formal.
	Freeze all eligible subprograms which appear as actuals in
	the instantiation.
	(Has_Fully_Defined_Profile): New routine.
	(Renames_Standard_Subprogram): New routine.
	(Earlier): Add local variable N. Comment update. Do not use source
	locations when trying to determine whether one node precedes another.

2012-01-23  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch4.adb (Expand_Concatenate): In the case
	where the result of a concatentation can be null, set the to
	result have both the low and high bounds of the right operand (not
	just the high bound, as was the case prior to this fix). Also,
	fix the saved high bound setting (Last_Opnd_High_Bound) in the
	empty string literal case (should have been low bound minus one,
	rather than plus one).

2012-01-23  Thomas Quinot  <quinot@adacore.com>

	* scos.ads, put_scos.adb, get_scos.adb (Get_SCOs, Put_SCOs): Do not
	omit statement SCOs for disabled pragmas.

2012-01-23  Matthew Heaney  <heaney@adacore.com>

	* a-cohase.ads, a-cihase.ads, a-cbhase.ads, a-coorse.ads,
	a-ciorse.ads, a-cborse.ads, a-cohama.ads, a-cihama.ads, a-cbhama.ads,
	a-coorma.ads, a-ciorma.ads, a-cborma.ads, a-cdlili.ads, a-cidlli.ads,
	a-cbdlli.ads, a-convec.ads, a-coinve.ads, a-cobove.ads (Cursor'Read,
	Cursor'Write): Declare in private part.
	(Reference_Type'Read, Reference_Type'Write): Ditto.
	(Constant_Reference_Type'Read, Constant_Reference_Type'Write): Ditto.

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* a-catizo.ads, a-calend.adb, a-calend.ads, par-ch13.adb: Minor
	reformatting.

2012-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Declaration): Do not set the
	Corresponding_Body on a defaulted null formal subprogram.
	* sem_ch12.adb (Check_Formal_Package_Instance): No check needed
	on a defaulted formal subprogram that is a null procedure.

2012-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb: Update the comments involving pragma Implemented.
	* sem_ch3.adb (Check_Pragma_Implemented (Entity_Id)): Add local
	constant Subp_Alias and local variable Impl_Subp. Properly
	handle aliases of synchronized wrappers. Code cleanup.
	(Check_Pragma_Implemented (Entity_Id; Entity_Id)): Add
	Name_Optional as part of the condition.
	* sem_prag.adb (Analyze_Pragma): Add "Optional" as one of the
	valid choices of implementation kind.
	(Check_Arg_Is_One_Of): New routine.
	* snames.ads-tmlp: Add Name_Optional.

2012-01-23  Ed Schonberg  <schonberg@adacore.com>

	* par-ch13.adb: Better error recovery in illegal aspect
	specification.

2012-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend.adb: Add with clause for Interfaces.C. Add constant
	Unix_Max.
	(Day_Of_Week): Call the internal UTC_Time_Offset.
	(Split): Call the internal UTC_Time_Offset.
	(Time_Of): Call the internal UTC_Time_Offset.
	(Time_Zone_Operations.UTC_Time_Offset): Call internal UTC_Time_Offset.
	(UTC_Time_Offset): New library-level routine.
	* a-calend.ads (UTC_Time_Offset): Remove parameter
	Is_Historic. Update related comment on usage.
	* a-catizo.adb (UTC_Time_Offset): Removed.
	(UTC_Time_Offset (Time)): Call Time_Zone_Operations.UTC_Time_Offset.
	* a-caltizo.ads (UTC_Time_Offset): Removed.
	(UTC_Time_Offset (Time)): Add back the default expression of parameter
	Date.

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* sprint.ads, sprint.adb (Sprint_Node_List): Add New_Lines parameter
	(pg,po,ps): Make sure each entry starts on new line.

2012-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-calend.ads, a-calend.adb: Define types int and int_Pointer. Update
	the parameter profile of procedure localtime_tzoff and its associated
	comment.
	(Day_Of_Week): Do not treat the input date as historical
	with respect to time zones.
	(Split): Do not treat the input
	date as historical with respect to time zones.	(Time_Of): Do
	not treat the input constituents as forming a historical date
	with respect to time zones.
	(UTC_Time_Offset): Add new formal
	parameter Is_Historic. Add local variable Flag. Update the call
	to localtime_tzoff.
	* a-catizo.ads, a-catizo.adb (UTC_Time_Offset): New routine.
	(UTC_Time_Offset (Time)): Update the call to
	Time_Zone_Operations.UTC_Time_Offset.
	* sysdep.c (__gnat_localtime_tzoff): Update parameter
	profile. Split the processing of offsets on Windows into two - one
	part of historic time stamps and the other for the current time.

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* a-calend.adb: Minor reformatting.

2012-01-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb, sem_ch9.adb: Handle array of access to synchronized
	interface in requeue statement.

2012-01-23  Cyrille Comar  <comar@adacore.com>

	* projects.texi: Remove references to main units and replace
	with references to main programs to be coherent with the
	documentation.

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* s-utf_32.adb: Minor reformatting.

2012-01-23  Vincent Celier  <celier@adacore.com>

	* snames.ads-tmpl: Minor comment addition Indicate that
	Name_Library_Encapsulated_Options is only used in gprbuild.

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch10.adb (Analyze_Subunit): Properly save/restore cunit
	restrictions.

2012-01-23  Ed Schonberg  <schonberg@adacore.com>

	* snames.ads-tmpl: Add Name_Synchronization.
	* aspects.ads, aspects.adb: Add Aspect_Synchronization to
	enumeration type and related maps.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Handle Aspect
	Synchronization, build corresponding pragma Implemented.
	* sem_util.adb (Implementation_Kind): Handle both explicit and
	implicit pragma_argument association to retrieve the given
	synchronization mode.

2012-01-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch10.adb, errout.adb: Minor reformatting.

2012-01-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): An actual in a call to an
	Ada 2012 Reference function does not lead to a dangerous order
	dependence.

2012-01-23  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb (Is_Iterated_Container): Test
	Is_Entity_Name when searching for calls to the default iterator,
	to avoid blowing up on indirect calls which have an explicit
	dereference as the call name.

2012-01-23  Thomas Quinot  <quinot@adacore.com>

	* errout.adb (Set_Msg_Node): For an N_Expanded_Name, output
	the complete expanded name, rather than just its Selector_Name.

2012-01-23  Thomas Quinot  <quinot@adacore.com>

	* a-textio.adb (Put): Rewrite one-parameter Character version to
	just call the two-parameter one with Current_Out.

2012-01-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Check_Current_Instance): Issue an
	error when the prefix of 'Unchecked_Access or 'Access does not
	denote a legal aliased view of a type.
	(Freeze_Record_Type): Do not halt the processing of record components
	once the Has_Controlled_Component is set as this bypasses the remaining
	checks.
	(Is_Aliased_View_Of_Type): New routine.

2012-01-23  Thomas Quinot  <quinot@adacore.com>

	* errout.ads, freeze.adb: Minor reformatting.

2012-01-23  Thomas Quinot  <quinot@adacore.com>

	* sem_ch10.adb, sem_prag.adb: Remove redundant apostrophes in error
	messages.

2012-01-23  Olivier Hainque  <hainque@adacore.com>

	* adadecode.c (__gnat_decode): Deal with empty input early,
	preventing potential erroneous memory access later on.

2012-01-21  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/46192
	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: In the case of a
	renaming, preserve the volatileness through the indirection, if any.

2012-01-14  Andreas Schwab  <schwab@linux-m68k.org>

	* gcc-interface/Makefile.in (OSCONS_EXTRACT): Add
	$(GNATLIBCFLAGS).

2012-01-10  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb (Check_Library_Attributes):
	Kill check for object/source directories for aggregate libraries.

2012-01-10  Matthew Heaney  <heaney@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-cborma.adb, a-cborma.ads, a-cidlli.adb, a-cidlli.ads, a-cimutr.adb,
	a-cimutr.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-comutr.adb, a-comutr.ads, a-ciorma.adb, a-cobove.adb,
	a-ciorma.ads, a-cobove.ads, a-convec.adb, a-convec.ads, a-cohase.adb,
	a-cohase.ads, a-cbdlli.adb, a-cbdlli.ads, a-cbmutr.adb, a-cbmutr.ads,
	a-cbhase.adb, a-cbhase.ads (Reference, Constant_Reference): Declare
	container parameter as aliased in/in out.
	Code clean ups.

2012-01-10  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads: Improve comment.

2012-01-10  Geert Bosch  <bosch@adacore.com>

	* s-gearop.adb (Forward_Eliminate): Avoid improper aliasing
	for complex Scalar.

2012-01-10  Bob Duff  <duff@adacore.com>

	* sem_intr.adb (Check_Shift): Use RM_Size instead of Esize, when
	checking that the 'Size is correct. If the type is "mod 2**12",
	for example, it's illegal, but Esize is the 'Object_Size, which
	will be something like 16 or 32, so the error ('Size = 12) was
	not detected.
	* gnat_rm.texi: Improve documentation of shift
	and rotate intrinsics.

2012-01-10  Pascal Obry  <obry@adacore.com>

	* prj.adb (For_Every_Project_Imported): Fix
	implementation to make sure we return each project only once
	for aggragte libraries. It is fine to return a project twice for
	aggregate projects, this was the case as a Project_Id is different
	in each project tree. The new implementation use a table based on
	the project name to ensure proper detection of duplicate project
	in aggregate library. A new context is then created to continue
	retrurning duplicate project for aggregate libraries.

2012-01-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (call_to_gnu): Create the temporary for the
	return value in the variable-sized return type case if the target is
	an array with fixed size.  However, do not create it if this is the
	expression of an object declaration.

2012-01-09  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (addressable_p) <COMPONENT_REF>: Fix thinko.

2012-01-06  Robert Dewar  <dewar@adacore.com>

	* a-wichha.ads, a-wichun.ads, a-zchhan.ads, a-zchuni.ads,
	s-utf_32.ads: Add pragma Pure
	* s-utf_32.adb: Suppress warnings on non-static constants (now
	that this is Pure).

2012-01-06  Bob Duff  <duff@adacore.com>

	* s-rpc.ads (Read, Write): Add overriding indicators.

2012-01-06  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add documentation for conventions
	Ada_Pass_By_Copy and Ada_Pass_By_Reference.

2012-01-06  Gary Dismukes  <dismukes@adacore.com>

	* a-tienio.adb (Put): Add exception message on
	raise statements. Remove unneeded blocks and object declarations.

2012-01-06  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.

2012-01-06  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb (Has_Prefixed_Call): New flag to indicate
	that a selected component within a generic unit has been resolved
	as a prefixed call with local references.
	* sem_ch3.adb (Is_Visible_Component): In an instance body a selected
	component is always visible.
	* sem_ch4.adb (Analyze_Selected_Component): If the node is a
	prefixed call in an instance, do not look for visible components
	of the type.
	* sem_ch12.adb (Reset_Entity): If a selected component has resolved
	to a prefixed call, mark the node accordingly when prefix and
	selector are local references.

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

	* gnatvsn.ads (Current_Year): Bump to 2012.

Copyright (C) 2012 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.
