2011-12-23  Pascal Obry  <obry@adacore.com>

	* prj.ads (For_Every_Project_Imported): Add In_Aggregate_Lib
	parameter to generic formal procedure.
	* prj.adb (For_Every_Project_Imported): Update accordingly.
	(Recursive_Check): Likewise. Do not parse imported project for
	aggregate library. This is needed as the imported projects are
	there just to handle dependencies.
	(Look_For_Sources): Likewise.
	(Recursive_Add): Likewise.
	* prj-env.adb, prj-conf.adb, makeutl.adb, gnatcmd.adb:
	Add In_Aggregate_Lib parameter to routines used with
	For_Every_Project_Imported generic procedure.
	* prj-nmsc.adb (Tree_Processing_Data): Add In_Aggregate_Lib field.
	(Check): Move where it is used. Fix implementation
	to not check libraries that are inside aggregate libraries.
	(Recursive_Check): Add In_Aggregate_Lib parameter.

2011-12-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Analyze_Package_Body, Has_Referencer): A generic
	package is a referencer regardless of whether there is a
	subsequent subprogram with an Inline pragma.

2011-12-23  Geert Bosch  <bosch@adacore.com>

	* sem_ch3.adb (Can_Derive_From): Check matching Float_Rep on VMS.

2011-12-23  Pascal Obry  <obry@adacore.com>

	* gnatcmd.adb, prj.adb, prj-nmsc.adb: Minor reformatting.

2011-12-22  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Create the objects
	associated with exception handling unconditionally.
	(Build_Adjust_Statements): Create the objects associated with
	exception handling unconditionally.
	(Build_Components): Create the objects associated with exception
	handling unconditionally.
	(Build_Finalize_Statements): Create the objects associated with
	exception handling unconditionally.
	(Build_Initialize_Statements): Create the objects associated with
	exception handling unconditionally.
	(Build_Object_Declarations): Set the proper location of the data
	record when exception propagation is forbidden.

2011-12-22  Gary Dismukes  <dismukes@adacore.com>

	* a-tienio.adb (Put): Test validity of Item parameters before
	applying Image, and raise Constraint_Error for invalid values.

2011-12-22  Bob Duff  <duff@adacore.com>

	* a-stwima.ads (Initialize,Adjust,Finalize): Add overriding indicators.
	* a-ststio.ads (AFCB_Allocate,AFCB_Close,AFCB_Free,Read,Write): Add
	overriding indicators.

2011-12-22  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-hpux-dce.ads: Update header to GPLv3

2011-12-22  Ed Schonberg  <schonberg@adacore.com>

	* a-cohase.ads, a-cohase.adb: Update to latest RM version. Add
	aspect Constant_Reference to set type, and corresponding
	functions.
	* a-cihama.ads, a-cihama.adb: Update to latest RM version. Add
	function Reference to provide a proper element iterator construct
	over indefinite maps.

2011-12-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Expand_N_Attribute, case 'Access): Do not insert
	implicit conversion on prefix of Unrestricted_Access when prefix
	is an explicit dereference.

2011-12-22  Vincent Pucci  <pucci@adacore.com>

	* sem_dim.adb: Addressed all ??? comments. Replacement of warnings by
	errors using continuation marks.
	(Error_Dim_Msg_For_?): Renaming of Error_Dim_For_?.

2011-12-22  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_ch3.ads, sem_prag.adb: Minor code clean up.

2011-12-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* s-oscons-tmplt.c [__alpha__ && __osf__] (_XOPEN_SOURCE): Define.

2011-12-21  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.ads, sem_ch3.adb (Check_CPP_Type): New subprogram.
	(Process_Full_View): Invoke Check_CPP_Type if processing the
	full-view of a CPP type.
	* sem_prag.adb (Process_Import_Or_Interface): Add missing support
	for importing a CPP type that has an incomplete declaration. Move
	to new routine Check_CPP_Type the code that verifies that
	components of imported CPP types do not have default expressions.

2011-12-21  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Report_No_Sources): Remove argument Lang. Report
	no sources even for languages that are not allowed.
	(Add_Source): Get the source even when the language is not allowed.

2011-12-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Process_Formals): Add defensive code.

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

	* sem_ch7.adb, sem_ch13.adb (Analyze_Package_Specification): Build the
	invariant procedure of a type declaration that is a completion and has
	aspect specifications.
	(Build_Invariant_Procedure): If the procedure is built for a
	type declaration that is a completion, analyze body expliitly
	because all private declarations have been already analyzed.

2011-12-21  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfhase.adb, a-cforma.adb, a-cforse.adb,
	a-cofove.adb: Minor reformating on formal containers

2011-12-21  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Mains.Complete_Mains.Do_Complete): Remove
	any main that is not in the list of restricted languages.
	(Insert_Project_Sources.Do_Insert): Only add sources of languages
	in the list of restricted languages.

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

	* sem_res.adb (Valid_Conversion): A type conversion is valid when
	the target type is an anonymous access type and the operand is a
	rewriting of an allocator. The conversion is typically inserted
	when the designated type is an interface.

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

	* exp_ch9.adb (Establish_Task_Master): If the enclosing block
	has no declarations, create new declarative list for it.

2011-12-21  Matthew Heaney  <heaney@adacore.com>

	* a-rbtgbk.adb (Generic_Conditional_Insert): Fixed incorrect comment.

2011-12-21  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not
	ignore representation attributes in Alfa mode, since formal
	verification backend does not depend on actual physical
	representation, but code may still refer to attribute values.

2011-12-21  Yannick Moy  <moy@adacore.com>

	* par-ch13.adb (P_Aspect_Specifications): Recognize the cases
	where a comma between two aspects is missing, or erroneously
	replaced by a semicolon, issue an error and proceed with next
	aspect.
	* par.adb, sinfo.ads: Fix typos.

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

	* sem_util.adb (Mark_Coextensions): A coextension for an
	object that is part of the expression in a return statement,
	or part of the return object in an extended return statement,
	must be allocated dynamically.

2011-12-21  Matthew Heaney  <heaney@adacore.com>

	* a-crbtgk.adb (Generic_Conditional_Insert): Fixed incorrect comment.

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

	* sem_ch5.adb (Analyze_Iterator_Specification): If the name
	of an element iterator is not an entity name we introduce a
	local renaming declaration for it. To prevent spurious warnings
	on parameterless function calls that return a container, when
	expansion is disabled (either explicitly or because of a previous
	errors) the name must be marked as not coming from source.

2011-12-21  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Separate
	handling in CodePeer mode and only ignore Component_Size
	attribute.

2011-12-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Process_Formals): Set proper mechanism for
	formals whose types have conventions Ada_Pass_By_Copy or
	Ada_Pass_By_Reference.

2011-12-21  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Gnat1Drv): Always delete old scil files in
	CodePeer mode.

2011-12-21  Robert Dewar  <dewar@adacore.com>

	* comperr.adb: Minor reformatting.

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

	* aspects.ads: New table Base_Aspect, to indicate that an aspect
	is defined on a base type.
	* aspects.adb (Find_Aspect): If the aspect is a Base_Aspect,
	examine the representation items of the base type.

2011-12-21  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi, prj.ads, prj-nmsc.adb, prj-attr.adb, projects.texi,
	snames.ads-tmpl: Use Encapsulated instead of Fully Standalone library.

2011-12-21  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_is_executable_file_attr) [_WIN32]: Add parentheses
	to kill warning.

2011-12-21  Arnaud Charlet  <charlet@adacore.com>

	* comperr.adb (Delete_SCIL_Files): Also delete .scilx files.
	Fix implementation for child packages and package specs.
	(Delete_SCIL_Files.Decode_Name_Buffer): New function.

2011-12-21  Robert Dewar  <dewar@adacore.com>

	* err_vars.ads, a-cdlili.adb, a-cfdlli.ads, prj.adb, prj-nmsc.adb,
	a-cbdlli.adb, a-cbdlli.ads, a-cfdlli.adb: Minor reformatting.

2011-12-21  Vincent Pucci  <pucci@adacore.com>

	* s-diflio.adb, s-diflio.ads, s-diinio.adb, s-diinio.ads,
	s-llflex.ads: Fix header.

2011-12-21  Thomas Quinot  <quinot@adacore.com>

	* thread.c, s-oscons-tmplt.c, init.c (pthread_condattr_setclock): For
	AIX 5.2, define as a dummy weak symbol in init.c.
	(CLOCK_RT_Ada): Set to CLOCK_MONOTONIC on all versions of AIX.

2011-12-21  Thomas Quinot  <quinot@adacore.com>

	* snames.ads-tmpl, sem_ch8.adb: Minor reformatting.
	* sem_prag.adb: Minor comment clarification.

2011-12-21  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Report_No_Sources): New argument Lang for the
	language name as a Name_Id. Do not report no sources if language
	is not allowed.
	(Add_Source): Do not add source if language is not allowed.
	* prj.adb (Add_Restricted_Language): New procedure
	(Is_Allowed_Language): New function
	* prj.ads (Add_Restricted_Language): New procedure
	(Is_Allowed_Language): New function

2011-12-21  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, sem_dim.adb, sem_dim.ads, sem_ch12.adb, prj-conf.adb:
	Minor reformatting.

2011-12-21  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads (Constant_Indexing, Default_Iterator,
	Iterator_Element): Added to type List.               
	(Not_No_Element, List_Iterator_Interfaces, Iterate,
	Constant_Reference_Type, Constant_Reference): New.
	* a-cfdlli.adb (type Iterator, Finalize, First, Last, Next,
	Previous, Iterate, Not_No_Element, Constant_Reference): New.

2011-12-21  Gary Dismukes  <dismukes@adacore.com>

	* gnat_ugn.texi: Minor reformatting.

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

	* exp_ch5.adb (Expand_Iterator_Loop): The cursor operation
	Has_Element is the formal of Iterator_Interfaces, and within
	the instantion of this package it is a renaming of some local
	function with an unrelated name. Retrieve the operation from
	the instance itself, not from the container package.

2011-12-21  Vincent Pucci  <pucci@adacore.com>

	* exp_ch6.adb (Expand_Call): Expand_Put_Call_With_Dimension_String
	replaced by Expand_Put_Call_With_Dimension_Symbol
	* sem_ch12.adb (Analyze_Package_Instantiation): New check for
	System.Dim_Float_IO and System.Dim_Integer_IO instantiation.
	* sem_ch3.adb (Analyze_Declarations): Removed
	Remove_Dimension_In_Declaration call.
	* sem_dim.adb: Update comments. Redefine the
	representation of a Rational. Propagate all changes involving
	data structures and types throughout the pakage. Output the
	dimension aggregates for each error messages.
	("/"): Rational constructor "/" removed for Whole operands.
	("/"): New rational operation "/" for Rational operands.
	("*"): Operation "*" between Rational and Int removed.
	("abs"): New unary operator "abs" for Rational.
	(Analyze_Aspect_Dimension_System): Reorganized.
	(Analyze_Dimension_Identifier): Removed.
	(Copy_Dimensions): Removed.
	(Create_Rational_From_Expr): New Boolean parameter.
	(Dimensions_Msg_Of): New routine. Return
	a string with the dimensions of the parameter.
	(From_Dimension_To_String_Of_Symbols): Renaming of
	From_Dimension_To_String_Id.
	* sem_dim.ads: Update comments.
	(Is_Dim_IO_Package_Instantiation): New routine.
	(Remove_Dimension_In_Declaration): Removed.
	* sem_res.adb (Resolve_Op_Expon): Reorganized calls of
	Eval_Op_Expon_For_Dimensioned_Type and Eval_Op_Expon.
	* s-diflio.ads, s-diinio.ads: Update comments.

2011-12-21  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, snames.ads-tmpl: Add Library_Standalone,
	Library_Fully_Standalone_Options and
	Library_Fully_Standalone_Supported attributes.
	* prj-nmsc.adb (Check_Library): Update check to take into
	account fully standalone libraries. Such shared libraries can
	only depend on static libraries.
	(Check_Stand_Alone_Library): Add support for fully standalone libraries.
	(Process_Project_Level_Simple_Attributes): Store value for
	configuration attribute Library_Fully_Standalone_Supported.
	* prj.ads, makeutl.adb (Standalone): New enumeration type.
	(Project_Data): Standalone_Library now of type Standlone.
	(Project_Configuration): Add Lib_Fully_Standalone_Supported
	field.
	(Default_Project_Config): Initialize new Lib_Fully_Standalone_Supported
	field.
	* clean.adb (Clean_Project): Adjust to new type for Standalone.
	* make.adb (Library_Phase): Adjust to new type for Standalone.
	(Gnatmake): Likewise.
	* mlib-prj.adb (Build_Library): Adjust to new type for
	Standalone.

2011-12-21  Thomas Quinot  <quinot@adacore.com>

	* gnatls.adb (Gnatls): Call Set_Standard_Error at startup, and then
	Set_Standard_Output just before producing normal (non-diagnostic)
	output.
	* gnatcmd.adb (Gnatcmd): Call Set_Standard_Error at initialization
	(and again after parsing project files).

2011-12-21  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Do_Autoconf): When the object directory does
	not exist, create auto.cgpr in the directory where temporary
	files are created.

2011-12-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Insert_Freeze_Node_For_Instance):  Further
	refinements on the placement of a freeze node for a package
	instantiation, when the generic appears within a previous
	instantiation in the same unit.If the current instance is within
	the one that contains the generic, the freeze node for the
	current one must appear in the current declarative part. Ditto
	if the current instance is within another package instance. In
	these cases the freeze node of the previous instance is is not
	relevant. New predicate Enclosing_Body simplifies the process.
	(Freeze_Subprogram_Body): Rename Enclosing_Body to
	Enclosing_Package_Body, to prevent confusion with subprogram of
	same name elsewhere.
	(Install_Body): Recognize enclosing subprogram bodies to determine
	whether freeze_node belongs in current declarative list.

2011-12-20  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Allow
	attribute definition clause for renaming if generated internally
	and generate duplicate clause to apply to renamed object.
	(Rep_Item_Too_Late): Only diagnose source level entities
	* prj-nmsc.adb: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-12-20  Bob Duff  <duff@adacore.com>

	* opt.ads (List_Inherited_Aspects): Default to False
	(i.e. -gnatw.L is the default).
	* usage.adb: Document new default for -gnatw.L.
	* gnat_ugn.texi: Document -gnatw.l and -gnatw.L switches.
	* warnsw.adb (Set_Warning_Switch): Do not include
	List_Inherited_Aspects in -gnatwa.

2011-12-20  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Apply_Type_Conversion_Checks): For a discrete type
	with predicates, indicate unconditionally that a range check
	is needed.
	* exp_ch4.adb (Expand_N_In): When the membership test is rewritten
	to incorporate a call to a predicate function, analyze expression
	with checks suppressed, to prevent infinite recursion.

2011-12-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch11.adb (Find_Local_Handler): Guard the
	search over individual exception choices in case the list of
	handlers contains other (possibly illegal) constructs.

2011-12-20  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch8.adb (Find_Type): Test taggedness
	of the Available_Type when checking for an illegal use of an
	incomplete type, when the incomplete view is a limited view of
	a type. Remove redundant Is_Tagged test.

2011-12-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb: Add with and use clause for Aspects.
	(Is_Finalizable_Transient): Objects which denote Ada containers
	in the context of iterators are not considered transients. Such
	object must live for as long as the loop is around.
	(Is_Iterated_Container): New routine.

2011-12-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_imgv.adb (Expand_Width_Attribute): Add a
	type conversion from the enumeration subtype to its base subtype.

2011-12-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb (Operator_Check): Update the call to
	Is_Dimensioned_Type.
	* sem_dim.adb: Remove with and use clause for Namet.Sp. Reorganize
	all type declarations and datastructures involved. Propagate
	all changes involving data structures and types throughout
	the pakage. Alphabetize all subprograms. Add ??? comments.
	(AD_Hash): Removed.
	(Analyze_Aspect_Dimension): Rewritten. This
	routine now does all its checks in one pass rather than
	two. Refactor code. The error message are now in a more GNAT-ish style.
	(Create_Rational_From_Expr): This is now a function.
	(Get_Dimensions): Removed.
	(Get_Dimensions_String_Id): Removed.
	(Dimensions_Of): New rouitne.
	(Exists): New routines.
	(Is_Invalid): New routine.
	(Permits_Dimensions): Removed.
	(Present): Removed.
	(Set_Symbol): New routine.
	(System_Of): New routine.
	* sem_dim.ads: Rewrite the top level description of the
	package. Alphabetize subprograms. Add various comments on
	subprogram usage. Add ??? comments.
	(Is_Dimensioned_Type):
	Renamed to Has_Dimension_System.
	* sem_res.adb (Resolve_Op_Expon): Update the call to Is_Dimensioned_Type

2011-12-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Check_Indexing_Functions): The return type of an
	indexing function can be the default element type, and does not
	need to be a reference type.
	* sem_ch4.adb (Try_Container_Indexing): Ditto.

2011-12-20  Robert Dewar  <dewar@adacore.com>

	* a-cdlili.ads, sem_cat.adb, sem_ch10.adb: Minor reformatting.

2011-12-20  Bob Duff  <duff@adacore.com>

	* s-taprop-mingw.adb (Yield): Do_Yield is no longer Unreferenced.

2011-12-20  Vincent Pucci  <pucci@adacore.com>

	* impunit.adb: s-dimkio, s-dimmks and s-dmotpr defined as GNAT
	Defined Additions to System.
	* Makefile.rtl: s-dimkio, s-dimmks and s-dmotpr added.
	* s-dimkio.ads, s-dimmks.ads, s-dmotpr.ads: New files.

2011-12-20  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb (Traverse_Homonyms): Allow a homonym to match when
	within an instance, even if the homonym is marked Is_Hidden at
	this point.

2011-12-20  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_ch5.adb, s-diinio.adb, s-diinio.ads, sem_dim.adb,
	sem_dim.ads, sem_res.adb, s-stposu.adb, s-stposu.ads, sem_ch4.adb,
	s-diflio.adb, s-diflio.ads, exp_disp.adb, s-llflex.ads: Minor
	reformatting.
	* aspects.ads: Dimension[_Aspects] are GNAT defined.

2011-12-20  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Check
	renaming case.

2011-12-20  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb, sem_ch10.adb (Analyze_With_Clause): For a WITH clause on
	a child unit that is an illegal instantiation, mark the WITH clause in
	error.
	(Install_Siblings, Validate_Categorization_Dependency): Guard
	against WITH clause marked as in error.

2011-12-20  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Allocator): Warning on allocation
	of tasks on a subpool and rewrite the allocator into a raise
	Program_Error statement.
	* s-stposu.ads, s-stposu.adb: Code reformatting.
	(Create_Subpool): Remove formal parameter Storage_Size.
	(Default_Subpool_For_Pool): Add the default implementation of this
	routine.
	(Set_Pool_Of_Subpool): Rename formal parameter Pool to To. Update
	all the uses of the parameter.

2011-12-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (%86 linux%):
	(LIBGNAT_TARGET_PAIRS_32): Split off from LIBGNAT_TARGET_PAIRS.
	(LIBGNAT_TARGET_PAIRS_64): New.
	(LIBGNAT_TARGET_PAIRS): Add either depending on multilib.

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

	* gcc-interface/decl.c (gnat_to_gnu_param): Add comment about double
	reference and DECL_POINTS_TO_READONLY_P.
	* gcc-interface/trans.c (Identifier_to_gnu) <by_ref>: Always set the
	TREE_READONLY flag on the first dereference of a double dereference.

2011-12-15  Arnaud Charlet  <charlet@adacore.com>

	* a-numaux-vms.ads, s-asthan-vms-ia64.adb, s-auxdec-vms-ia64.adb,
	s-memory-vms_64.adb, s-memory-vms_64.ads, s-osinte-vms-ia64.adb,
	s-osinte-vms-ia64.ads, s-tasdeb-vms.adb: New files.

2011-12-15  Vincent Pucci  <pucci@adacore.com>

	* aspects.adb, aspects.ads Aspect_Dimension and
	Aspect_Dimension_System added
	* exp_ch6.adb (Expand_Call): Expand_Put_Call_With_Dimension_String
	case added
	* gcc-interface/Make-lang.in: s-llflex, sem_dim added.
	* impunit.adb :s-diflio and s-diinio defined as GNAT Defined
	Additions to System.
	* Makefile.rtl: s-diflio, s-diinio and s-llflex added
	* par-prag.adb, sem_prag.adb: Pragma_Dimension removed
	* rtsfind.ads: Expon_LLF added
	* sem_aggr.adb (Resolve_Aggregate): handles aggregate for
	Aspect_Dimension case
	* sem_attr.adb (Resolve_Attribute): analyze dimension for
	attribute
	* sem_ch10.adb (Analyze_With_Clause): Avoid the warning messages
	due to the use of a GNAT library for Dimension packages
	* sem_ch13.adb (Analyze_Aspect_Specifications):
	Aspect_Dimension and Aspect_Dimension_System cases added
	(Check_Aspect_At_Freeze_Point): Aspect_Dimension and
	Aspect_Dimension_System cases added
	* sem_ch2.adb (Analyze_Identifier): analyze dimension for
	identifier
	* sem_ch3.adb (Analyze_Component_Declaration): analyze dimension
	for component declaration (Analyze_Object_Declaration): analyze
	dimension for object declaration (Analyze_Subtype_Declaration):
	analyze dimension for subtype declaration
	* sem_ch4.adb (Operator_Check): checks exponent is a rational
	for dimensioned operand for a N_Op_Expon
	* sem_ch5.adb (Analyze_Assignment): analyze dimension for
	assignment (Analyze_Statements): removal of dimensions in all
	statements
	* sem_ch6.adb (Analyze_Return_Statement): analyze dimension for
	return statement
	* sem_ch8.adb (Analyze_Object_Renaming): analyze dimension for
	object renaming
	* sem_dim.adb, sem_dim.ads (Analyze_Aspect_Dimension):
	analyze the expression for aspect dimension and store the
	values in a Htable.
	(Analyze_Aspect_Dimension_System): analyze
	the expression for aspect dimension system and store the new
	system in a Table.
	(Analyze_Dimension): propagates dimension
	(Expand_Put_Call_With_Dimension_String): add the dimension
	string as a suffix of the numeric value in the output
	(Has_Dimension): return True if the node has a dimension
	(Remove_Dimension_In_Declaration): removal of dimension in the
	expression of the declaration.
	(Remove_Dimension_In_Statement): removal of dimension in statement
	* sem_res.adb (Resolve): analyze dimension if the node
	has already been analyzed.
	(Resolve_Arithmetic_Op): analyze
	dimension for arithmetic op.
	(Resolve_Call): analyze dimension for function call.
	(Resolve_Comparison_Op): analyze dimension for comparison op.
	(Resolve_Equality_Op): analyze dimension for equality op.
	(Resolve_Indexed_Component): analyze dimension for indexed component.
	(Resolve_Op_Expon): analyze dimension for op expon.
	(Resolve_Selected_Component): analyze dimension
	for selected component.
	(Resolve_Slice): analyze dimension for slice.
	(Resolve_Unary_Op): analyze dimension for unary op
	(Resolve_Type_Conversion): analyze dimension for type conversion
	(Resolve_Unchecked_Type_Conversion): analyze dimension for
	unchecked type conversion
	* snames.ads-tmpl Name_Dimension, Name_Dimension_System,
	Name_Dim_Float_IO, Name_Dim_Integer_IO,
	Name_Generic_Elementary_Functions, Name_Sqrt added.
	Pragma_Dimension removed
	* s-diflio.adb, s-diflio.ads New GNAT library generic package
	for dimensioned float type IO
	* s-diinio.adb, s-diinio.ads New GNAT library generic package
	for dimensioned integer type IO
	* s-llflex.ads (Expon_LLF): exponentiation routine for long long
	floats operand and exponent

2011-12-15  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb: Minor comment addition.

2011-12-15  Bob Duff  <duff@adacore.com>

	* s-tasren.adb (Task_Count): Do not call Yield; E'Count is not a
	task dispatching point.
	* s-taprop-mingw.adb (Yield): Do not yield if Do_Yield is False.

2011-12-15  Robert Dewar  <dewar@adacore.com>

	* sigtramp-ppcvxw.c, sigtramp.h: Fix header.

2011-12-15  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): For 'alignment
	applied to a class-wide type under VM targets generate code which
	invokes the function Get_Alignment to retrieve the value of the
	alignment from the TSD.
	* rtsfind.ads (RE_Get_Alignment): New entity.

2011-12-15  Robert Dewar  <dewar@adacore.com>

	* g-comlin.adb: Fix header.

2011-12-15  Tristan Gingold  <gingold@adacore.com>

	* gnatls.adb: Fix typo.

2011-12-15  Ed Falis  <falis@adacore.com>

	* s-tpopsp-vxworks.adb: Update comment.

2011-12-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate, Resolve_Aggr_Expr); If
	the component type has predicates, generate corresponding check.
	(Resolve_Record_Aggregate, Resolve_Aggr_Expr): Ditto.

2011-12-13  Cesar Strauss  <cestrauss@gmail.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/49084
	* types.h (Byte): Change typedef to 'unsigned char'.
	* atree.h (struct Flag_Word): Use Byte for 'convention' field.

2011-12-12  Robert Dewar  <dewar@adacore.com>

	* s-taprop-mingw.adb: Minor reformatting.

2011-12-12  Nicolas Roche  <roche@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	Add gnattools4 target when building tools in canadian mode

2011-12-12  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_VM_TSD): Complete previous patch.

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

	* s-tpobop.adb: Use named notation.
	* g-bytswa.ads, s-taprop.ads: Minor comment fix.

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

	* make.adb: Minor comment update.

2011-12-12  Robert Dewar  <dewar@adacore.com>

	* freeze.adb, s-taprop-mingw.adb, exp_disp.adb, sem_ch13.adb: Minor
	reformatting.

2011-12-12  Robert Dewar  <dewar@adacore.com>

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

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

	* freeze.adb (Freeze_Entity): If a type declared in a generic
	context has predicates, generate a freeze node for it.
	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): If expression
	has not been analyzed yet, entity has not been frozen, so analyze
	it now.

2011-12-12  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_VM_TSD): Generate code to store the value of
	'alignment in the TSD.

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

	* s-taprop-mingw.adb (Yield): Do not delay 1 millisecond in Annex D
	mode.

2011-12-12  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Update the master of an
	anonymous access-to-controlled type to utilize the heterogeneous
	master associated with the current unit.

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

	* sem_ch6.adb (Analyze_Expression_Function): If the function
	is not a completion, pre-analyze the expression now to prevent
	spurious visibility on later entities. The body is inserted at
	the end of the current declaration list or package to prevent
	early freezing, but the visibility is established at the point
	of definition.

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

	* sem.adb, sem.ads: Add debugging routines.

2011-12-12  Tristan Gingold  <gingold@adacore.com>

	* gnatls.adb: (gnatls): Also add the objects dir in search list.

2011-12-12  Robert Dewar  <dewar@adacore.com>

	* exp_atag.adb, exp_atag.ads, exp_util.adb, exp_attr.adb,
	sem_ch13.adb: Minor reformatting.

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

	* sem_ch7.adb (Uninstall_Declarations): Don't
	apply check for incomplete types used as a result type for an
	access-to-function type when compiling for Ada 2012 or later.
	* sem_ch6.adb (Analyze_Subprogram_Declaration):
	Specialize error message for interface subprograms that are
	not declared abstract nor null (functions can't be declared as
	null). Also, remove "(Ada 2005)" from message.

2011-12-12  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (GNAT_Pragma): Check comes from source.

2011-12-12  Robert Dewar  <dewar@adacore.com>

	* gnatls.adb: Minor reformatting.

2011-12-12  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads (Alignment): New TSD field.
	(Max_Predef_Prims): Value lowered to 15 (or 9 in case of
	configurable runtime) Update documentation of predefined
	primitives since Alignment has been removed.
	* exp_disp.ads Update documentation of slots of dispatching
	primitives.
	* exp_disp.adb (Default_Prim_Op_Position): Update slot
	values since alignment is no longer a predefined primitive.
	(Is_Predefined_Dispatch_Operation): Remove _alignment.
	(Is_Predefined_Internal_Operation): Remove _alignment.
	(Make_DT): Update static test on the value stored in a-tags.ads
	for Max_Predef_Prims; store the value of 'alignment in the TSD.
	* exp_atag.ads, exp_atag.adb (Build_Get_Alignment): New subprogram
	that retrieves the alignment from the TSD
	* exp_util.adb (Build_Allocated_Deallocate_Proc): For deallocation
	of class-wide types obtain the value of alignment from the TSD.
	* exp_attr.adb (Expand_N_Attribute_Reference): For 'alignment
	applied to a class-wide type invoke Build_Get_Alignment to
	generate code which retrieves the value of the alignment from
	the TSD.
	* rtsfind.ads (RE_Alignment): New Ada.Tags entity
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): For tagged
	types if the value of the alignment is bigger than the Maximum
	alignment then set the value of the alignment to the Maximum
	alignment and report a warning.
	* exp_ch3.adb (Make_Predefined_Primitive_Specs): Do not generate
	spec of _alignment.
	(Predefined_Primitive_Bodies): Do not generate body of _alignment.

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

	* freeze.adb (Freeze_Expression): Allow freezing of static
	scalar subtypes that are prefixes of an attribute, even if not
	yet marked static. Such attributes will get marked as static
	later in Eval_Attribute (as called from Resolve_Attribute).
	* sem_attr.adb (Eval_Attribute): Remove wrong code that does an
	early return for attribute prefixes that are unfrozen source-level
	types. This code was incorrectly bypassing folding of unfrozen
	static subtype attributes in default expressions (the executable
	example in the now-deleted comment was in fact illegal).

2011-12-12  Robert Dewar  <dewar@adacore.com>

	* a-coinve.adb, sem_res.adb, prj-nmsc.adb, a-cobove.adb, a-convec.adb,
	gnatls.adb, sem_ch13.adb, prj-env.adb, prj-env.ads: Minor reformatting.

2011-12-12  Tristan Gingold  <gingold@adacore.com>

	* gsocket.h: Adjust previous patch.

2011-12-12  Thomas Quinot  <quinot@adacore.com>

	* exp_disp.adb: Minor reformatting.

2011-12-12  Tristan Gingold  <gingold@adacore.com>

	* gnatls.adb (Search_RTS): New procedure.
	(Scan_Ls_Arg): Move code that search the RTS.
	(Gnatls): search the RTS later.
	* prj-env.ads, prj-env.adb (Get_Runtime_Path): New function.

2011-12-12  Ed Falis  <falis@adacore.com>

	* sysdep.c: Fix treatment of VxWorks task options so that run-times
	built with __SPE__ get option VX_SPE_TASK while others get VX_FP_TASK.

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

	* sem_type.adb, sem_type.ads, sem_ch4.adb, treepr.adb, treepr.ads:
	Minor cleanup and fiddling with debug printouts.

2011-12-12  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Get_Directories): For a non extending project,
	always get a declared object and/or exec directory if it already
	exists, even when there are no sources, but do not create them.

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

	* sem_res.adb (Resolve): Deal with the case where an abstract
	operator is called with operands of type universal_integer.

2011-12-12  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Minor fix to dominance marker referencing WHILE
	decision.

2011-12-12  Tristan Gingold  <gingold@adacore.com>

	* mlib-tgt-specific-xi.adb: (Get_Target_Prefix): Simplify code.

2011-12-12  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Adjust dominant marker for branches of CASE
	statements.

2011-12-12  Thomas Quinot  <quinot@adacore.com>

	* gsocket.h, s-oscons-tmplt.c: Ensure we do not include any system
	header file prior to redefining FD_SETSIZE.

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

	* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In
	a generic context the aspect expressions may not have been
	preanalyzed if there was no previous freeze point, so the
	expressions must be preanalyzed now, and there is no conformance
	to check for visibility changes.

2011-12-12  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb, a-coinve.adb, a-cobove.adb (Iterator): Use
	subtype Index_Type'Base for Index component (Finalize): Remove
	unnecessary access check (First, Last): Cursor return value
	depends on iterator index value (Iterate): Use start position as
	iterator index value (Next, Previous): Forward to corresponding
	cursor-based operation.
	* a-cborma.adb (Iterate): Properly initialize iterator object (with 0
	as node index).

2011-12-12  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, scos.ads, put_scos.adb, get_scos.adb: Minor reformatting.

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

	* sem_ch3.adb (Check_Completion): Improve a comment.

2011-12-12  Tristan Gingold  <gingold@adacore.com>

	* cstand.adb: Minor comment fix.

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

	* gcc-interface/utils2.c (gnat_build_constructor): Test the TREE_STATIC
	flag of elements to compute that of the constructor.

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

	* gcc-interface/decl.c (gnat_to_gnu_param): Set the restrict qualifier
	on references built for parameters which aren't specifically by-ref.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: If there is an
	alignment set on a renaming, assert that the renamed object is aligned
	enough as to make it possible to honor it.

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

	* gcc-interface/trans.c (gigi): Initialize the linemap earlier.

2011-12-06  Dave Korn  <dave.korn.cygwin@gmail.com>

	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS [windows targets]):
	Correctly detect cygwin, which no longer has the '32' suffix, and use
	appropriate implementations of the sockets and memory packages.
	* sysdep.c (WIN_SETMODE): New define to choose the correct spelling of
	setmode/_setmode for MinGW and Cygwin, respectively.
	(__gnat_set_binary_mode [windows targets]): Use the above, and enable
	the windows version for Cygwin as well as MinGW.
	(__gnat_set_text_mode [windows targets]): Likewise.
	(__gnat_ttyname [windows targets]): Provide a Cygwin implementation
	in addition to the MinGW version.
	(__gnat_is_windows_xp): Make available to Cygwin as well as MinGW.
	(__gnat_get_stack_bounds): Likewise.

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

	* sem_ch4.adb: Minor comment fix.

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

	* gnat_ugn.texi: Add documentation for -gnatw.e.

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

	* treepr.adb (pn): Print something useful for
	Elmt_Ids. Add Write_Eol to 'when others' case, so the output
	will be seen immediately in gdb.

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

	* lib-writ.adb (Output_Main_Program_Line): A generic subprogram
	is never a main program.

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

	* par_sco.adb: Various minor adjustments to dominance markers
	generation.

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

	* sem_ch6.adb (Analyze_Expression_Function): If the function is
	a completion, generate a body reference for its defining entity,
	before rewriting the node as a body.
	* sem_util.adb (Defining_Entity): Add entry for expression
	function.

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

	* sem_ch3.adb (Derive_Progenitor_Subprograms): Add Ultimate_Alias
	to the Comes_From_Source check, to deal properly with the case
	of indirect inheritance of "=".

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

	PR ada/51307
	* s-oscons-tmplt.c: On HP-UX, CLOCK_REALTIME is an enum literal,
	not a macro.

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

	* par_sco.adb, scos.ads, put_scos.adb, get_scos.adb: Generate dominance
	information in SCOs.

2011-12-02  Eric Botcazou  <ebotcazou@adacore.com>
	    Thomas Quinot <quinot@adacore.com>

	* gcc-interface/Makefile.in (INCLUDES): Remove $(srcdir)/config.
	(INCLUDES_FOR_SUBDIR): Add $(fsrcdir) except for VxWorks.
	Add thread.c to LIBGNAT_SRCS so that a symlink is created in ada/rts,
	which allows the file to be installed in adainclude.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-12-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Constrain_Access): Undo previous
	patch for this routine. Required since the RM rule 3.7.1(7/3)
	applies to all access types.

2011-12-02  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb: Minor comment fix.

2011-12-02  Joel Sherrill <joel.sherrill@oarcorp.com>

	* s-tpopsp-rtems.adb: Use ATCB_Key rather than RTEMS_Ada_Self variable
	for consistency with other ports.
	* s-osinte-rtems.adb: Add body for dummy implementation of
	pthread_rwlockattr_setkind_np().
	* s-osinte-rtems.ads: Add missing clock and rwlock bindings.
	* terminals.c: Add __rtems__ conditionals to account for differences
	in termios implementation.

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_attr.adb, a-comutr.adb, a-cbmutr.adb,
	a-cbmutr.ads: Minor reformatting.

2011-12-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_dbug.adb: Comment reformatting.
	(Get_External_Name): Use Reset_Buffers to reset the contents of
	Name_Buffer and Homonym_Numbers.
	(Qualify_All_Entity_Names): Reset the contents of Name_Buffer and
	Homonym_Numbers before creating a new qualified name for a particular
	entity.
	(Reset_Buffers): New routine.

2011-12-02  Matthew Heaney  <heaney@adacore.com>

	* a-cbmutr.ads (No_Node): Moved declaration from body to spec
	* a-comutr.adb, a-cimutr.adb, a-cbmutr.adb (Iterator): Derives
	from Root_Iterator.
	(Child_Iterator): Derives from Root_Iterator.
	(Finalize): Implemented as an override operation for Root_Iterator.
	(First): Return value depends on Subtree component.
	(Last): Component was renamed from Parent to Subtree.
	(Next): Checks parameter value, and uses simplified loop.
	(Iterate): Forwards to Iterate_Subtree.
	(Iterate_Children): Component was renamed from Parent to Subtree.
	(Iterate_Subtree): Checks parameter value

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Add lines for -gnatw.n and -gnatw.N
	(atomic sync info msgs).

2011-12-02  Steve Baird  <baird@adacore.com>

	* sem_ch3.adb (Check_Completion): An Ada 2012
	generic formal type doesn't require a completion.

2011-12-02  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_util.adb (Set_Debug_Info_Needed): Also set the flag on the
	packed array type if it is to be set on the array type used to
	represent it.

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Eliminate confusing use of type name.

2011-12-02  Thomas Quinot  <quinot@adacore.com>

	* sem_ch10.adb (Analyze_Compilation_Unit): For a library subprogram
	body that acts as spec, do not create a shallow copy of the context
	clause for the synthetized spec (instead, use the same list as
	in the body).

2011-12-02  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Clarify usage of -p binder switch.

2011-12-02  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb, sem_aux.ads, sem_aux.adb
	(Effectively_Has_Constrained_Partial_View): Moved to sem_aux
	(In_Generic_Body): Moved to sem_aux.
	(Unit_Declaration_Node): Moved to sem_aux.
	* einfo.ads (Effectively_Has_Constrained_Partial_View): Complete
	documentation.
	* exp_attr.adb, live.adb, sem_ch10.adb, checks.adb, sem.adb,
	rtsfind.adb, sem_attr.adb, sem_elab.adb, exp_ch4.adb, sem_ch4.adb,
	exp_ch13.adb: Add with-clause on Sem_Aux.

2011-12-02  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Unique_Name): Reach through Unique_Entity to
	get the name of the entity.
	(Unique_Entity): Correct case for subprogram stubs.

2011-12-02  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Check_Initialization): Do not emit warning on
	initialization of limited type object in Alfa mode.

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Minor reformatting.
	* gnat_ugn.texi: Fix confusion in use of term "type name".

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Minor change in error message.

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch9.adb, prj-part.adb, vms_data.ads, sem_ch8.adb: Minor
	reformatting.

2011-12-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Constrain_Access): Enable on Ada 2005 mode the
	static check of the rule of general access types whose designated
	type has discriminants.
	* sem_util.ads, sem_util.adb
	(Effectively_Has_Constrained_Partial_View): New subprogram.
	(In_Generic_Body): New subprogram.
	* einfo.ads (Has_Constrained_Partial_View): Adding documentation.
	* sem_prag.adb (Inside_Generic_Body): Removed. Replaced by new
	subprogram In_Generic_Body.
	* exp_attr.adb, checks.adb, sem_attr.adb, exp_ch4.adb,
	sem_ch4.adb: In addition, this patch replaces the occurrences of
	Has_Constrained_Partial_View by
	Effectively_Has_Constrained_Partial_View.

2011-12-02  Matthew Heaney  <heaney@adacore.com>

	* a-comutr.adb, a-cimutr.adb, a-cbmutr.adb (Iterator): Rename
	Position component.
	(Finalize): Remove unnecessary access check.
	(First): Forward to First_Child.
	(Last): Forward to Last_Child.
	(Iterate): Check preconditions for parent node parameter.
	(Next): Forward to Next_Sibling.
	(Previous): Forward to Previous_Sibling.

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* a-coinve.adb, a-coorma.adb, freeze.adb, a-coorse.adb, a-comutr.adb,
	a-coormu.adb, a-convec.adb: Minor reformatting.

2011-12-02  Matthew Heaney  <heaney@adacore.com>

	* a-coormu.ads, a-ciormu.ads: Declare iterator factory function.
	* a-ciormu.adb, a-ciormu.adb (Iterator): Declare concrete
	Iterator type.
	(Finalize): Decrement busy counter.
	(First, Last): Cursor return value depends on iterator node value.
	(Iterate): Use start position as iterator node value.
	(Next, Previous): Forward to corresponding cursor-based operation.

2011-12-02  Robert Dewar  <dewar@adacore.com>

	* a-cborma.adb, a-cbhama.adb, a-cbdlli.adb, a-cbmutr.adb,
	a-cbhase.adb, a-cdlili.adb, a-cihama.adb, a-ciorse.adb, a-cidlli.adb,
	a-cimutr.adb, a-cihase.adb, a-cohama.adb, a-cborse.adb,
	a-ciorma.adb, a-cobove.adb: Minor reformatting.

2011-12-01  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/51201
	* gcc-interface/Make-lang.in: Initialize RTS_DIR with = instead of :=.

2011-11-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* s-taprop-tru64.adb (Create_Task): Use Unrestricted_Access.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* thread.c, s-oscons-tmplt.c: Generate __gnat_pthread_condattr_setup
	only on platforms where this is required, as determined by
	s-oscons.h.

2011-11-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb: No check on entry index if error on index.

2011-11-23  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Analyze_Return_Statement): Improve error messages for
	return statements nested inside an extended_return_statement.
	* gcc-interface/Make-lang.in: Update dependencies.
	* gcc-interface/Makefile.in (MISCLIB): Add -lutil for BSD targets.

2011-11-23  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_All_Ent): An incomplete type is not
	frozen by a subprogram body that does not come from source.

2011-11-23  Pascal Obry  <obry@adacore.com>

	* s-oscons-tmplt.c: Add PTY_Library constant. It contains
	the library for pseudo terminal support.
	* g-exptty.ads: Add pseudo-terminal library into a Linker_Options
	pragma.

2011-11-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb: No check on entry family index if generic.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* sem_ch9.adb, s-taprop.ads, s-taprop-hpux-dce.adb, s-taprop-irix.adb,
	s-taprop-posix.adb, s-taprop-rtx.adb, s-taprop-solaris.adb,
	s-taprop-tru64.adb, s-taprop-vxworks.adb: Move dependency on
	System.OS_Constants from shared spec of
	System.Tasking.Primitive_Operations to the specific body variants
	that really require this dependency.

2011-11-23  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming_Declaration):
	If the declaration has aspects, analyze them so they can be
	properly rejected.

2011-11-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-comutr.adb, a-coorma.adb, a-coorse.adb, a-convec.adb, a-cihase.adb,
	a-cimutr.adb, a-coinve.adb, a-ciorma.adb, a-ciorse.adb, a-cobove.adb,
	a-cohama.adb, a-cihama.adb, a-cidlli.adb, a-cdlili.adb, a-cbhama.adb,
	a-cbhase.adb, a-cbmutr.adb, a-cborma.adb, a-cborse.adb, a-cbdlli.adb:
	Add with and use clause for Ada.Finalization. Type
	Iterator and Child_Iterator are now derived from Limited_Controlled.
	(Finalize): New routine.
	(Iterate): Add a renaming of counter Busy and
	increment it. Update the return aggregate.
	(Iterate_Children): Add a renaming of
	counter Busy and increment it. Update the return aggregate.
	(Iterate_Subtree): Add a renaming of counter Busy and increment
	it. Update the return aggregate.
	* a-cdlili.ads, a-cidlli.ads: Type List_Access is now a general access
	type.
	* a-cihama.ads: Type Map_Access is now a general access type.
	* a-comutr.ads, a-cimutr.ads: Use type Natural for the two locks
	associated with the tree.
	* a-cohama.ads: Type Map_Access is now a general access type.
	* a-coinve.ads, a-convec.ads: Type Vector_Access is now a general
	access type.
	* exp_ch5.adb (Expand_Iterator_Loop): Do not create a block
	to wrap the loop as this is done at an earlier step, during
	analysis. The declarations of the iterator and the cursor use
	the usual Insert_Action mechanism when added into the tree.
	* sem_ch5.adb (Analyze_Loop_Statement): Remove local constant
	Loop_Statement and replace all respective uses by N. Add local
	constant Loc. Preanalyze the loop iterator to discover whether
	it is a container iterator and if it is, wrap the loop in a
	block. This ensures that any controlled temporaries produced
	by the iteration scheme share the same lifetime of the loop.
	(Is_Container_Iterator): New routine.
	(Is_Wrapped_In_Block): New routine.
	(Pre_Analyze_Range): Move spec and body to the library level.

2011-11-23  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi, vms_data.ads: Add documentation for new gnatpp option
	that controls casing of type and subtype names.

2011-11-23  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb: Minor addition of comments.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* prj-part.adb (Extension_Withs): New global variable,
	contains the head of the list of WITH clauses from the EXTENDS
	ALL projects for which virtual packages are being created.
	(Look_For_Virtual_Projects_For): When recursing through
	an EXTENDS ALL, add the WITH clauses of the extending
	project to Extension_Withs.  When adding a project to the
	Virtual_Hash, record the associated Extension_Withs list.
	(Create_Virtual_Extending_Project): Add a copy of the appropriate
	Extension_Withs to the virtual project.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* mlib-tgt-specific-vxworks.adb: Minor reformatting.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* Make-generated.in (Sdefault.Target_Name): Set to
	$(target_noncanonical) instead of $(target) for consistency.

2011-11-23  Matthew Heaney  <heaney@adacore.com>

	* a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb (Iterator): Declared
	Iterator type as limited (First, Last): Cursor return value
	depends on iterator node value (Iterate): Use start position as
	iterator node value (Next, Previous): Forward to corresponding
	cursor-based operation.

2011-11-23  Matthew Heaney  <heaney@adacore.com>

	* a-coorse.ads, a-ciorse.ads, a-cborse.ads (Set_Iterator_Interfaces):
	Renamed from Ordered_Set_Iterator_Interfaces.
	* a-coorse.adb, a-ciorse.adb, a-cborse.adb (Iterator): Declared
	Iterator type as limited (First, Last): Cursor return value
	depends on iterator node value (Iterate): Use start position as
	iterator node value (Next, Previous): Forward to corresponding
	cursor-based operation.
	* a-cohase.ads, a-cohase.adb: Implemented forward iterator.
	* a-cihase.adb, a-cbhase.adb (Iterator): Removed unnecessary
	node component (First, Next): Forward call to corresponding
	cursor-based operation (Iterate): Representation of iterator no
	longer has node component

2011-11-23  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): Ensure that the
	dereference has a proper type before the side effect removal
	mechanism kicks in.
	* sem_ch3.adb (Analyze_Subtype_Declaration): Handle a rare case
	where the base type of the subtype is a private itype created
	to act as the partial view of a constrained record type. This
	scenario manifests with equivalent class-wide types for records
	with unknown discriminants.

2011-11-23  Jerome Guitton  <guitton@adacore.com>

	* s-osprim-vxworks.adb (Clock): Use Clock_RT_Ada.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c: Fix unbalanced preprocessor directives Minor
	reformatting/reorganization.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* g-htable.ads: Remove old comments.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* exp_imgv.adb: Minor reformatting.

2011-11-23  Robert Dewar  <dewar@adacore.com>

	* sem_ch9.adb (Analyze_Entry_Declaration): Check for entry
	family bounds out of range.

2011-11-23  Matthew Heaney  <heaney@adacore.com>

	* a-cohama.adb, a-cihama.adb, a-cbhama.adb (Iterator): Declare
	type as limited, and remove node component.
	(First, Next): Forward call to corresponding cursor-based operation.
	(Iterate): Representation of iterator no longer has node component.

2011-11-23  Yannick Moy  <moy@adacore.com>

	* exp_util.adb: Revert previous change to remove side-effects in Alfa
	mode, which is not the correct thing to do for renamings.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* s-osinte-hpux.ads, s-taprop-vxworks.adb, s-taprop-tru64.adb,
	s-osinte-vxworks.ads, s-osinte-aix.ads, s-osinte-lynxos.ads,
	s-osinte-solaris-posix.ads, s-taprop-solaris.adb, a-exetim-posix.adb,
	s-osinte-irix.ads, s-osinte-solaris.ads, s-oscons-tmplt.c,
	s-taprop-irix.adb, s-osinte-hpux-dce.ads, Makefile.rtl,
	s-osinte-tru64.ads, s-osinte-darwin.ads, s-taprop.ads,
	s-osinte-freebsd.ads, s-osinte-lynxos-3.ads, s-taprop-hpux-dce.adb,
	s-taprop-posix.adb: Remove hard-coded clock ids;
	instead, generate them in System.OS_Constants.
	(System.OS_Constants.CLOCK_RT_Ada): New constant denoting the
	id of the clock providing Ada.Real_Time.Monotonic_Clock.
	* thread.c: New file.
	(__gnat_pthread_condattr_setup): New function. For platforms where
	CLOCK_RT_Ada is not CLOCK_REALTIME, set appropriate condition
	variable attribute.

2011-11-23  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb: Restore the use of Expander_Active instead of
	Full_Expander_Active, so that the evaluation is forced in Alfa
	mode too. Otherwise, we end up with an unexpected insertion in a
	place where it is not supposed to happen, on default parameters
	of a call.

2011-11-23  Thomas Quinot  <quinot@adacore.com>

	* prj-pp.adb, prj-pp.ads: Minor new addition: wrapper procedure "wpr"
	for Pretty_Print, for use from within gdb.

2011-11-23  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): Wrap the expanded loop
	and the cursor declarations in a block, so that the loop variable
	is local to the construct.

2011-11-23  Matthew Heaney  <heaney@adacore.com>

	* a-coorma.ads, a-ciorma.ads, a-cborma.ads (Iterate): Returns
	type Reversible_Iterator'Class.
	* a-coorma.adb, a-ciorma.adb, a-cborma.adb (Iterator):
	Declare type as limited.
	(First, Last): Return value depends on iterator's start node value.
	(Next, Previous): Call corresponding Cursor-based operation.
	(Iterate): Indicate whether complete or partial iteration

2011-11-23  Robert Dewar  <dewar@adacore.com>

	* errout.adb: Minor reformattin (Finalize): Take templates into
	account for warning suppression.
	* errout.ads (Set_Specific_Warning_Off): Add Used parameter.
	* erroutc.adb: Minor reformatting (Finalize): Take generic
	templates into account for warning suppress.
	* erroutc.ads (Set_Specific_Warning_Off): Add Used parameter.
	* sem_prag.adb: Minor reformatting (Analyze_Pragma,
	case Warnings): Provide Used parameter in call to
	Set_Specific_Warnings_Off (to deal with generic template case).

2011-11-23  Pascal Obry  <obry@adacore.com>

	* sem_prag.adb (Process_Convention): Better error message for
	stdcall convention on dispatching calls.

2011-11-23  Gary Dismukes  <dismukes@adacore.com>

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

2011-11-23  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return): Add missing
	implicit type conversion when the returned object is allocated
	in the secondary stack and the type of the returned object is
	an interface. Done to force generation of displacement of the
	"this" pointer.

2011-11-23  Pascal Obry  <obry@adacore.com>

	* impunit.adb: Add g-exptty and g-tty units.

2011-11-23  Robert Dewar  <dewar@adacore.com>

	* exp_imgv.adb: Minor code reorganization (use Make_Temporary).

2011-11-23  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, par-ch6.adb, sem_res.adb, par-util.adb: Minor
	reformatting.

2011-11-23  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Place error on
	line of precondition/ postcondition/invariant.

2011-11-23  Pascal Obry  <obry@adacore.com>

	* g-exptty.ads, g-exptty.adb, g-tty.ads, g-tty.adb,
	terminals.c: New files.
	Makefile.rtl: Add these new files.
	* gnat_rm.texi: Add documentation for GNAT.Expect.TTY.
	* gcc-interface/Makefile.in: Add g-exptty, g-tty, terminals.o
	* gcc-interface/Make-lang.in: Update dependencies.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* exp_imgv.adb (Expand_Width_Attribute): Handle case of Discard_Names.
	* sem_attr.adb (Eval_Attribute, case Width): Ditto.

2011-11-21  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads: Minor reformatting.

2011-11-21  Yannick Moy  <moy@adacore.com>

	* exp_util.adb: Minor reformatting. Update comments.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb, exp_util.adb, sinfo.ads, sem_res.adb, s-stposu.adb,
	sem_attr.adb, s-stposu.ads, s-taprop-solaris.adb, s-taprop-irix.adb,
	sem_ch6.adb: Minor reformatting.

2011-11-21  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-irix.adb, s-taprop-solaris.adb (Create_Task): Use
	Unrestricted_Access to deal with fact that we properly detect the
	error if Access is used.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-11-21  Yannick Moy  <moy@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): Place error on first character
	of expression.
	* sem_res.adb (Resolve_Short_Circuit): Place error on first
	character of expression.

2011-11-21  Yannick Moy  <moy@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Do nothing in Alfa mode.

2011-11-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case
	Max_Size_In_Storage_Elements): Account for the size of the
	hidden list header which precedes controlled objects allocated
	on the heap.
	* rtsfind.ads: Add RE_Header_Size_With_Padding to the runtime
	tables.
	* sinfo.adb (Header_Size_Added): New routine.
	(Set_Header_Size_Added): New routine.
	* sinfo.ads: Add flag Controlled_Header_Added along with
	associated comment.
	(Header_Size_Added): New inlined routine.
	(Set_Header_Size_Added): New inlined routine.
	* s-stposu.adb (Allocate_Any_Controlled): Use
	Header_Size_With_Padding to calculate the proper
	size of the header.
	(Deallocate_Any_Controlled): Use
	Header_Size_With_Padding to calculate the proper size
	of the header.	(Header_Size_With_Padding): New routine.
	(Nearest_Multiple_Rounded_Up): Removed along with its uses.
	* s-stposu.ads (Header_Size_With_Padding): New routine.

2011-11-21  Ed Schonberg  <schonberg@adacore.com>

	* aspects.adb: Aspect specifications are allowed on renaming
	declarations
	* par-ch6.adb (P_Subprogram): Parse aspect specifications in a
	subprogram renaming declaration

2011-11-21  Tristan Gingold  <gingold@adacore.com>

	* env.c: Remove unused declaration.

2011-11-21  Pascal Obry  <obry@adacore.com>

	* s-os_lib.ads: Minor style fix.

2011-11-21  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_dup2): When fd are stdout, stdin or stderr and
	identical, do nothing on Windows XP.

2011-11-21  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Constrain_Index, Process_Range_Expr_In_Decl):
	Use Full_Expander_Active instead of Expander_Active to control
	the forced evaluation of expressions for the sake of generating
	checks.

2011-11-21  Thomas Quinot  <quinot@adacore.com>

	* init.c: On FreeBSD, stack checking failures may raise SIGBUS.

2011-11-21  Tristan Gingold  <gingold@adacore.com>

	* sysdep.c (mode_read_text, mode_write_text, mode_append_text,
	mode_read_binary, mode_write_binary, mode_append_binary,
	mode_read_text_plus, mode_write_text_plus, mode_append_text_plus,
	mode_read_binary_plus, mode_write_binary_plus,
	mode_append_binary_plus): Remove unused declarations.

2011-11-21  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Minor rewording.

2011-11-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_imgv.adb (Expand_Width_Attribute): Emit
	an error message rather than a warning when pragma Discard_Names
	prevents the computation of 'Width. Do not emit an error through
	the use of RE_Null.

2011-11-21  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add
	implicit type conversion when the type of the allocator is an
	interface. Done to force generation of displacement of the "this"
	pointer when required.

2011-11-21  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb: Corresponding_Spec applies to expression
	functions, and is set when the expression is a completion of a
	previous declaration.
	* sem_ch6.adb (Analyze_Expression_Function): To determine properly
	whether an expression function completes a previous declaration,
	use Find_Corresponding_Spec, as when analyzing a subprogram body.

2011-11-21  Steve Baird  <baird@adacore.com>

	* sem_util.adb (Deepest_Type_Access_Level): Improve comment.
	(Type_Access_Level): Improve comment.

2011-11-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (INCLUDES_FOR_SUBDIR): Add $(fsrcdir) by
	means of -iquote unconditionally.

2011-11-21  Robert Dewar  <dewar@adacore.com>

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

2011-11-21  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-posix.adb (Create_Task): Use Unrestricted_Access
	to deal with fact that we properly detect the error if Access
	is used.

2011-11-21  Steve Baird  <baird@adacore.com>

	* sem_util.ads: Update comment describing function
	Deepest_Access_Level.
	* sem_util.adb (Deepest_Type_Access_Level): Return Int'Last for a
	generic formal type.
	(Type_Access_Level): Return library level
	for a generic formal type.
	* sem_attr.adb (Resolve_Attribute): Replace two Type_Access_Level
	calls with calls to Deepest_Type_Access_Level.
	* sem_ch3.adb (Analyze_Component_Declaration): replace a
	Type_Access_Level call with a call to Deepest_Type_Access_Level.
	* sem_res.adb (Resolve_Allocator.Check_Allocator_Discrim_Accessibility):
	Replace three Type_Access_Level calls with calls to
	Deepest_Type_Access_Level.
	(Resolve_Allocator): Replace a Type_Access_Level call with a call to
	Deepest_Type_Access_Level.
	(Valid_Conversion.Valid_Array_Conversion): Replace a
	Type_Access_Level call with a call to Deepest_Type_Access_Level.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, s-taprop-vms.adb, opt.ads: Minor reformatting.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* sinput.ads: Minor comment fix.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case First_Bit,
	Last_Bit, Position): Handle 2005 case.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* s-atocou-builtin.adb (Decrement): Use Unrestricted_Access
	to deal with fact that we properly detect the error if Access
	is used.
	(Increment): Same fix.
	* s-taprop-linux.adb (Create_Task): Use Unrestricted_Access
	to deal with fact that we properly detect the error if Access
	is used.
	* sem_util.adb (Is_Volatile_Object): Properly record that A.B is
	volatile if the B component is volatile. This affects the check
	for passing such a by reference volatile actual to a non-volatile
	formal (which should be illegal)

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Enumeration_Type): Make sure to set both
	size and alignment for foreign convention enumeration types.
	* layout.adb (Set_Elem_Alignment): Redo setting of alignment
	when size is set.

2011-11-21  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Access_Check, Apply_Arithmetic_Overflow_Check,
	Apply_Discriminant_Check, Apply_Divide_Check,
	Apply_Selected_Length_Checks, Apply_Selected_Range_Checks,
	Build_Discriminant_Checks, Insert_Range_Checks, Selected_Length_Checks,
	Selected_Range_Checks): Replace reference to Expander_Active
	with reference to Full_Expander_Active, so that expansion of
	checks is not performed in Alfa mode

2011-11-21  Tristan Gingold  <gingold@adacore.com>

	* s-taprop-vms.adb (Create_Task): Use Unrestricted_Access to deal with
	fact that we properly detect the error if Access is used.

2011-11-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* par-ch4.adb (P_Quantified_Expression): Add an Ada 2012 check.

2011-11-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_imgv.adb: Add with and use clause for Errout.
	(Expand_Width_Attribute): Emit a warning when in
	configurable run-time mode to provide a better diagnostic message.

2011-11-21  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-finmas.adb (Finalize): Add comment concerning double finalization.

2011-11-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Definition): If the access definition
	is itself the return type of an access to function definition
	which is ultimately the return type of an access to subprogram
	declaration, its scope is the enclosing scope of the ultimate
	access to subprogram.

2011-11-21  Steve Baird  <baird@adacore.com>

	* sem_res.adb (Valid_Conversion): If a conversion was legal
	in the body of a generic, then the corresponding conversion is
	legal in the expanded body of an instance of the generic.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* s-utf_32.adb (Is_UTF_32_Line_Terminator): Recognize NEL as
	line terminator.
	* sinput.ads: Add section on Handling of Source Line Terminators.
	* types.ads (Line_Terminator): Adjust comments.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* frontend.adb (Frontend): Capture restrictions from config files
	* lib-load.adb (Load_Unit): Save/set/restore restriction pragma
	information
	* lib-xref.adb (Generate_Reference): Fix handling of obsolescent
	references. This was noticed during debugging, but it is not
	known if it causes real bugs.
	* restrict.ads, restrict.adb: New routines to save/set/restore
	non-partition-wide restrictions.
	* s-rident.ads: Comment changes for new handling of
	No_Elaboration_Code
	* sem.adb (Sem): Save/Set/Restore non-partition-wide restrictions
	* sem_ch10.adb (Analyze_Compilation_Unit): Remove incomplete
	attempt to save/restore non-partition-wide restrictions (now
	this work is all done in Sem).
	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Special handling for restriction No_Elaboration_Code.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document new handling of restrictions pragmas.

2011-11-21  Pascal Obry  <obry@adacore.com>

	* s-taprop-linux.adb (Initialize_Lock): Do not allocate a cond
	attribute as not needed.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.

2011-11-21  Pascal Obry  <obry@adacore.com>

	* gnat_rm.texi: Document restriction for stdcall convention on
	dispatching calls.

2011-11-21  Pascal Obry  <obry@adacore.com>

	* sem_prag.adb (Process_Convention): A dispatching call cannot
	have a stdcall calling convention.

2011-11-21  Pascal Obry  <obry@adacore.com>

	* s-taprop-linux.adb (Initialize_Lock): Do not allocate a
	mutex attribute as not needed.
	(Initialize_TCB): Likewise.
	(Initialize): Likewise.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Is_Public_Subprogram_For): New procedure
	(Process_PPCs): Invariants only apply to public subprograms.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, sem_util.ads, sem_attr.adb, restrict.adb,
	restrict.ads: Fix for No_Implicit_Aliasing in the renames case.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* a-finali.ads: Use pragma Pure_12 for this unit
	* aspects.adb: Add aspect Pure_12
	* aspects.ads: Add aspect Pure_12
	* opt.ads: Add note on Pure_12
	* par-prag.adb: Add dummy entry for Pure_12
	* sem_prag.adb: Implement Pure_12 pragma
	* snames.ads-tmpl: Add Entry for Pure_12

2011-11-21  Sergey Rybin  <rybin@adacore.com frybin>

	* vms_data.ads: Add qualifiers for new gnatpp options
	'--call_threshold' and '--par_threshold".
	* gnat_ugn.texi: Add description for new gnatpp options
	'--call_threshold' and '--par_threshold".

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* lib.ads: Minor reformatting.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* lib-load.ads: Add comment.

2011-11-21  Gary Dismukes  <dismukes@adacore.com>

	* sem_elab.adb: Minor reformatting

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb: Minor reformatting.

2011-11-21  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Formal_Package_Instance): If a formal
	subprogram of the formal package is covered by an others
	association with a box initialization, no check is needed
	against the actual in the instantiation of the formal package.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Suppress junk
	elab warning from within precondition/postcondition etc.

2011-11-21  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Actuals): In Ada 2012, a function call
	with out parameters may generate assignments to force constraint
	checks. These checks must be properly placed in the code after the
	declaration or statement that contains the call.

2011-11-21  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Adding info on current gnattest limitations an
	support of -X option.

2011-11-21  Robert Dewar  <dewar@adacore.com>

	* a-cfdlli.adb, a-cbdlli.adb: Minor reformatting.

2011-11-20  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb, exp_util.adb: Minor reformatting

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

	* sinfo.ads (Reference): Document that it is OK to set
	Is_Known_Non_Null on a temporary initialized to a N_Reference
	node.

2011-11-20  Matthew Heaney  <heaney@adacore.com>

	* a-cbdlli.adb, a-cfdlli.adb (Move): Set Last component to 0
	for Source list.

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

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Assignment):
	Declare NEW_EXPR local variable and attach the
	temporary to it.  Set Is_Known_Non_Null on the temporary.
	(Make_Build_In_Place_Call_In_Object_Declaration): Likewise.
	* exp_util.adb (Remove_Side_Effects): Set Is_Known_Non_Null on
	the temporary created to hold the 'Reference of the expression,
	if any.
	* checks.adb (Install_Null_Excluding_Check): Bail out for the
	Get_Current_Excep.all.all idiom generated by the expander.

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

	* gcc-interface/trans.c (struct language_function): Add GNAT_RET.
	(f_gnat_ret): New macro.
	(struct nrv_data): Add GNAT_RET.
	(finalize_nrv_unc_r): New helper function.
	(finalize_nrv): Add GNAT_RET parameter.  Copy it into DATA.  If the
	function returns unconstrained, use finalize_nrv_unc_r as callback.
	(return_value_ok_for_nrv_p): Test the alignment of RET_OBJ only if
	RET_OBJ is non-null.
	(Subprogram_Body_to_gnu): Pass GNAT_RET to finalize_nrv.
	(gnat_to_gnu) <N_Return_Statement>: In the return-unconstrained case,
	if optimization is enabled, record candidates for the Named Return
	Value optimization.

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

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Add comment.
	(gnat_to_gnu) <N_Return_Statement>: Add 'else' to avoid doing a useless
	test.  Tweak default case.
	<N_Goto_Statement>: Use better formatting.
	* gcc-interface/utils2.c (maybe_wrap_malloc): Use INIT_EXPR instead of
	MODIFY_EXPR to initialize the storage.
	(build_allocator): Likewise.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Adjust
	call to components_to_record.
	(components_to_record): Add FIRST_FREE_POS parameter.  For the variant
	part, reuse enclosing union even if there is a representation clause
	on the Unchecked_Union.  If there is a variant part, compute the new
	first free position, if any.  Adjust call to self.  Use a single field
	directly only if it hasn't got a representation clause or is placed at
	offset zero.  Create the variant part at offset 0 if all the fields
	down to this level have a rep clause.  Do not chain the variant part
	immediately and adjust downstream.
	Do not test ALL_REP before moving the fields without rep clause to the
	previous level.  Call create_rep_part to create the REP part and force
	a minimum size on it if necessary.  Do not chain it immediately.
	Create a fake REP part if there are fields without rep clause that need
	to be laid out starting from FIRST_FREE_POS.
	At the end, chain the REP part and then the variant part.
	(create_rep_part): New function.
	(get_rep_part): Minor tweak.
	* gcc-interface/utils.c (tree_code_for_record_type): Minor tweak.

2011-11-18  Iain Sandoe  <iains@gcc.gnu.org>

	PR target/50678
	* init.c (__gnat_error_handler) [Darwin]: Move workaround to the
	bug filed as radar #10302855 from __gnat_error_handler to...
	(__gnat_adjust_context_for_raise) [Darwin]: ...here.  New function.
	(HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE) [Darwin]: Define.

2011-11-18  Tristan Gingold  <gingold@adacore.com>
	    Iain Sandoe  <iains@gcc.gnu.org>

	PR target/49992
	* mlib-tgt-specific-darwin.adb (Archive_Indexer_Options): Remove.
	* gcc-interface/Makefile.in (darwin): Remove ranlib special-casing.

2011-11-12  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (stamp-gnatlib-$(RTSDIR)): Don't link
	s-oscons.ads.
	(OSCONS_CPP, OSCONS_EXTRACT): New.
	(./bldtools/oscons/xoscons): New target.
	($(RTSDIR)/s-oscons.ads): Likewise.
	(gnatlib): Depend on $(RTSDIR)/s-oscons.ads.
	* gcc-interface/Make-lang.in (ada/s-oscons.ads) Remove as dependency.
	* Make-generated.in: Remove machinery to generate xoscons and
	ada/s-oscons.ads.

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

	* fe.h (Serious_Errors_Detected): New macro.
	* gcc-interface/gigi.h (build_atomic_load): Declare.
	(build_atomic_store): Likewise.
	* gcc-interface/trans.c (atomic_sync_required_p): New predicate.
	(call_to_gnu): Add ATOMIC_SYNC parameter.  Use local variable.
	Build an atomic load for an In or In Out parameter if needed.
	Build an atomic store for the assignment of an Out parameter if needed.
	Build an atomic store to the target if ATOMIC_SYNC is true.
	(present_in_lhs_or_actual_p): New predicate.
	(gnat_to_gnu) <N_Identifier>: Build an atomic load if needed.
	<N_Explicit_Dereference>: Likewise.
	<N_Indexed_Component>: Likewise.
	<N_Selected_Component>: Likewise.
	<N_Assignment_Statement>: Adjust call to call_to_gnu.
	Build an atomic store to the LHS if needed.
	<N_Function_Call>:  Adjust call to call_to_gnu.
	* gcc-interface/utils2.c: Include toplev.h.
	(resolve_atomic_size): New static function.
	(build_atomic_load): New function.
	(build_atomic_store): Likewise.
	* gcc-interface/Make-lang.in (ada/utils2.o): Add toplev.h.

2011-11-07  Olivier Hainque  <hainque@adacore.com>

	* sigtramp-ppcvxw.c: Add general comments.
	(CFI_COMMON_REGS): Remove rule for r1, as in other unwinders. Add
	rules for r2 to r13, plus CTR and XER.
	(CFA_REG): New, register number used to hold the local CFA.
	(CFI_DEF_CFA, SIGTRAMP_BODY): Use it.
	Make that 15, not 14, with documentation.
	(TCR): Undef before definition, preventing conflict with reg number in
	VxWorks headers.

2011-11-07  Robert Dewar  <dewar@adacore.com>

	* exp_util.ads, exp_alfa.adb, a-cohama.adb, a-cohama.ads, sem_ch4.adb,
	aspects.ads, exp_ch8.adb, exp_ch8.ads, atree.ads: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.

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

	* exp_ch6.adb: A tagged type is a legal actual for an aliased
	formal.

2011-11-07  Pascal Obry  <obry@adacore.com>

	* g-socket.adb, g-socket.ads: Minor reformatting.

2011-11-07  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Actuals): Minor error message improvement.

2011-11-07  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add discussion of default mode handling of
	source representation with no -gnatW option given, in particular
	noting that NEL (next line) is not recognized in this context.

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

	* sem_util.adb (Note_Possible_Modification): In Alfa mode,
	generate a reference for a modification even when the modification
	does not come from source.

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

	* exp_ch5.adb (Expand_Iterator_Loop): For the "of" iterator form,
	use the indexing attributes rather than the Element function,
	to obtain variable references.
	* sem_ch4.adb (Try_Container_Indexing): Code cleanup. Use
	Find_Aspect rather than iterating over representation
	items. Improve error message.
	* a-cohama.adb, a-cohama.ads Update to latest RM, with two versions
	of Reference functions.

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

	* sem_util.adb (Unique_Entity): For a parameter on a subprogram
	body that has a corresponding parameter on the subprogram
	declaration, define the unique entity as being the declaration
	one.

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

	* sem_ch6.adb (Analyze_Return_Type): In Ada 2012 mode, if the
	return type of a function is the class-wide type of an incomplete
	type T, T can be a Taft-amendment type and does not have to be
	completed in the current private part.

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

	* aspects.ads (Inherited_Aspect): Map that indicates type aspects
	that are inherited by default, and apply to the class-wide type
	as well.
	* aspects.adb (Find_Aspect): If the entity is class-wide and the
	aspect is inherited, use the aspect of the specific type.

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

	* exp_alfa.adb: Remove with and use clause for
	Exp_Ch8. Add with and use clause for Exp_Util.
	Remove local constant Disable_Processing_Of_Renamings.
	(Expand_Alfa_N_Object_Renaming_Declaration): The expansion of
	object renamings has been reenabled.
	(Expand_Possible_Renaming):
	The expansion of identifier and expanded names has been
	reenabled. Perform the substitutions only for entities that
	denote an object.
	* exp_ch8.ads, exp_ch8.adb (Evaluate_Name): Moved to Exp_Util.
	* exp_util.adb (Evaluate_Name): Moved from Exp_Ch8.
	(Remove_Side_Effects): Alphabetize local variables. Add a guard
	to avoid the infinite expansion of an expression in Alfa mode. Add
	processing for function calls in Alfa mode.
	* exp_util.ads (Evaliate_Name): Moved from Exp_Ch8.

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

	* freeze.adb (Freeze_Entity): If the entity is an access to
	subprogram whose designated type is itself a subprogram type,
	its own return type must be decorated with size information.

2011-11-04  Arnaud Charlet  <charlet@adacore.com>

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

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* sprint.adb (Sprint_Node_Actual, case Qualified_Expression):
	Avoid junk semicolon after argument of machine code Asm operand.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch11.adb (Generate_Push_Pop): Inhibit push/pop nodes in
	CodePeer mode or if restriction No_Exception_Handlers is present.
	* exp_ch6.adb (Expand_N_Subprogram_Body): (Inhibit push/pop
	nodes in CodePeer mode or if restriction No_Exception_Handlers
	is present.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* s-tassta.adb, atree.ads, errout.adb, sinput.adb: Minor reformatting.

2011-11-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Specification): The
	specification is legal if it is a function that returns an
	abstract type, if it comes from an attribute renaming of a stream
	attribute of an abstract type.

2011-11-04  Gary Dismukes  <dismukes@adacore.com>

	* exp_util.adb (Is_Possibly_Unaligned_Object): In case of indexed
	components, check whether recursively check whether the prefix
	denotes an unaligned object.

2011-11-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Debug): The argument of
	the pragma is legal if it is an expanded name that denotes a
	procedure that be can called without parameters.

2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi (Performance Considerations) <Vectorization
	of loops>: New sub-section.  <Other Optimization Switches>:
	Minor tweak.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor reformatting.

2011-11-04  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb, a-coinve.adb, a-cobove.adb (Merge): Raise PE
	when Target and Source denote same non-empty object
	* a-cdlili.adb, a-cidlli.adb, a-cbdlli.adb (Merge): Ditto

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb: Minor reformatting.

2011-11-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Assign_Record): Do not generate a
	discriminant assignment within an initialization proc if the
	record is an unchecked union, as it can only come from the
	initialization of an unchecked union component.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Minor reformatting.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* par-labl.adb (Rewrite_As_Loop): Generate info msg rather than
	warning message.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor code reorganization (remove junk obsolete
	var Save_Space).

2011-11-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_alfa.adb: Add local constant
	Disable_Processing_Of_Renamings;
	(Expand_Alfa_N_Object_Renaming_Declaration): Disable
	the name evaluation of object renamings for now.
	(Expand_Potential_Renaming): Do not perform the substitution
	for now.
	* exp_util.adb (Remove_Side_Effects): Remove processing for
        functions with side effects in Alfa mode.

2011-11-04  Gary Dismukes  <dismukes@adacore.com>

	* bindgen.adb (Gen_Elab_Calls): In the case
	of the AAMP target, set elaboration entities to 1 rather than
	incrementing.

2011-11-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Install_Limited_With_Unit): To establish the
	proper entities on the ancestors of a child unit that appear
	in a limited_with clause, follow the unit links because the
	units are not analyzed and scope information is incomplete.

2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Expand_N_Selected_Component): Refine code
	setting the Atomic_Sync_Required flag to detect one more case.
	* exp_util.adb (Activate_Atomic_Synchronization): Refine code
	setting the Atomic_Sync_Required flag to exclude more cases,
	depending on the parent of the node to be examined.

2011-11-04  Bob Duff  <duff@adacore.com>

	* g-excact.adb: Minor: use named notation.

2011-11-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: Improve error messages for illegal iterators.

2011-11-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_alfa.adb: Add with and use clauses for Exp_Ch8 and
	Sem_Util.
	(Expand_Alfa): Alphabetize cases on first choice. Add
	processing for object renaming declarations, identifiers and
	expanded names.
	(Expand_Alfa_N_In): Remove useless return.
	(Expand_Alfa_N_Object_Renaming_Declaration): New routine.
	(Expand_Potential_Renaming): New routine.
	* exp_ch8.adb (Evaluate_Name): Moved to the top level.
	(Expand_N_Object_Declaration): Alphabetize local variables. Move
	Evaluate_Name out to the top level.
	* exp_ch8.ads (Evaluate_Name): Moved from body to package spec.
	* exp_util.adb (Remove_Side_Effects): Add processing for
	functions with side effects in Alfa mode.

2011-11-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* gnat_rm.texi: Add entries for
	restrictions No_Relative_Delay, No_Requeue_Statements and
	No_Stream_Optimizations.

2011-11-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb: Set type of entity in prefixed call, for
	completeness in a generic context.

2011-11-04  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb: Minor refactoring (renaming of a parameter).

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* atree.ads: Minor reformatting.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Atomic_Synchronization_Disabled): Check -gnatd.d
	and -gnatd.e here
	* exp_ch2.adb (Expand_Entity_Reference): Use
	Activate_Atomic_Synchronization
	* exp_ch4.adb (Expand_N_Explicit_Dereference): Use
	Activate_Atomic_Synchronization (Expand_N_Indexed_Compoonent):
	Activate_Atomic_Synchronization (Expand_N_Selected_Component):
	Use Activate_Atomic_Synchronization
	* exp_util.ads, exp_util.adb (Activate_Atomic_Synchronization): New
	procedure.
	* sinfo.ads, sinfo.adb (Atomic_Sync_Required): Can now apply to
	N_Selected_Component node

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, atree.ads, prj-env.adb, prj-env.ads: Minor reformatting.

2011-11-04  Yannick Moy  <moy@adacore.com>

	* atree.adb, atree.ads (Set_Original_Node): New set procedure.
	* sem_ch13.adb (Analyze_Aspect_Specifications/Pre_Post_Aspects):
	In ASIS mode, no splitting of aspects between conjuncts.
	(Analyze_Aspect_Specifications/Aspect_Test_Case): Make pragma
	expressions refer to the original aspect expressions through
	the Original_Node link. This is used in semantic analysis for
	ASIS mode, so that the original expression also gets analyzed.
	* sem_prag.adb (Preanalyze_TC_Args,
	Check_Precondition_Postcondition,
	Analyze_Pragma/Pragma_Test_Case): In ASIS mode, for a pragma
	generated from a source aspect, also analyze the original aspect
	expression.
	(Check_Expr_Is_Static_Expression): New procedure
	similar to existing procedure Check_Arg_Is_Static_Expression,
	except called on expression inside pragma.

2011-11-04  Tristan Gingold  <gingold@adacore.com>

	* prj-env.adb, prj-env.ads (Find_Name_In_Path): New function, from
	Find_Project.Try_Path_Name.
	(Find_Project): Use Find_Name_In_Path to implement Try_Path_Name.

2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>

	* s-atocou.ads (Atomic_Counter): Remove redundant pragma Volatile.

2011-11-04  Pascal Obry  <obry@adacore.com>

	* projects.texi: Add short description for qualifiers aggregate
	and aggregate library.

2011-11-04  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Added a-cogeso.ad[sb]
	* a-cgaaso.adb: Replaced implementation with instantiation
	of Generic_Sort.
	* a-cogeso.ad[sb] This is the new Ada 2012 unit
	Ada.Containers.Generic_Sort

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch2.adb (Expand_Entity_Reference): Do not set
	Atomic_Sync_Required for the case of a prefix of an attribute.
	* exp_ch4.adb (Expand_N_Explicit_Dereference): May require
	atomic synchronization
	(Expand_N_Indexed_Component): Ditto.
	(Expand_B_Selected_Component): Ditto.
	* sem_prag.adb (Process_Suppress_Unsuppress):
	Disable/Enable_Atomic_Synchronization can now occur for array
	types with pragma Atomic_Components.
	* sinfo.ads, sinfo.adb (Atomic_Sync_Required): Can now occur on
	N_Explicit_Dereference nodes and on N_Indexed_Component nodes.

2011-11-04  Gary Dismukes  <dismukes@adacore.com>

	* gnat_ugn.texi: Editorial corrections for gnattest section.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Minor reformatting.
	* gnat_rm.texi: Update documentation for pragma Warnings (Off,
	"***") usage.
	* exp_ch2.adb (Expand_Entity_Reference): Only set
	Atomic_Sync_Required on entities that are variables. Doesn't
	make any sense on anything else.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch2.adb (Expand_Entity_Reference): Extend handling of
	atomic sync to type case.
	* sem_prag.adb (Process_Suppress_Unsuppress): Atomic Sync can
	apply to types.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb (Warn_On_Useless_Assignment): More accurate test
	for call vs assign.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Detect more cases of Long_Float inconsistencies at
	compile time.

2011-11-04  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Added a-sfecin.ads,
	* a-sfhcin.ads, a-sflcin.ads, a-sbecin.ad[sb], a-sbhcin.ad[sb],
	a-sblcin.ad[sb], a-suecin.ad[sb], a-suhcin.ad[sb], a-sulcin.ad[sb]
	* a-sfecin.ads, a-sfhcin.ads, a-sflcin.ads, a-sbecin.ad[sb],
	a-sbhcin.ad[sb], a-sblcin.ad[sb], a-suecin.ad[sb], a-suhcin.ad[sb],
	a-sulcin.ad[sb]: New files.

2011-11-04  Geert Bosch  <bosch@adacore.com>

	* i-forbla-unimplemented.ads, s-gecola.adb, s-gecola.ads,
	s-gerebl.adb, s-gerebl.ads, i-forbla.adb, i-forbla.ads,
	i-forlap.ads, i-forbla-darwin.adb, s-gecobl.adb, s-gecobl.ads,
	s-gerela.adb, s-gerela.ads: Remove partial interface to BLAS/LAPACK.
	* gcc-interface/Makefile.in: Remove libgnala and related objects.

2011-11-04  Matthew Heaney  <heaney@adacore.com>

	* a-cdlili.ad[sb], a-cidlli.ad[sb], a-coorse.ad[sb], a-ciorse.ad[sb],
	a-coorma.ad[sb], a-ciorma.ad[sb], a-coormu.ad[sb], a-ciormu.ad[sb],
	a-cohama.ad[sb], a-cihama.ad[sb], a-cohase.ad[sb], a-cihase.ad[sb],
	a-convec.ad[sb], a-coinve.ad[sb] (Assign, Copy): New operations
	added to package.

2011-11-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: Do not assert
	that the type of the parameters isn't dummy in type_annotate_only mode.

2011-11-04  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb: Minor reformatting

2011-11-04  Gary Dismukes  <dismukes@adacore.com>

	* bindgen.adb (Gen_Elab_Calls): In the case of the AAMP target,
	initialize elaboration entities to zero when specs are processed.

2011-10-28  Iain Sandoe  <iains@gcc.gnu.org>
	    Eric Botcazou  <ebotcazou@adacore.com>

	PR target/50678
	* init.c (__gnat_error_handler) [Darwin]: Apply a work-around to the
	bug filed as radar #10302855 (inconsistent unwind data for sigtramp).

2011-10-28  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/50842
	* gcc-interface/Makefile.in (SYMDEPS): Delete.
	(LIBICONV): New variable.
	(LIBICONV_DEP): Likewise.
	(LIBS): Add $(LIBICONV).
	(LIBDEPS): Add $(LIBICONV_DEP).
	(EXTRA_GNATTOOLS_OBJS): Merge into...
	(TOOLS_LIBS): ...this.  Add $(LIBICONV).

2011-10-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (elaborate_expression_1): Add EXPR_PUBLIC_P local
	variable.  Always create the elaboration variable, if any, as constant.

2011-10-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Try to
	make a packable type for fields of union types as well.
	<is_type>: Use RECORD_OR_UNION_TYPE_P predicate.
	(gnat_to_gnu_component_type): Try to make a packable type for fields
	of union types as well.
	(make_packable_type): Use RECORD_OR_UNION_TYPE_P predicate.
	(maybe_pad_type): Try to make a packable type for fields of union types
	as well.
	(gnat_to_gnu_field): Likewise.
	(is_variable_size): Use RECORD_OR_UNION_TYPE_P predicate.
	(set_rm_size): Likewise.
	(rm_size): Likewise.
	* gcc-interface/misc.c (gnat_type_max_size): Likewise.
	* gcc-interface/trans.c (add_decl_expr): Likewise.
	* gcc-interface/utils.c (finish_record_type): Likewise.
	* gcc-interface/utils2.c (build_simple_component_ref): Likewise.

2011-10-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_field): Always check components
	declared as atomic.  Move around conditionally executed code.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* sem.adb (Initialize): Fix bug that blew up if called a second time.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* tb-alvxw.c, tracebak.c, expect.c, initflt.c, tb-alvms.c,
	tb-ivms.c, tb-gcc.c: Update headers to GPL 3.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Debug): Give proper pragma
	name in error msg.

2011-10-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* gnat_rm.texi: Add an entry for restriction No_Finalization.

2011-10-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Insert_Freeze_Node_For_Instance):  If the
	current instance is within the one that contains the generic,
	the freeze node for the current one must appear in the current
	declarative part. Ditto if the current instance is within another
	package instance. In both of these cases the freeze node of the
	previous instance is not relevant.

2011-10-24  Gary Dismukes  <dismukes@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Add recognition
	of AAMP-specific switches -univ and -aamp_target.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* a-tienau.adb (Put): Deal properly with limited line length.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* sem_warn.adb, sem_ch12.adb: Minor reformatting.

2011-10-24  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/Makefile.in: Use GNU ld switches to generate map files
	on AIX.

2011-10-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Earlier): make available globally. If both
	nodes have the same sloc, the freeze node that does not come
	from source is the later one.
	(True_Parent): Make available globally.
	(Previous_Instance): Subsidiary of
	Insert_Freeze_Node_For_Instance, to check whether the generic
	parent of the current instance is declared within a previous
	instance in the same unit or declarative  part, in which case the
	freeze nodes of both instances must appear in order to prevent
	elaboration problems in gigi.
	* sem_ch12.adb (Insert_Freeze_Node_For_Instance): A stub is a
	freeze point, and the freeze node of a preceding instantiation
	must be inserted before it.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* checks.ads, checks.adb: Add handling of Synchronization_Check
	* debug.adb: Add doc for -gnatd.d and -gnatd.e (disable/enable
	atomic sync).
	* exp_ch2.adb (Expand_Entity_Reference): Set Atomic_Sync_Required
	flag Minor code reorganization.
	* opt.ads (Warn_On_Atomic_Synchronization): New switch.
	* par-prag.adb: Add dummy entries for pragma
	Disable/Enable_Atomic_Synchronization.
	* sem_prag.adb (Process_Suppress_Unsuppress): Handle
	case of Atomic_Synchronization specially (not suppressed
	by All_Checks, cannot be set from Source).
	(Pragma Disable/Enable_Atomic_Synchronization): Add processing.
	* sinfo.ads, sinfo.adb: Add Atomic_Sync_Required flag
	* snames.ads-tmpl: Add entry for Atomic_Synchronization Add
	entry for pragma Disable/Enable_Atomic_Synchronization
	* switch-c.adb: The -gnatp switch does not disable
	Atomic_Synchronization Add -gnatep switch to disable
	Atomic_Synchronization.
	* types.ads: Add entry for Synchronization_Check
	* usage.adb: Add line for -gnated switch
	* warnsw.adb: Settings for Warn_On_Atomic_Synchronization

2011-10-24  Geert Bosch  <bosch@adacore.com>

	* s-gearop.adb (Back_Substitute): Avoid overflow if matrix bounds start
	at Integer'First.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb, s-gearop.adb: Minor reformatting.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* warnsw.adb: Add some missing warnings to Set_GNAT_Mode_Warnings.
	* warnsw.ads: Add comments to Set_GNAT_Mode_Warnings.

2011-10-24  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb (Process_Expression_Variable_Decl): No special
	handling for Project_Path unless it is an attribute.

2011-10-24  Javier Miranda  <miranda@adacore.com>

	* sem_ch12.adb (Check_Hidden_Primitives): New subprogram.
	(Install_Hidden_Primitives): New subprogram.
	(Restore_Hidden_Primitives): New subprogram.
	(Analyze_Formal_Package_Declaration,
	Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation):
	Invoke Check_Hidden_Primitives after every call to
	Analyze_Associations, and invoke Restore_Hidden_Primitives to
	restore their visibility after processing the instantiation.
	(Instantiate_Package_Body): Install visible primitives before
	analyzing the instantiation and uninstall them to restore their
	visibility when the instantiation has been analyzed.
	* sem_util.ads, sem_util.adb (Add_Suffix): New subprogram
	(Remove_Suffix): New subprogram
	* sem_ch3.adb (Derive_Subprogram): When handling
	a derived subprogram for the instantiation of a formal derived
	tagged type, inherit the dispatching attributes from the actual
	subprogram (not from the parent type).

2011-10-24  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnat_ugn.texi: Document explicit use of XDECGNAT library.

2011-10-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Build_Assignment): Add local constant N_Loc and
	update its uses.
	(Build_Discriminant_Assignments): Add local variable D_Loc and update
	its uses.
	(Build_Init_Statements): Add local variables Comp_Loc, Decl_Loc and
	Var_Loc and update their uses.
	(Build_Record_Init_Proc): Code reformatting.
	(Increment_Counter): Add formal parameter Loc.
	(Make_Counter): Add formal parameter Loc.

2011-10-24  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_disp.adb (Covers_Some_Interface): Fix typo.

2011-10-24  Matthew Heaney  <heaney@adacore.com>

	* a-cuprqu.adb, a-cbprqu.adb (Dequeue_Only_High_Priority): Fix sense
	of predicate.

2011-10-24  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications/Aspect_Test_Case):
	Translate arguments in positional notation into pragma argument
	association arguments for the generated pragma.

2011-10-24  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch5.adb: Fix minor typo.

2011-10-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Is_Visible_Component): Refine predicate for
	the case of a component reference in an instance body, when the
	enclosing type is private.

2011-10-24  Sergey Rybin  <rybin@adacore.com frybin>

	* gnat_ugn.texi: For gnatelim, move the note about using the GNAT
	driver for getting the project support into gnatelim section.

2011-10-24  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor correction to documentation on address clause.

2011-10-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-finmas.adb (Attach): Synchronize and call the unprotected version.
	(Attach_Unprotected): New routine.
	(Delete_Finalize_Address): Removed.
	(Delete_Finalize_Address_Unprotected): New routine.
	(Detach): Synchronize and call the unprotected version.
	(Detach_Unprotected): Remove locking.
	(Finalize): Add various comment on synchronization. Lock the critical
	region and call the unprotected versions of routines.
	(Finalize_Address): Removed.
	(Finalize_Address_Unprotected): New routine.
	(Set_Finalize_Address): Synchronize and call
	the unprotected version.
	(Set_Finalize_Address_Unprotected): New routine.
	(Set_Heterogeneous_Finalize_Address): Removed.
	(Set_Heterogeneous_Finalize_Address_Unprotected): New routine.
	(Set_Is_Heterogeneous): Add comment on synchronization and
	locking.
	* s-finmas.ads: Flag Finalization_Started is no longer atomic
	because synchronization uses task locking / unlocking.
	(Attach): Add comment on usage.
	(Attach_Unprotected): New routine.
	(Delete_Finalize_Address): Renamed to
	Delete_Finalize_Address_Unprotected.
	(Detach): Add comment on usage.
	(Detach_Unprotected): New routine.
	(Finalize_Address): Renamed to Finalize_Address_Unprotected.
	(Set_Finalize_Address): Add comment on usage.
	(Set_Finalize_Address_Unprotected): New routine.
	(Set_Heterogeneous_Finalize_Address): Renamed to
	Set_Heterogeneous_Finalize_Address_Unprotected.
	* s-stposu.adb (Allocate_Any_Controlled): Add local variable
	Allocation_Locked. Add various comments on synchronization. Lock
	the critical region and call the unprotected version of
	routines.
	(Deallocate_Any_Controlled): Add various comments on
	synchronization. Lock the critical region and call the unprotected
	version of routines.

2011-10-24  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Set_Fixed_Range): The bounds of a fixed point type
	are universal and must carry the corresponding type.
	* sem_eval.adb (Check_Non_Static_Context): If the type of the
	expression is universal real, as may be the case for a fixed point
	expression with constant operands in the context of a conversion,
	there is nothing to check.
	* s-finmas.adb: Minor reformatting

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

	* gcc-interface/decl.c (create_concat_name): Add explicit cast.

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

	* gcc-interface/Make-lang.in (GNATLIBFLAGS, GNATLIBCFLAGS, THREAD_KIND,
	TRACE): Reintroduce.
	(ada/tracebak.o, ada/targext.o, ada/cio.o, ada/init.o,
	ada/initialize.o, ada/raise.o): Reintroduce explicit compilation rules.

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

	* gcc-interface/trans.c (lhs_or_actual_p): New predicate.
	(unchecked_conversion_nop): Use it.
	(gnat_to_gnu): Likewise.

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

	* back_end.adb (Call_Back_End): Pass the maximum logical line number
	instead of the maximum physical line number to gigi.
	* gcc-interface/trans.c (Sloc_to_locus): Cope with line zero.

2011-10-16  Tom Tromey  <tromey@redhat.com>
	    Dodji Seketeli  <dodji@redhat.com>

	* gcc-interface/trans.c (gigi, Sloc_to_locus): Adjust to use the new
	public ordinary map interface.

2011-10-16  Tristan Gingold  <gingold@adacore.com>

	* link.c (_AIX): Add support for GNU ld.

2011-10-16  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Fixing gnattest example names in the doc.
	Adding explanation to additional tests usage.

2011-10-16  Robert Dewar  <dewar@adacore.com>

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

2011-10-16  Eric Botcazou  <ebotcazou@adacore.com>

	* a-convec.adb: Fix minor inconsistencies.

2011-10-16  Matthew Heaney  <heaney@adacore.com>

	* a-cusyqu.ads, a-cbsyqu.ads, a-cuprqu.ads, a-cbprqu.ads (package
	Implementation): Specify pragma Implementation_Defined.

2011-10-15  Nicolas Roche  <roche@adacore.com>

	* gcc-interface/lang-specs.h: Ensure -mrtp switch is passed when using
	either rtp-smp or ravenscar-cert-rtp runtimes.

2011-10-15  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call):
	Do not create a pool formal on unless RE_Root_Storage_Pool_Ptr
	is available.
	(Expand_N_Extended_Return_Statement): Do not create a renaming of the
	build-in-place pool parameter unless RE_Root_Storage_Pool_Ptr is
	available.
	(Make_Build_In_Place_Call_In_Allocator): Add the user-defined
	pool only if RE_Root_Storage_Pool_Ptr is available.
	(Make_Build_In_Place_Call_In_Object_Declaration): Do not add a
	pool actual unless RE_Root_Storage_Pool_Ptr is available.
	* sem_ch6.adb (Create_Extra_Formals): Add build-in-place pool
	formal only if RE_Root_Storage_Pool_Ptr is available.

2011-10-15  Matthew Heaney  <heaney@adacore.com>

	* a-cusyqu.ads, a-cbsyqu.ads, a-cuprqu.ads, a-cbprqu.ads (Queue
	type): Specify Priority aspect for protected type.

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

	* exp_disp.adb (Check_Premature_Freezing): If an untagged type
	is a generic actual, it is a subtype of a type that was frozen
	by the instantiation, and even if not marked frozen it does not
	affect the construction of the dispatch table.

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

	* make.adb, mlib-utl.adb, sem_util.adb, sem_ch4.adb: Minor code
	reformatting.
	* s-rident.ads: Add missing Compiler_Unit pragma.

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

	* sem_res.adb: Minor reformatting.

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

	* exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call):
	Code and comment reformatting. Use BIP_Task_Master
	when creating a _master.
	(BIP_Formal_Suffix): Code reformatting. Correct the case for
	BIP_Task_Master.
	(Make_Build_In_Place_Call_In_Object_Declaration): Use
	BIP_Task_Master when creating a reference to the enclosing
	function's _master formal.
	(Move_Activation_Chain): Use BIP_Task_Master when creating a reference
	to the _master.
	* exp_ch6.ads: Change BIP_Master to BIP_Task_Master.
	(Needs_BIP_Finalization_Master): Alphabetized.
	* sem_ch6.adb (Create_Extra_Formals): Update the usage of
	BIP_Task_Master.

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

	* par-ch6.adb (P_Return_Object_Declaration): In Ada 2012 mode,
	reject an aliased keyword on the object declaration of an extended
	return statement. In older versions of the language indicate
	that this is illegal in the standard.

2011-10-14  Pascal Obry  <obry@adacore.com>

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

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

	* sem_ch13.adb: Recognize properly procedure calls that are
	transformed into code statements.

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

	* projects.texi: Minor fix in project example.

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

	* sem_util.adb: Return objects are aliased if their type is
	immutably limited as per AI05-0053.

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

	* exp_ch4.adb (Expand_N_Op_And): Remove Short_Circuit_And_Or
	expansion code (moved to sem_res) (Expand_N_Op_Or): Remove
	Short_Circuit_And_Or expansion code (moved to sem_res).
	* sem_res.adb (Resolve_Logical_Op): Add code to rewrite Boolean
	"and" and "or" operators as short-circuit "and then" and "or
	else", when pragma Short_Circuit_And_Or is active.

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

	* sem_ch9.adb, sem_util.adb, sem_util.ads, exp_ch6.adb, sem_ch4.adb,
	sem_ch6.adb, exp_ch3.adb: Minor reformatting.

2011-10-13  Arnaud Charlet  <charlet@adacore.com>

	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add a-ngcoar.o.

2011-10-13  Jerome Guitton  <guitton@adacore.com>

	* sysdep.c (__gnat_get_task_options): Re-enable VX_SPE_TASK on vThreads

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

	* a-convec.ads (Cursor): Minor reformatting.
	* a-convec.adb (Next): Fix minor inconsistencies.
	(Previous): Likewise.

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

	* sem_util.ads, sem_util.adb (Available_Full_View_Of_Component):
	New predicate to determine whether some operations on an array
	type are available when the full view of its component may differ
	from the view of the point of the array declaration.
	* sem_ch4.adb (Find_Equality_Types): Use
	Available_Full_View_Of_Component.
	* sem_type.adb (Valid_Boolean_Arg, Valid_Comparison_Arg): Ditto

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

	* sem_ch9.adb: Analyze aspects while discriminants of protected
	type are visible.

2011-10-13  Geert Bosch  <bosch@adacore.com>

	* Makefile.rtl (GNATRTL_TASKING_OBJECTS): Add
	a-nlcoar.o, a-nllcar.o, a-nucoar.o and s-gearop.o, as these no
	longer depend on an external library.
	* gcc-interface/Makefile.in (GNATRTL_LINEARALGEBRA_OBJS): Remove
	a-nlcoar.o, a-nllcar.o, a-nucoar.o and s-gearop.o.
	Update dependencies.
	* gcc-interface/Make-lang.in: Update dependencies. 

2011-10-13  Cyrille Comar  <comar@adacore.com>

	* gnat_ugn.texi: Minor editing.

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

	* projects.texi: Add documentation on packages and attributes
	that are inherited from a project being extended into the
	extended project.

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

	* exp_ch3.adb (Build_Master): Rewritten.
	(Expand_N_Full_Type_Declaration): Reformat the declarative
	region. Update the call to Build_Master_Renaming.
	(Expand_Previous_Access_Type): Rewritten.
	* exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call):
	Add local constant Result_Subt and update related usage.
	(Expand_N_Extended_Return_Statement): Add local constant
	Result_Subt and update related usage.
	* exp_ch9.adb (Build_Activation_Chain): Rewritten to use the
	new context detection mechanism.
	(Build_Class_Wide_Master):
	Use Insert_Action to add the renaming into the tree.
	(Build_Master_Entity): Rewritten to use the new context detection
	mechanism.
	(Build_Master_Renaming): Add formal parameter Ins_Nod
	and related usage. Use Insert_Action to add the renaming into the
	tree.
	(Find_Enclosing_Context): New subsidiary routine. Rather
	than relying on enclosing scopes, this routine looks at the
	tree structure to figure out the proper context for a _master
	or a _chain. This approach eliminates the issues with transient
	scopes which have not been converted into blocks.
	* exp_ch9.ads (Build_Master_Entity): Change parameter profile
	to better reflect the new usage. Update the related comment.
	(Build_Master_Renaming): Add formal parameter Ins_Nod. Update
	the comment on usage.
	* sem_ch3.adb (Access_Definition): Update the calls to
	Build_Master_Entity and Build_Master_Renaming.
	* sem_ch6.adb (Create_Extra_Formals): Add local variable
	Full_Subt. Code reformatting.
	* sem_util.adb (Is_Iterator): Alphabetized.
	(Is_LHS): Alphabetized.
	(Is_Limited_Class_Wide_Type): New routine.
	* sem_util.ads (Is_Limited_Class_Wide_Type): New routine.

2011-10-13  Geert Bosch  <bosch@adacore.com>

	* a-ngrear.adb (Solve): Make generic and move to
	System.Generic_Array_Operations.
	* s-gearop.ads (Matrix_Vector_Solution, Matrix_Matrix_Solution):
	New generic solvers to	compute a vector resp. matrix Y such
	that A * Y = X, approximately.
	* s-gearop.adb (Matrix_Vector_Solution, Matrix_Matrix_Solution):
	Implement using Forward_Eliminate and Back_Substitute
	* a-ngcoar.adb: Reimplement in pure Ada to remove dependencies
	on BLAS and LAPACK.
	* a-ngcoar.ads ("abs"): Fix return type to be real.

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

	PR ada/50589
	* s-linux-alpha.ads: Do not "with" Interfaces.C.
	* s-linux-sparc.ads: Likewise.

2011-10-13  Geert Bosch  <bosch@adacore.com>

	* s-gearop.ads (Forward_Eliminate): Add "abs" formal function
	returning a Real.
	* s-gearop.adb (Forward_Eliminate): Remove local "abs" function
	and use formal.
	* a-ngrear.adb (Forward_Eliminate): Adjust instantiation for
	new profile.

2011-10-13  Geert Bosch  <bosch@adacore.com>

	* a-ngrear.adb, s-gearop.adb, s-gearop.ads (Sqrt): Make generic and
	move to System.Generic_Array_Operations.

2011-10-13  Geert Bosch  <bosch@adacore.com>

	* a-ngrear.adb ("abs"): Adjust for modified L2_Norm generic
	* s-gearop.ads (L2_Norm): Change profile to be suitable for
	Complex_Vector
	* s-gearop.adb (L2_Norm): Reimplement using direct definition,
	not inner product

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

	* exp_ch5.adb, sem_ch3.adb, impunit.adb, impunit.ads, sem_type.adb,
	prj-proc.adb, exp_ch9.adb, s-regpat.adb, sem_ch10.adb, sem_prag.adb,
	sem_ch12.adb, freeze.adb, sem_attr.adb, sem_attr.ads, gnatlink.adb,
	par-ch6.adb, exp_ch6.adb, sem_ch4.adb, sem_ch6.adb, sem_ch8.adb,
	par-util.adb, sem_ch13.adb, lib-xref.adb, g-trasym.adb, g-trasym.ads,
	exp_aggr.adb, s-taprop-posix.adb: Minor reformatting.

2011-10-13  Geert Bosch  <bosch@adacore.com>

	* s-gearop.adb: Minor comment additions.

2011-10-13  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Add gnattest section.

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

	* freeze.adb: Do not create body of renaming if declaration has
	errors.

2011-10-13  Olivier Hainque  <hainque@adacore.com>

	* init.c (__gnat_error_handler - vxworks case): Restrict sigtramp calls
	further, to the ppc+kernel case only.

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

	* exp_ch4.adb (Expand_N_Allocator): Comment reformatting.
	* exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call):
	Do not create a pool formal on .NET/JVM.
	(Expand_N_Extended_Return_Statement): Alphabetize local
	variables. Do not create a renaming of the build-in-place pool
	parameter on .NET/JVM.	(Make_Build_In_Place_Call_In_Allocator):
	Add the user-defined pool only on non-VM targets.
	(Make_Build_In_Place_Call_In_Object_Declaration): Alphabetize
	local variables.  Do not add a pool actual on .NET/JVM.
	* sem_ch6.adb: Add with and use clause for Targparm.
	(Create_Extra_Formals): Add build-in-place pool formal only on
	non-VM targets.
	* rtsfind.ads: Alphabetize entries.

2011-10-13  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Minor correction.

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

	* sem_ch8.adb: Minor error message improvement.

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

	* a-cbprqu.adb, a-ciorma.adb, exp_ch3.adb: Minor reformatting.

2011-10-13  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb (Expand_N_Loop_Statement): For the transformation
	of a for loop for an enumeration type with an enumeration rep
	clause, which involves moving the original loop parameter into
	a nested block, the loop parameter's entity must be removed from
	the entity list of the loop scope.

2011-10-13  Bob Duff  <duff@adacore.com>

	* exp_ch6.ads (BIP_Storage_Pool): New "extra implicit parameter"
	that gets passed in the same cases where BIP_Alloc_Form is passed
	(caller-unknown-size results). BIP_Storage_Pool is used when
	BIP_Alloc_Form = User_Storage_Pool.  In that case, a pointer
	to the user-defined storage pool is passed at the call site,
	and this pool is used in callee to allocate the result.
	* exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call): New
	version of Add_Alloc_Form_Actual_To_Build_In_Place_Call. Passes
	the additional BIP_Storage_Pool actual.
	(Expand_N_Extended_Return_Statement): Allocate the function
	result using the user-defined storage pool, if BIP_Alloc_Form =
	User_Storage_Pool.
	* sem_ch6.adb: Add the "extra formal" for BIP_Storage_Pool.
	* exp_ch4.adb: Don't overwrite storage pool set by
	Expand_N_Extended_Return_Statement.
	* s-stopoo.ads, rtsfind.ads (Root_Storage_Pool_Ptr): New type,
	for use in build-in-place function calls within allocators
	where the access type has a user-defined storage pool.

2011-10-13  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi, vms_data.ads: Add an option to control enumeration
	literal casing.

2011-10-13  Nicolas Roche  <roche@adacore.com>

	* gnatlink.adb: Ensure that -mrtp is passed when runtime name ends
	with 'rtp'.

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

	* sem_prag.adb (Analyze_Pragma, case Unchecked_Union): Take into
	account that an unchecked union type can be limited.

2011-10-13  Olivier Hainque  <hainque@adacore.com>

	* init.c (__gnat_error_handler) <VxWorks version>: Add comments on
	the use of the signal trampoline for PPC in the sjlj case as well.
	Add legitimate casts, preventing compile time warnings on the
	(sighandler *) profile.

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

	* sem_aggr.adb (Resolve_Aggr_Expr): Always perform semantic analysis
	in Alfa mode.

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

	* sem_ch3.adb (OK_For_Limited_Init_In_05): Conditional and case
	expressions are legal limited return values if each one of their
	dependent expressions are legal.

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

	* sem_ch6.adb (Analyze_Procedure_Call_Statement): In Ada 2012 mode,
	if the prefix of the call is a qualified expression, rewrite as
	a code statement.
	* sem_ch13.adb (Analyze_Code_Statement): In Ada 2012 mode, the
	code statement is legal if it is a rewriting of a procedure call.

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

	* exp_aggr.adb (Flatten): If a component association has a box,
	assume that aggregate is not static.
	(Safe_Aggregate): If a component association in a non-limited
	aggregate has a box, assume that it cannot be expanded in place.

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

	* prj-conf.adb (Get_Or_Create_Configuration_File): Call
	Process_Project_Tree_Phase_1 with Packages_To_Check.
	(Process_Project_And_Apply_Config): Ditto
	* prj-part.ads, prj-part.adb, prj-pars.ads, prj-pars.adb (Parse):
	Remove default for argument Packages_To_Check.
	* prj-proc.adb (Recursive_Process): New argument
	Packages_To_Check.
	(Process): Ditto.
	(Process_Project_Tree_Phase_1): Ditto.
	(Recursive_Project.Process_Aggregated_Projects): Call
	Prj.Part.Parse and Process_Project_Tree_Phase_1 with
	Packages_To_Check.
	* prj-proc.ads (Process): New argument Packages_To_Check
	(Process_Project_Tree_Phase_1): Ditto

2011-10-13  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in: Fix typo.

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

	* sem_ch12.adb (Analyze_Formal_{Floating_Type,
	Signed_Integer_Type,  Decimal_Fixed_Point_Type, Discrete_Type}):
	Use sloc of defining identifier of farmal type declaration,
	as sloc of generated internal entity, to prevent misplaced
	references in ali.

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

	* sem_intr.adb (Check_Intrinsic_Operator): Check that type
	is fully defined before checking that it is a numeric type.

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

	* sem_aggr.adb (Resolve_Record_Aggregate): If a component
	association for component X has a box, then X is covered in the
	aggregate even if there is not default value for X in the type
	declaration, and X has to be default-initialized.

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

	* sem_attr.adb (Check_Enum_Image, Analyze_Attribute case 'Value): Mark
	literals as referenced only if reference is in current source unit.

2011-10-13  Matthew Heaney  <heaney@adacore.com>

	* a-csquin.ads (Enque, Dequeue): Mark interface operations as entries.

2011-10-13  Olivier Hainque  <hainque@adacore.com>

	* sigtramp.h: New file.  Prototype and spec of the signal
	trampoline to be called by an established handler to provide
	dwarf call frame info before the real signal processing code.
	* sigtramp-ppcvxw.c: New file.	Implementation of the signal
	trampoline for ppc-vxworks.
	* init.c (vxworks section): Use it for ppc.

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

	* par-ch2.adb, par.adb, par-util.adb, par-ch3.adb
	(Check_Future_Identifier): New subprogram,
	factors duplicated code from Par.Ch2.P_Identifier and
	Par.Ch3.P_Defining_Identifier.

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

	* s-taprop-posix.adb (Initialize): Always raise Storage_Error
	if we fail to initialize CV attributes or CV.

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

	* s-tasren.adb (Timed_Selective_Wait, case
	Accept_Alternative_Selected): Use Defer_Abort_Nestable, since
	we know abortion is already deferred.

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

	* exp_ch3.adb (Build_Class_Wide_Master): Moved to exp_ch9.
	(Build_Master_Renaming (function)): Removed.
	(Build_Master_Renaming (procedure)): Moved to exp_ch9.
	(Expand_Full_Type_Declaration): Alphabetize
	variables. Reformatting of code and comments. Rewrite the
	section on processing of anonymous access-to-task types in
	record components.
	* exp_ch3.ads (Build_Class_Wide_Master): Moved to exp_ch9.
	(Build_Master_Renaming): Moved to exp_ch9.
	* exp_ch9.adb (Build_Class_Wide_Master): Moved from exp_ch3.
	(Build_Master_Entity): Add formal parameter
	Use_Current. Reformatting of code and comments.
	(Build_Master_Renaming): Moved from exp_ch3.
	* exp_ch9.ads (Build_Class_Wide_Master): Moved from
	exp_ch3. Update comment on usage.
	(Build_Master_Entity):
	Add formal parameter Use_Current. Update comment on usage.
	(Build_Master_Renaming): Moved from exp_ch3.
	* sem_ch3.adb (Access_Definition): Remove redundant code to
	create a _master and a renaming.

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

	* lib-xref.adb: Do no emit reference to overridden operation,
	if it is internally generated.

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

	* bindgen.adb: Remove any processing related to g-trasym
	* Makefile.rtl: Add g-trasym.o to GNATRTL_NONTASKING_OBJS
	* mlib-prj.adb: Remove any processing related to g-trasym.

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

	* sem_util.adb (Denotes_Same_Prefix): Fix fatal warning.
	* gcc-interface/Make-lang.in (WARN_ADAFLAGS): New.
	(ALL_ADAFLAGS): Include WARN_ADAFLAGS.
	(ADA_FLAGS_TO_PASS): Likewise.
	(COMMON_FLAGS_TO_PASS): New.
	(ADA_TOOLS_FLAGS_TO_PASS): Use COMMON_FLAGS_TO_PASS.  In the regular
	native case, also use FLAGS_TO_PASS and ADA_FLAGS_TO_PASS.
	(gnatlib): Use COMMON_FLAGS_TO_PASS.
	(ada.install-common): Likewise.
	(install-gnatlib): Likewise.
	(install-gnatlib-obj): Likewise.
	(gnattools): Use ADA_TOOLS_FLAGS_TO_PASS for gnattools1 as well.
	(gnat-cross): Delete.
	(gnatboot): Likewise.
	(gnatboot2): Likewise.
	(gnatboot3): Likewise.
	(gnatstage1): Likewise.
	(gnatstage2): Likewise.
	* gcc-interface/Makefile.in (SOME_ADAFLAGS): Likewise.
	(MOST_ADAFLAGS): Likewise.
	(LOOSE_CFLAGS): Likewise.
	(gnat-cross): Likewise.
	(GNATLIBFLAGS): Add -W -Wall.
	(GNATLIBCFLAGS_FOR_C): Likewise.
	* gcc-interface/lang.opt: Remove C-specific warnings.  Add doc lines.
	* gcc-interface/misc.c (gnat_handle_option): Remove obsolete cases.

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

	* gcc-interface/trans.c (Attribute_to_gnu): Use remove_conversions.
	(push_range_check_info): Likewise.
	(gnat_to_gnu) <N_Code_Statement>: Likewise.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: Likewise.
	(gnat_invariant_expr): Likewise.
	* gcc-interface/utils.c (compute_related_constant): Likewise.
	(max_size): Fix handling of SAVE_EXPR.
	(remove_conversions): Fix formatting.

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

	* gcc-interface/ada-tree.h (DECL_LOOP_PARM_P): New flag.
	(DECL_INDUCTION_VAR): New macro.
	(SET_DECL_INDUCTION_VAR): Likewise.
	* gcc-interface/gigi.h (convert_to_index_type): Declare.
	(gnat_invariant_expr): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: If this is a loop
	parameter, set DECL_LOOP_PARM_P on it.
	* gcc-interface/misc.c (gnat_print_decl) <VAR_DECL>: If DECL_LOOP_PARM_P
	is set, print DECL_INDUCTION_VAR instead of DECL_RENAMED_OBJECT.
	* gcc-interface/trans.c (gnu_loop_label_stack): Delete.
	(struct range_check_info_d): New type.
	(struct loop_info_d): Likewise.
	(gnu_loop_stack): New stack.
	(Identifier_to_gnu): Set TREE_READONLY flag on the first dereference
	built for a by-double-ref read-only parameter.  If DECL_LOOP_PARM_P
	is set, do not test DECL_RENAMED_OBJECT.
	(push_range_check_info): New function.
	(Loop_Statement_to_gnu): Push a new struct loop_info_d instead of just
	the label.  Reference the label and the iteration variable from it.
	Build the special induction variable in the unsigned version of the
	size type, if it is larger than the base type.  And attach it to the
	iteration variable if the latter isn't by-ref.  In the iteration scheme
	case, initialize the invariant conditions in front of the loop if
	deemed profitable.  Use gnu_loop_stack.
	(gnat_to_gnu) <N_Exit_Statement>: Use gnu_loop_stack.
	<N_Raise_Constraint_Error>: Always process the reason.  In the range
	check and related cases, and if loop unswitching is enabled, compute
	invariant conditions and push this information onto the stack.
	Do not translate again the condition if it has been already translated.
	* gcc-interface/utils.c (record_global_renaming_pointer): Assert that
	DECL_LOOP_PARM_P isn't set.
	(convert_to_index_type): New function.
	* gcc-interface/utils2.c (build_binary_op) <ARRAY_REF>: Use it in order
	to convert the index from the base index type to sizetype.
	(gnat_invariant_expr): New function.

2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc-interface/utils.c (def_builtin_1): Delete old interface with
	two parallel arrays to hold standard builtin declarations, and
	replace it with a function based interface that can support
	creating builtins on the fly in the future.
	* gcc-interface/trans.c (Exception_Handler_to_gnu_zcx): Ditto.
	(gnat_to_gnu): Ditto.

2011-10-07  Eric Botcazou  <ebotcazou@adacore.com>

	PR lto/50492
	* gcc-interface/gigi.h (gnat_pushdecl): Adjust comment.
	* gcc-interface/utils.c (global_context): New variable.
	(gnat_pushdecl): Initialize it and set it as the DECL_CONTEXT of DECLs
	that are either public external or at top level.  Use "No" macro.
	(end_subprog_body): Call decl_function_context.
	(rest_of_subprog_body_compilation): Likewise.

2011-10-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (gnat_useless_type_conversion): Declare.
	(rest_of_subprog_body_compilation): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: For renaming,
	test for useless conversions by means of gnat_useless_type_conversion.
	* gcc-interface/trans.c: Include bitmap.h and cgraph.h.
	(language_function): Add named_ret_val and other_ret_val.
	(f_named_ret_val): New macro.
	(f_other_ret_val): Likewise.
	(gigi): Call rest_of_subprog_body_compilation.
	(struct nrv_data): New structure.
	(is_nrv_p): New predicate.
	(prune_nrv_r): New helper function.
	(prune_nrv_in_block): New function.
	(finalize_nrv_r): New helper function.
	(finalize_nrv): New function.
	(return_value_ok_for_nrv_p): New predicate.
	(build_return_expr): If optimization is enabled, record candidates for
	the Named Return Value optimization.
	(build_function_stub): Call rest_of_subprog_body_compilation.
	(Subprogram_Body_to_gnu): If optimization is enabled and there are
	candidates, finalize the Named Return Value optimization.
	Call rest_of_subprog_body_compilation.
	(call_to_gnu): At the end, if a return value is needed, simplify the
	result before wrapping it up in a COMPOUND_EXPR.
	* gcc-interface/utils.c (end_subprog_body): Split into...
	(rest_of_subprog_body_compilation): ...this.  New function.
	(gnat_useless_type_conversion): Likewise.

2011-10-06  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads, exp_attr.adb, exp_ch3.adb, exp_ch4.adb, exp_ch7.adb,
	exp_ch9.adb, exp_ch9.ads, exp_strm.adb, exp_util.adb, freeze.adb,
	g-debpoo.ads, opt.ads, par-ch12.adb, par-ch2.adb, par-ch3.adb,
	par-ch5.adb, par-ch6.adb, sem_aggr.adb, sem_attr.adb, sem_cat.adb,
	sem_ch10.adb, sem_ch12.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb,
	sem_ch6.adb, sem_intr.adb, sem_res.ads, sem_type.adb, sem_util.adb,
	s-regpat.adb, s-tpopde-vms.ads: Minor reformatting.
	* s-osinte-freebsd.ads: Fix for tasking failures on FreeBSD.

2011-10-06  Ed Schonberg  <schonberg@adacore.com>

	* a-cihase.adb, a-ciorma.adb: Avoid accessibility checks in container
	references.

2011-10-06  Matthew Heaney  <heaney@adacore.com>

	* a-cuprqu.ads, a-cuprqu.adb, a-cbprqu.ads, a-cbprqu.adb
	(Dequeue_Only_High_Priority): Protected procedure now implemented.

2011-10-06  Vincent Celier  <celier@adacore.com>

	* g-trasym.adb: Replace old implementation with the default
	implementation that returns list of addresses as "0x...".
	* g-trasym.ads: Update the list of platforms with the full
	capability.  Indicate that there is a default implementation
	for other platforms.
	* g-trasym-unimplemented.ads, g-trasym-unimplemented.adb: Remove.
	* gcc-interface/Makefile.in: Remove g-trasym-unimplemented, as there
	is now a default implementation for all platforms without the full
	capability.

2011-10-06  Robert Dewar  <dewar@adacore.com>

	* a-ciorse.adb, a-cihase.adb, a-cihase.ads, a-coorse.adb,
	a-cborse.adb, a-comutr.adb, a-ciorma.adb, a-cbmutr.adb,
	a-cbmutr.ads, a-cbhase.adb, a-cbhase.ads: Minor reformatting and code
	reorganization (use conditional expressions).

2011-10-06  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Arithmetic_Op): Fix bad warning for
	floating divide by zero.

2011-10-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: Limited interfaces that are not immutably limited
	are OK in return statements.

2011-09-30  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (Darwin): Partial reversion of previous
	change to powerpc section.

2011-09-29  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (Darwin): Factor LIBGNAT_TARGET_PAIRS
	across the port.

2011-09-27  Ed Schonberg  <schonberg@adacore.com>

	* a-cbhase.adb, a-cbhase.ads, a-cborse.adb, a-cborse.ads,
	a-cihase.adb, a-cihase.ads, a-ciorse.adb, a-ciorse.ads,
	a-coorse.adb, a-coorse.ads: Add iterator machinery to bounded sets and
	indefinite sets.
	* a-coorma.ads: Minor reformmating.
	* einfo.ads: Improve the comment describing the
	Directly_Designated_Type function.
	* a-ciorma.adb, a-ciorma.ads: Add iterator machinery to indefinite
	ordered maps.
	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Update
	dependencies.

2011-09-27  Robert Dewar  <dewar@adacore.com>

	* a-comutr.ads: Minor reformatting.

2011-09-27  Ed Schonberg  <schonberg@adacore.com>

	* a-cimutr.adb, a-cimutr.ads, a-cbmutr.adb, a-cbmutr.ads: Add children
	iterators to multiway trees.

2011-09-27  Yannick Moy  <moy@adacore.com>

	* debug.adb (d.D): New option for strict Alfa mode.
	* opt.ads (Strict_Alfa_Mode): New flag to interpret compiler
	permissions as strictly as possible.
	* sem_ch3.adb (Signed_Integer_Type_Declaration): In non-strict
	Alfa mode, now, interpret ranges of base types like GNAT does; in
	strict mode, simply change the range of the implicit base Itype.
	* gnat1drv.adb: Update comments. Set Strict_Alfa_Mode.

2011-09-27  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb: Minor comment fixes.

2011-09-27  Ed Schonberg  <schonberg@adacore.com>

	* a-comutr.adb, a-comutr.ads: Add children iterators on multiway
	trees.

2011-09-27  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Use Designated_Type
	instead of Directly_Designated_Type in the indirect array case.

2011-09-27  Robert Dewar  <dewar@adacore.com>

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

2011-09-27  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, par-ch3.adb: Minor comment update: aspect specification
	on subtype declarations.
	* exp_aggr.adb: Minor comment update.

2011-09-27  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_util.adb (Safe_Prefixed_Reference): Remove always-false
	test in the N_Explicit_Dereference case.  Fold double logical
	negation in the special loop case and conditionalize it on
	Variable_Ref being true.

2011-09-27  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): If the prefix is a
	single protected object and the selector is a discriminant or an
	entry family, this is a non-overloaded candidate interpretation,
	and possible primitive operations of the type must not be
	examined.

2011-09-27  Arnaud Charlet  <charlet@adacore.com>

	* s-taspri-posix-noaltstack.ads (Lock): Mark fields aliased.

2011-09-27  Pascal Obry  <obry@adacore.com>

	* s-osinte-hpux.ads, s-osinte-aix.ads, s-osinte-solaris-posix.ads,
	s-osinte-irix.ads, s-osinte-darwin.ads, s-osinte-freebsd.ads:
	Add dummy definitions for pthread_rwlock_t
	and pthread_rwlockattr_t on all POSIX platforms.
	* s-taprop-irix.adb, s-taprop-posix.adb (Initialize_Lock): Fix lock
	reference.
	(Finalize_Lock): Likewise.
	(Write_Lock): Likewise.
	(Unlock): Likewise.

2011-09-27  Tristan Gingold  <gingold@adacore.com>

	* s-tassta.adb (Task_Wrapper): Increase Guard_Page_Size value for
	windows 64.

2011-09-27  Pascal Obry  <obry@adacore.com>

	* s-osinte-hpux.ads, s-taprop-vxworks.adb, s-taspri-vxworks.ads,
	s-taprop-tru64.adb, s-osinte-aix.ads, s-taspri-posix-noaltstack.ads,
	s-taspri-mingw.ads, s-taprop-vms.adb, s-tpoben.adb, s-tpoben.ads,
	s-taprop-mingw.adb, s-taprob.adb, s-taprob.ads,
	s-osinte-solaris-posix.ads, s-taprop-solaris.adb, s-taspri-solaris.ads,
	s-osinte-irix.ads, s-taprop-irix.adb, s-osinte-darwin.ads,
	s-taspri-dummy.ads, s-taspri-posix.ads, s-taprop.ads,
	s-taspri-vms.ads, s-osinte-freebsd.ads, s-taprop-hpux-dce.adb,
	s-taspri-hpux-dce.ads, s-taspri-tru64.ads, s-taprop-dummy.adb,
	s-taprop-posix.adb: Revert previous changes.
	(Lock): Now a record containing the two possible lock
	(mutex and read/write) defined in OS_Interface.
	* s-taprop-linux.adb (Finalize_Protection): Use r/w lock for
	'R' locking policy.
	(Initialize_Protection): Likewise.
	(Lock): Likewise.
	(Lock_Read_Only): Likewise.
	(Unlock): Likewise.

2011-09-27  Pascal Obry  <obry@adacore.com>

	* s-taspri-posix-noaltstack.ads (RW_Lock): This type is now defined as
	OS_Interface.pthread_rwlock_t.

2011-09-27  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, a-cimutr.adb, a-cimutr.ads, gnat1drv.adb, a-comutr.adb,
	a-comutr.ads, exp_dist.adb, a-cbmutr.adb, a-cbmutr.ads,
	sem_ch5.adb, sem_util.adb: Minor reformatting.

2011-09-27  Pascal Obry  <obry@adacore.com>

	* s-taprop.ads (Initialize_Lock)[RW_Lock]: New spec for r/w lock.
	(Finalize_Lock)[RW_Lock]: Likewise.
	(Write_Lock)[RW_Lock]: Likewise.
	(Unlock)[RW_Lock]: Likewise.
	(Read_Lock): Define L as RW_Lock (instead of Lock).
	* s-taprop-linux.adb (Initialize_Lock)[RW_Lock]: New
	routine for r/w lock.
	(Finalize_Lock)[RW_Lock]: Likewise.
	(Write_Lock)[RW_Lock]: Likewise.
	(Unlock)[RW_Lock]: Likewise.
	(Read_Lock): Define L as RW_Lock (instead of Lock).

	* s-taprop-vxworks.adb, s-taprop-tru64.adb, s-taprop-vms.adb,
	s-taprop-mingw.adb, s-taprop-solaris.adb, s-taprop-irix.adb,
	s-taprop-hpux-dce.adb, s-taprop-dummy.adb, s-taprop-posix.adb
	(Initialize_Lock)[RW_Lock]: Same implementation as corresponding
	routine for standard lock.
	(Finalize_Lock)[RW_Lock]: Likewise.
	(Write_Lock)[RW_Lock]: Likewise.
	(Unlock)[RW_Lock]: Likewise.
	(Read_Lock): Define L as RW_Lock (instead of Lock).
	* s-taprob.ads, s-tpoben.ads (Protection): Add RWL (RW_Lock)
	in the record definition.
	* s-taprob.adb, s-taproben.adb (Finalize_Protection): Use r/w
	lock for 'R' locking policy.
	(Initialize_Protection): Likewise.
	(Lock): Likewise.
	(Lock_Read_Only): Likewise.
	(Unlock): Likewise.
	* s-taspri-posix.ads (RW_Lock): New type defined as
	OS_Interface.pthread_rwlock_t.

	* s-taspri-vxworks.ads, s-taspri-posix-noaltstack.ads,
	s-taspri-mingw.ads, s-taspri-solaris.ads, s-taspri-dummy.ads,
	s-taspri-posix.ads, s-taspri-vms.ads, s-taspri-hpux-dce.ads,
	s-taspri-tru64.ads (RW_Lock): New type defined as alias to Lock.

2011-09-27  Pascal Obry  <obry@adacore.com>

	* exp_ch9.adb, s-taspri-posix.ads: Minor reformatting.

2011-09-27  Pascal Obry  <obry@adacore.com>

	* s-osinte-aix.ads, s-osinte-darwin.ads, s-osinte-freebsd.ads,
	s-osinte-hpux.ads, s-osinte-irix.ads,
	s-osinte-solaris-posix.ads (pthread_rwlock_t): New definition alias of
	pthread_mutex_t.
	(pthread_rwlockattr_t): New definition alias of pthread_mutexattr_t.
	* s-osinte-linux.ads (pthread_rwlock_t, pthread_rwlockattr_t,
	pthread_rwlockattr_init, pthread_rwlockattr_destroy,
	pthread_rwlockattr_setkind_np, pthread_rwlock_init,
	pthread_rwlock_destroy, pthread_rwlock_rdlock,
	pthread_rwlock_wrlock, pthread_rwlock_unlock): New.

2011-09-27  Pascal Obry  <obry@adacore.com>

	* rtsfind.ads: Add RE_Lock_Read_Only into rtsfind circuitry.
	(RE_Id): Add RE_Lock_Read_Only.
	(RE_Unit_Table): Likewise.
	* sem_prag.adb (Process_Convention): Change Pragma_Locking_Policy
	to lift restriction on first character. Handle now the
	Name_Concurrent_Readers_Locking where policy character is set to
	'R'.
	* snames.ads-tmpl (Name_Concurrent_Readers_Locking): New
	constant.
	* exp_ch9.adb (Build_Protected_Subprogram_Body): Generate a
	read only lock for function in protected object.
	* s-taprob.ads (Lock_Read_Only): Remove obsolete comment as
	this routine is now used.

2011-09-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* s-atocou-x86.adb (Decrement): Use %;.
	(Increment): Likewise.

2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (build_allocator): Set TREE_THIS_NOTRAP on the
	dereference of the pointer to the storage area.  Remove useless type
	conversions and factor out common code.

2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (maybe_unconstrained_array): Declare TYPE local
	variable and use it throughout.
	<UNCONSTRAINED_ARRAY_TYPE>: Add 'break' at the end.
	<RECORD_TYPE>: Do not unconditionally convert to the unpadded type as a
	first step.  Also convert to the unpadded type as a last step.

2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (create_subprog_decl): Replace TREE_CHAIN with
	DECL_CHAIN in comment.
	* gcc-interface/trans.c (gigi): Likewise.
	(Attribute_to_gnu): Likewise.
	(build_function_stub): Likewise.
	(gnat_to_gnu): Likewise.
	* gcc-interface/utils.c (create_subprog_decl): Likewise.
	(convert_vms_descriptor64): Likewise.
	(convert_vms_descriptor32): Likewise.

2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (assoc_to_constructor): Minor tweaks.
	* gcc-interface/utils2.c (build_simple_component_ref): Fix formatting
	issues.  Use COMPLETE_TYPE_P in assertion.  Also set TREE_READONLY if
	the type of the record is TYPE_READONLY.

2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Set_Formal_Mode): Set Can_Never_Be_Null on an IN or IN
	OUT formal parameter which is of an null-exclusion access subtype.

2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (DECL_CAN_NEVER_BE_NULL_P): New macro.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Set the flag.
	(gnat_to_gnu_param): Likewise.
	* gcc-interface/utils.c (convert) <UNCONSTRAINED_ARRAY_REF>: Invoke
	maybe_unconstrained_array instead of doing the work manually.
	(maybe_unconstrained_array): Propagate the TREE_THIS_NOTRAP flag.
	* gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: If operand
	is a DECL with the flag, set TREE_THIS_NOTRAP on the reference.
	(gnat_stabilize_reference_1): Propagate the TREE_THIS_NOTRAP flag.
	(gnat_stabilize_reference): Likewise.

2011-09-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (TYPE_NULL_BOUNDS): New macro.
	(SET_TYPE_NULL_BOUNDS): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Set again
	TREE_THIS_NOTRAP on the INDIRECT_REF node built for the template.
	* gcc-interface/trans.c (Identifier_to_gnu): Return initializers of fat
	pointer types.
	* gcc-interface/utils.c (create_var_decl_1): If the object is external,
	check that the initializer is a valid constant expression for use in
	initializing a static variable.  Add missing guard.
	(update_pointer_to): Adjust TYPE_NULL_BOUNDS if set.
	(convert_to_fat_pointer): In the null fat pointer case, build a valid
	pointer for the bounds.
	* gcc-interface/utils2.c (compare_fat_pointers): New function.
	(build_binary_op) <EQ_EXPR>: Call it to compare fat pointers.

2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (TREE_THIS_NOTRAP): Redefine.
	* gcc-interface/trans.c (Identifier_to_gnu): Factor out common code in
	the by-ref case.  Do not set TREE_READONLY on a renamed object.  Set
	TREE_THIS_NOTRAP on UNCONSTRAINED_ARRAY_REF nodes.
	(Attribute_to_gnu) <Attr_Length>: Expand the use of the parameter cache
	to the indirect case.
	* gcc-interface/utils.c (convert) <UNCONSTRAINED_ARRAY_REF>: Preserve
	the TREE_THIS_NOTRAP flag.

2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Loop_Statement_to_gnu): In the case of an
	iteration scheme, always generate the do-while form if optimization
	is enabled.  Use more straightforward test at the end.

2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Subtype>: Use
	XNEW instead of xmalloc.  Do not build useless pointer type.
	<E_Anonymous_Access_Subprogram_Type>: Use XNEW instead of xmalloc.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Raise_Constraint_Error>: Tidy.
	* gcc-interface/utils2.c (build_unary_op): Remove local variable.

2011-09-25  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not promote
	the alignment if this doesn't prevent BLKmode access to the object.

2011-09-24  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (darwin): Do not issue the
	'-flat_namespace' linker flag during Ada build.
	* mlib-tgt-specific-darwin.adb: Remove '-flat_namespace' flag from the
	default shared library options.

2011-09-19  Alexandre Oliva  <aoliva@redhat.com>

	* gcc-interface/decl.c (annotate_value): Look up expression for
	insertion in the cache at the end.

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

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

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

	* snames.ads-tmpl: Move declaration of Name_Annotate into range of
	configuration pragma names so that Is_Configuration_Pragma_Name
	will return True for Name_Annotate.  Make corresponding change in
	Pragma_Id enumeration type.  This is needed to allow an Annotate
	pragma to occur in a configuration pragma file (typically,
	a gnat.adc file).
	* gnat_ugn.texi: Add Annotate to the list of configuration pragmas.
	* gnat_rm.texi: Note that pragma Annotate may be used as a
	configuration pragma.

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

	* a-cbmutr.adb, a-cbmutr.ads, a-cimutr.adb, a-cimutr.ads,
	a-comutr.adb, a-comutr.ads: Add iterator machinery for multiway trees.

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

	* exp_alfa.adb, exp_alfa.ads (Expand_Alfa_N_In): New function
	for expansion of set membership.
	(Expand_Alfa): Call expansion for N_In and N_Not_In nodes.
	* exp_ch4.adb, exp_ch4.ads (Expand_Set_Membership): Make procedure
	visible for use in Alfa expansion.
	* sem_ch5.adb (Analyze_Iterator_Specification): Introduce loop
	variable in Alfa mode.

2011-09-19  Thomas Quinot  <quinot@adacore.com>

	* s-osinte-darwin.ads: Change SIGADAABRT on Darwin to SIGABRT.

2011-09-19  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb: Minor reformatting.

2011-09-19  Hristian Kirtchev  <kirtchev@adacore.com>

	* freeze.adb (Build_Renamed_Body): Generic subprograms
	instantiations cannot be poperly inlined by the compiler, do
	not set the Body_To_Inline attribute in such cases.
	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Inherit all
	inlining-related flags from the generic subprogram declaration.

2011-09-19  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb, rtsfind.ads, sem_util.adb, sem_util.ads
	(Build_Stub_Type): Remove, instead copy components from
	System.Partition_Interface.RACW_Stub_Type.
	(RPC_Receiver_Decl): Remainder of code from old Build_Stub_Type routine.
	(Copy_Component_List): New subprogram.

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

	* lib-xref.adb (Generate_Reference): Ignore references to
	constants in Standard.

2011-09-19  Robert Dewar  <dewar@adacore.com>

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

2011-09-19  Robert Dewar  <dewar@adacore.com>

	* aspects.ads (Impl_Defined_Aspects): New array
	* lib-writ.adb (No_Dependences): New name for No_Dependence
	* restrict.adb (No_Dependences): New name for No_Dependence
	(Check_Restriction_No_Specification_Of_Aspect): New
	procedure.
	(Set_Restriction_No_Specification_Of_Aspect): New procedure
	(Restricted_Profile_Result): New variable
	(No_Specification_Of_Aspects): New variable
	(No_Specification_Of_Aspect_Warning): New variable
	* restrict.ads (No_Dependences): New name for No_Dependence
	(Check_Restriction_No_Specification_Of_Aspect): New procedure
	(Set_Restriction_No_Specification_Of_Aspect): New procedure
	* s-rident.ads: Add restriction
	No_Implementation_Aspect_Specifications, this is also added to
	the No_Implementation_Extensions profile.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Check
	No_Implementation_Defined_Aspects
	(Analyze_Aspect_Specifications): Check No_Specification_Of_Aspect
	* sem_prag.adb (Analyze_Aspect_Specifications): Check
	No_Implementation_Aspects
	(Analyze_Aspect_Specifications): Check No_Specification_Of_Aspect
	* snames.ads-tmpl (Name_No_Specification_Of_Aspect): New name

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

	* lib-xref.adb (Generate_Reference): Take into account multiple
	renamings for Alfa refs.

2011-09-19  Thomas Quinot  <quinot@adacore.com>

	* g-socthi-mingw.adb: Minor reformatting.

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

	* gnat1drv.adb (Adjust_Global_Switches): Set tagged type
	expansion to False in mode Alfa

2011-09-19  Pascal Obry  <obry@adacore.com>

	* mingw32.h: Remove obsolete code needed for old versions
	of MingW.

2011-09-19  Robert Dewar  <dewar@adacore.com>

	* errout.ads: Minor reformatting.

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

	* sem_ch6.adb (Analyze_Expression_Function): When the expression
	function is transformed into a declaration and a body, insert
	body at the end of the declarative part, to prevent premature
	freeze actions, and preserve original specification in the
	subprogram declaration.

2011-09-19  Vincent Celier  <celier@adacore.com>

	* projects.texi: Minor editing.

2011-09-19  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb, lib-writ.ads, s-restri.ads, sem_ch6.adb,
	exp_aggr.adb: Minor reformatting.

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

	* lib-xref.adb (Generate_Reference): Change entity referenced
	to underlying object if any, or else reference to the HEAP.

2011-09-15  Arnaud Charlet  <charlet@adacore.com>

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

2011-09-15  Robert Dewar  <dewar@adacore.com>

	* tree_io.ads: Minor reformatting.
	* a-intnam.ads: Fix bad header.

2011-09-15  Thomas Quinot  <quinot@adacore.com>

	* a-exexpr-gcc.adb: Minor reformatting.

2011-09-15  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb: Propagate information that an expression function comes
	from source (otherwise references to this entity are not stored).

2011-09-15  Robert Dewar  <dewar@adacore.com>

	* a-cdlili.adb, a-coinve.adb, a-stzunb-shared.ads, a-suezst.adb,
	a-suenco.adb, a-stwiun-shared.ads, a-cobove.adb, a-convec.adb,
	a-btgbso.adb, a-cbdlli.adb, a-suewst.adb: Minor reformatting.

2011-09-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Code cleanup:
	if the expression function is not a completion, create a
	new specification for the generated declaration, and keep the
	original specification in the generated body. Shorter code also
	ensures that proper warnings are generated for unused formals
	in all cases.

2011-09-15  Sergey Rybin  <rybin@adacore.com>

	* tree_io.ads: Update ASIS_Version_Number because of the changes
	in the tree structures for expression functions.

2011-09-15  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-aix.ads, s-osinte-darwin.ads, s-osinte-freebsd.ads,
	s-osinte-hpux.ads, s-osinte-lynxos.ads, s-osinte-solaris-posix.ads,
	s-taprop-posix.adb (CLOCK_MONOTONIC): New constant.
	(CLOCK_REALTIME): Fix wrong value on some OSes.
	* s-taprop-posix.adb (Monotonic_Clock): Use CLOCK_MONOTONIC.

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

	* gcc-interface/utils.c (maybe_unconstrained_array): In the reference
	to unconstrained array case, deal with each branch of a COND_EXPR.
	* gcc-interface/utils2.c (build_allocator): Deal with each branch of
	a COND_EXPR in the initializer, if present.

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

	* gcc-interface/decl.c (maybe_pad_type): Do not try to change the form
	of an addressable type.
	* gcc-interface/trans.c (gnat_gimplify_expr) <VIEW_CONVERT_EXPR>: New.
	Deal with those cases for which creating a temporary is mandatory.

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

	* gcc-interface/trans.c (call_to_gnu): Use local variable.  Make sure
	this is a real formal parameter before testing whether it is by ref.

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

	* gcc-interface/gigi.h (build_call_0_expr): Delete.
	(build_call_1_expr): Likewise.
	(build_call_2_expr): Likewise.
	(build_call_n_expr): New prototype.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Use build_call_n_expr.
	* gcc-interface/trans.c (establish_gnat_vms_condition_handler): Ditto.
	(Handled_Sequence_Of_Statements_to_gnu): Likewise.
	(Exception_Handler_to_gnu_zcx): Likewise.
	(gnat_to_gnu): Likewise.
	(build_binary_op_trapv): Likewise.
	* gcc-interface/utils2.c (build_call_0_expr): Delete.
	(build_call_1_expr): Likewise.
	(build_call_2_expr): Likewise.
	(build_call_n_expr): New function.
	(build_call_raise): Use build_call_n_expr.
	(build_call_raise_range): Likewise.
	(build_call_raise_column): Likewise.
	(build_call_alloc_dealloc_proc): Likewise.
	(maybe_wrap_malloc): Likewise.
	(maybe_wrap_free): Likewise.

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

	* gcc-interface/trans.c (build_return_expr): Use void_type_node for
	MODIFY_EXPR.
	* gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Assert that
	the result type is null if ENABLE_CHECKING.  Set operation_type at the
	end unconditionally if not set in the previous cases.
	Use build2 and void_type_node for MODIFY_EXPR.
	(build_allocator): Use NULL_TREE for MODIFY_EXPR.

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

	* gcc-interface/utils.c (unchecked_convert): Use a field of the right
	precision when converting to or from an integral type whose precision
	is not equal to its size.

2011-09-08  Iain Sandoe  <iains@gcc.gnu.org>

	* traceback.c (Darwin) USE_GCC_UNWINDER for Darwin versions >= 8.

2011-09-07  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (darwin): Provide powerpc64 system
	implementation.
	* system-darwin-ppc64.ads: New file.

2011-09-06  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (gnatlib-shared-darwin): Remove
	reference to "-lm".

2011-09-06  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (darwin, SO_OPTS): Provide architecture
	size switches to the link phase for shared libs.

2011-09-06  Iain Sandoe  <iains@gcc.gnu.org>

	* gcc-interface/Makefile.in (x86_64 darwin arch): Adjust
	LIBGNAT_TARGET_PAIRS for x86 and x86_64 variants.

2011-09-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in, gcc-interface/Make-lang.in
	(gnattools, regnattools, cross-gnattools, canadian-gnattools,
	gnatlib, gnatlib-sjlj, gnatlib-zcx, gnatlib-shared, gnatlib_and_tools):
	New targets.
	(TOOLS_FLAGS_TO_PASS): New.
	(../stamp-tools): Reintroduce, to avoid merge conflicts.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch10.adb, impunit.ads, impunit.adb (Not_Impl_Defined_Unit): New
	name for Is_RM_Defined_Unit. Also several fixes to this unit.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* impunit.ads, impunit.adb (Is_RM_Defined_Unit): New function.
	* s-rident.ads: New restriction No_Implementation_Units
	(this restriction is also part of the profile
	No_Implementation_Extensions)
	* sem_ch10.adb (Analyze_With_Clause): Add check for
	No_Implementation_Units restriction.

2011-09-06  Jerome Guitton  <guitton@adacore.com>

	* sysdep.c (__gnat_get_task_options): Disable VX_SPE_TASK
	on vThreads.

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-solita.adb: Minor reformatting.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): The body that
	is a rewriting of an expression function does not freeze previous
	entities.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* impunit.adb (Is_Known_Unit): Fix bad handling of Ada 2012 case

2011-09-06  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/Makefile.in: Handle e500v2-wrs-vxworksae like
	powerpc-wrs-vxworksae.

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-os_lib.ads (Spawn): Minor documentation clarification,
	Success is True for a zero exit status.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: Add message for common iterator error.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Build_Initialization_Call): If the target is a
	selected component discriminated by a current instance, replace
	the constraint with a reference to the target object, regardless
	of whether the context is an init_proc.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb: Descriptor_Size is never static.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add documentation for LSLOC metric in gnatmetric

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* gnat_rm.texi: Clarify that attribute Descriptor_Size is
	non-static.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve): An expression that is the body of an
	expression function does not freeze.

2011-09-06  Matthew Heaney  <heaney@adacore.com>

	* a-csquin.ads, a-cusyqu.adb, a-cbprqu.adb, a-cbsyqu.adb,
	a-cuprqu.adb: Changed copyright notice to indicate current
	year only.

2011-09-06  Vincent Celier  <celier@adacore.com>

	* prj.adb: Minor spelling error fix in comment
	* sem_res.adb: Minor reformatting

2011-09-06  Pascal Obry  <obry@adacore.com>

	* sysdep.c (winflush_nt): Removed as not needed anymore.
	(winflush_95): Likewise.
	(winflush_init): Likewise.
	(winflush_function): Likewise.
	(getc_immediate_common): Remove call to winflush_function.

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Rewrite the
	processing for Descriptor_Size.
	* gnat_rm.texi: Rephrase the wording for attribute Descriptor_Size
	to account for its broader usage.
	* sem_attr.adb (Analyze_Attribute): Change the error detection
	circuitry for Descriptor_Size as the attribute is now applicable
	to all types.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb, prj-nmsc.adb, exp_aggr.adb: Minor reformatting.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (OK_To_Set_Referenced): A reference to a formal
	in a parameter association must not set the Referenced flag on
	the formal.
	* prj-nmsc.adb (Check_File_Naming_Schemes): Remove useless formal

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* gnat_rm.texi: Add a section on attribute Descriptor_Size

2011-09-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in (common-tools, gnatmake-re,
	gnatlink-re): Speed up by using -j0.

2011-09-06  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Call
	Set_Corresponding_Aspect when creating pragma from aspect.
	(Add_Predicates): Use new field Corresponding_Aspect.
	* sem_prag.adb (Analyze_Pragma): Make Pname hold source aspect
	name when present, for the purpose of issuing error messages;
	remove local procedure Error_Pragma_Arg_Alternate_Name.
	* sinfo.adb, sinfo.ads (Corresponding_Aspect): New field in
	N_Pragma node.
	(From_Dynamic_Predicate, From_Static_Predicate): Remove fields from
	N_Pragma node.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* checks.adb, s-except.ads, g-socket.adb: Minor reformatting.

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Build_Heap_Allocator): Add new
	local variable Desig_Typ. Code and comment reformatting. Add
	machinery to ensure that the allocation uses a fat pointer when
	the type of the return object is a constrained array and the
	function return type is an unconstrained array.

2011-09-06  Vincent Celier  <celier@adacore.com>

	* make.adb, prj-part.adb, prj-nmsc.adb: Remove unused formal
	parameters in subprograms.

2011-09-06  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-mingw.adb (Finalize_TCB): Fix typo.

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-taprop-vxworks.adb, s-tpoaal.adb, s-tpopsp-vxworks.adb
	(System.Tasking.Primitive_Operations.Specific.Delete): Remove
	subprogram.
	(System.Tasking.Primitive_Operations.Specific.Set): If argument
	is null, destroy task specific data, to make API consistent with
	other platforms, and thus compatible with the shared version
	of s-tpoaal.adb.
	(System.Tasking.Primitive_Operations.ATCB_Allocation.Free_ATCB):
	Document the above assumption.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): Fix use of uninitialized
	variable for type of return value when return type is
	unconstrained and context is an assignment.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Check_Class_Wide_Actual): Do not generate body of
	class-wide operation if expansion is not enabled.

2011-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Deal with access
	type prefix.

2011-09-06  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications, case
	Aspect_Invariant): Do not issue error at this point on illegal
	pragma placement, as this is checked later on when analyzing
	the corresponding pragma.
	* sem_prag.adb (Error_Pragma_Arg_Alternate_Name): New procedure
	similar to Error_Pragma_Arg, except the source name of the
	aspect/pragma to use in warnings may be equal to parameter
	Alt_Name (Analyze_Pragma, case Pragma_Invariant): refine error
	message to distinguish source name of pragma/aspect, and whether
	the illegality resides in the type being public, or being private
	without a public declaration

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* g-socket.adb (Check_For_Fd_Set): On Windows, no need for bitmap
	size check (fd_set is implemented differently on that platform).

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-taprop-vxworks.adb, s-taprop-tru64.adb, s-taprop-vms.adb,
	s-tpoaal.adb, s-taprop-mingw.adb, s-taprop-linux.adb,
	s-taprop-solaris.adb, s-taprop-irix.adb, s-taprop.ads,
	s-taprop-hpux-dce.adb, s-taprop-dummy.adb, s-taprop-posix.adb
	(ATCB_Allocation): New subpackage of
	System.Tasking.Primitive_Operations, shared across all targets
	with full tasking runtime.
	(ATCB_Allocation.New_ATCB): Moved there (from target specific
	s-taprop bodies).
	(ATCB_Allocation.Free_ATCB): New subprogram. Deallocate an ATCB,
	taking care of establishing a local temporary ATCB if the one
	being deallocated is Self, to avoid a reference to the freed
	ATCB in Abort_Undefer.

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-tassta.adb, s-taskin.ads (Free_Task): If the task is not
	terminated, mark it for deallocation upon termination.
	(Terminate_Task): Call Free_Task again if the task is marked
	for automatic deallocation upon termination.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* a-cbprqu.ads, a-cbsyqu.ads, a-cuprqu.ads, a-cusyqu.ads,
	a-intnam-aix.ads, a-intnam-darwin.ads, a-intnam-dummy.ads,
	a-intnam-freebsd.ads, a-intnam-hpux.ads, a-intnam-irix.ads,
	a-intnam-linux.ads, a-intnam-lynxos.ads, a-intnam-mingw.ads,
	a-intnam-solaris.ads, a-intnam-tru64.ads,
	a-intnam-vms.ads, a-intnam-vxworks.ads, a-intnam.ads, interfac.ads,
	cstand.adb, s-maccod.ads: Mark all entities as Implementation_Defined
	* einfo.ads, einfo.adb (Is_Implementation_Defined): New flag
	* par-prag.adb: Add dummy entry for pragma Implementation_Defined
	* s-rident.ads: Add new restriction No_Implementation_Identifiers
	Add new profile No_Implementation_Extensions
	* sem_prag.adb: Implement pragma Implementation_Defined Implement
	profile No_Implementation_Extensions
	* sem_util.adb: Minor reformatting (Set_Entity_With_Style_Check):
	Check violation of restriction No_Implementation_Identifiers
	* snames.ads-tmpl: Add entries for pragma Implementation_Defined
	Add entry for Name_No_Implementation_Extensions

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* impunit.ads: Minor reformatting.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* ali.adb, sem_ch13.adb, lib-xref.adb: Minor reformatting.

2011-09-06  Pascal Obry  <obry@adacore.com>

	* s-osinte-linux.ads, s-oscons-tmplt.c: Use oscons to define sigset_t
	types.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* g-socket.adb: Minor reformatting

2011-09-06  Javier Miranda  <miranda@adacore.com>

	* ali.adb (Scan_ALI): Add missing support to load references of
	entities imported from other languages.
	* ali.ads (Xref_Record): Adding new fields to store the language and
	name of an imported entity.
	* lib-xref.adb (Output_Import_Export_Info): Fix typo
	in comment.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Type_Invariant): A type invariant
	is allowed on a full type declaration if it is the completion of
	a private declarations.
	* sem_ch13.adb (Analyze_Aspect_Specifications): An invariant
	aspect is allowed on a full type declaration in the private part
	of a package.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.ads: Minor reformatting

2011-09-06  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, g-socket.adb (GNAT.Sockets.Clear,Set,Is_Set):
	Guard against socket values that are not in [0;FD_SETSIZE[

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* s-osinte-linux.ads, a-iteint.ads, exp_ch6.adb, s-solita.adb: Minor
	reformatting.

2011-09-06  Arnaud Charlet  <charlet@adacore.com>

	* s-linux-alpha.ads: Minor reformatting
	* s-oscons-tmplt.c: Fix generated comments in s-oscons template.
	Use sizeof instead of corresponding C defines in s-oscons template.

2011-09-06  Vadim Godunko  <godunko@adacore.com>

	* a-convec.ads, a-iteint.ads: Minor reformatting.

2011-09-06  Vincent Celier  <celier@adacore.com>

	* projects.texi: Add menus and @node lines.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): Handle properly the case
	where the return type is an unconstrained array and the context
	is an assignment. Optimize the case when the target of the
	assignment is a selected component.

2011-09-06  Arnaud Charlet  <charlet@adacore.com>

	* s-solita.adb: Update comments.

2011-09-06  Pascal Obry  <obry@adacore.com>

	* s-linux.ads, s-linux-alpha.ads, s-linux-hppa.ads, s-linux-mipsel.ads,
	s-linux-sparc.ads: Remove hard coded and now wrong definitions.
	* s-oscons-tmplt.c: Add support for generating pthread related
	types size on GNU/Linux as done for Darwin.
	* s-osinte-linux.ads: Use s-oscons to define the pthread types.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb: Fix minor typo.

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb: Remove with and use clauses for Get_Targ.
	(Alignment_Of): Moved to the body of Nearest_Multiple_Rounded_Up.
	(Double_Size_Of): Alphabetized. Update the comment on usage.
	(Make_Finalize_Address_Stmts): Update comments and reformat code.
	(Nearest_Multiple_Rounded_Up): New routine.
	(Size_Of): Update comment on usage. The generated expression now
	accounts for alignment gaps by rounding the size of the type to the
	nearest multiple rounded up of the type's alignment.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb, g-comlin.adb: Minor reformatting.

2011-09-06  Steve Baird  <baird@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Look through
	derived subprograms in checking for presence of an
	Extra_Accessibility_Of_Result formal parameter.
	* exp_ch6.adb (Expand_Call): Look through derived subprograms in
	checking for presence of an Extra_Accessibility_Of_Result formal
	parameter.
	(Expand_Call.Add_Actual_Parameter): Fix a bug in the
	case where the Parameter_Associatiations attribute is already set,
	but set to an empty list.
	(Needs_Result_Accessibility_Level):
	Unconditionally return False. This is a temporary
	change, disabling the Extra_Accessibility_Of_Result
	mechanism.
	(Expand_Simple_Function_Return): Check for
	Extra_Accessibility_Of_Result parameter's presence instead of
	testing Ada_Version when generating a runtime accessibility
	check which makes use of the parameter.

2011-09-06  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Actions created for the
	expression in a given case alternative must be attached to the
	statement list of the ccrresponding case statement alternative
	They cannot be propagated ahead of the case statement, because
	the validity of the expression that generated the action may
	hold only for that alternative.

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb: Remove with and use clauses for Get_Targ.
	(Alignment_Of): Remove the code for strict alignment targets.
	(Double_Alignment_Of): Removed.
	(Double_Size_Of): New routine.
	(Make_Finalize_Address_Stmts): Change the
	calculation of the dope's size.  Update relevant comments.
	(Size_Of): New routine.

2011-09-06  Steve Baird  <baird@adacore.com>

	* einfo.ads (Extra_Accessibility): Update associated comment to use
	the term "present" correctly ("present" just means that it is not
	an error to query the value of the attribute - it does not imply
	that the value must be non-null).
	(Extra_Constrained): Ditto.
	(Is_Visible_Formal): Ditto.
	(Extra_Accessibility_Of_Result) Ditto; also add Inline pragma.
	(Set_Extra_Accessibility_Of_Result): Add Inline pragma.
	* exp_ch4.adb (Expand_Allocator_Expression): Improve a comment.
	* exp_ch6.adb (Expand_Call): The callee may require an
	Extra_Accessibility_Of_Result actual parameter even if Ada_Version
	< Ada_2012. This can occur if the callee is exported from a Gnat
	runtimes unit. Also improve a comment.

2011-09-06  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb: Add with and use clauses for Get_Targ.
	(Alignment_Of): Rename formal parameter Some_Typ
	to Typ, update related comment. Use the allocator alignment on
	strict alignment targets such as SPARC.
	(Double_Alignment_Of): Rename formal parameter Some_Typ to Typ, update
	related comment.

2011-09-06  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch9.adb (Check_Interfaces): Test
	Is_Limited_Type rather than Is_Limited_Record when checking that
	the partial view of a synchronized full view must be limited.

2011-09-06  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Free): Fix memory leak.

2011-09-06  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, exp_ch6.adb: Minor reformatting and code reorganization.

2011-09-06  Steve Baird  <baird@adacore.com>

	* einfo.ads (Extra_Accessibility_Of_Result): New function; in the
	(Ada2012) cases described in AI05-0234 where the accessibility
	level of a function result is "determined by the point of
	call", an implicit parameter representing that accessibility
	level is passed in. Extra_Accessibilty_Of_Result yields this
	additional formal parameter. Extra_Accessibility_Of_Result
	is analogous to the existing Extra_Accessibility
	function used in the implementation of access parameters.
	(Set_Extra_Accessibility_Of_Result): New procedure; sets
	Extra_Accessibility_Of_Result attribute.
	* einfo.adb (Extra_Accessibility_Of_Result): New function.
	(Set_Extra_Accessibility_Of_Result): New procedure.
	(Write_Field19_Name): Display Extra_Accessibilty_Of_Result attribute.
	* sem_util.adb (Dynamic_Accessibility_Level): Set Etype of
	an accessibility level literal to Natural; introduce a nested
	function, Make_Level_Literal, to do this.
	* exp_ch6.ads (Needs_Result_Accessibility_Level): New function;
	determines whether a given function (or access-to-function
	type) needs to have an implicitly-declared accessibility-level
	parameter added to its profile.
	(Add_Extra_Actual_To_Call): Export an existing procedure which was
	previously declared in the body of Exp_Ch6.
	* exp_ch6.adb (Add_Extra_Actual_To_Call): Export declaration by moving
	it to exp_ch6.ads.
	(Has_Unconstrained_Access_Discriminants): New Function; a
	predicate on subtype entities which returns True if the given
	subtype is unconstrained and has one or more access discriminants.
	(Expand_Call): When expanding a call to a function which takes an
	Extra_Accessibility_Of_Result parameter, pass in the appropriate
	actual parameter value. In the case of a function call which is
	used to initialize an allocator, this may not be possible because
	the Etype of the allocator may not have been set yet. In this
	case, we defer passing in the parameter and handle it later in
	Expand_Allocator_Expression.
	(Expand_Simple_Function_Return): When returning from a function which
	returns an unconstrained subtype having at least one access
	discriminant, generate the accessibility check needed to ensure that
	the function result will not outlive any objects designated by its
	discriminants.
	(Needs_Result_Accessibility_Level): New function; see exp_ch6.ads
	description.
	* exp_ch4.adb (Expand_Allocator_Expression): When a function call
	is used to initialize an allocator, we may need to pass in "the
	accessibility level determined by the point of call" (AI05-0234)
	to the function. Expand_Call, where such actual parameters are
	usually generated, is too early in this case because the Etype of
	the allocator (which is used in determining the level to be passed
	in) may not have been set yet when Expand_Call executes. Instead,
	we generate code to pass in the appropriate actual parameter
	in Expand_Allocator_Expression.
	* sem_ch6.adb (Create_Extra_Formals): Create
	the new Extra_Accessibility_Of_Result formal if
	Needs_Result_Accessibility_Level returns True. This includes the
	introduction of a nested procedure, Check_Against_Result_Level.

2011-09-06  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in (X86_TARGET_PAIRS): Remove duplicate
	declaration.

2011-09-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-finmas.adb (Set_Finalize_Address): Explain the reason
	for the synchronization. Move the test for null from
	s-stposu.Allocate_Any_Controlled to this routine since the check
	needs to be protected too.
	(Set_Heterogeneous_Finalize_Address): Explain the reason for the
	synchronization code.
	* s-finmas.ads (Set_Heterogeneous_Finalize_Address): Add comment
	explaining the context in which this routine is used.
	* s-stposu.adb (Allocate_Any_Controlled): Move the test for null
	to s-finmas.Set_Finalize_Address.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads: Document that itypes have no parent field.

2011-09-05  Robert Dewar  <dewar@adacore.com>

	* rtsfind.adb (Check_CRT): Check for overloaded entity
	* rtsfind.ads: Document that entities to be found by rtsfind
	cannot be overloaded
	* s-taenca.adb, s-tasren.adb, s-tpobop.adb, s-tpoben.ads, s-tpoben.adb
	(Lock_Entries_With_Status): New name for Lock_Entries with two
	arguments (changed to meet rtsfind no overloading rule).

2011-09-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-finmas.adb (Set_Finalize_Address (Address,
	Finalize_Address_Ptr)): Renamed to Set_Heterogeneous_Finalize_Address.
	(Set_Finalize_Address (in out Finalization_Master,
	Finalize_Address_Ptr): Add synchronization code.
	* s-finmas.ads (Set_Finalize_Address (Address,
	Finalize_Address_Ptr)): Renamed to Set_Heterogeneous_Finalize_Address.
	* s-stposu.adb (Allocate_Any_Controlled): Update the call to
	Set_Finalize_Address for the heterogeneous case.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Undo previous change, not suitable after all.

2011-09-05  Robert Dewar  <dewar@adacore.com>

	* einfo.ads: Minor comment clarification.

2011-09-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Move_Activation_Chain): Rewritten. The routine
	no longer needs to search through the entities of the return
	statement scope to find the _chain.
	* sem_ch5.adb: Add with and use clauses for Exp_Ch6 and Sem_Ch6.
	(Analyze_Block_Statement): Add local variable
	Is_BIP_Return_Statement. Add machinery to install all entities
	produced by the expansion of the return object declaration.
	(Install_Return_Entities): New routine.
	* sem_ch6.ads, sem_ch6.adb (Install_Entity): Moved from body to spec.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_Context): Apply simple fixup if context
	of subunit is incomplete.
	(Analyze_Proper_Body): If parent spec is not available, do not
	attempt analysis.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Find_Controlling_Arg): Add checks for
	interface type conversions, that are expanded into dereferences.

2011-09-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
	Examine the parameter and return profile of a subprogram and swap
	any incomplete types coming from a limited context with their
	corresponding non-limited views.
	(Exchange_Limited_Views): New routine.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Prepare_Private_Subtype_Completion): Set parent
	of internal entity to the subtype declaration, so that when
	entities are subsequently exchanged in a package body, the tree
	remains properly formatted for ASIS.

2011-09-05  Johannes Kanig  <kanig@adacore.com>

	* g-comlin.adb (Set_Usage): Additional optional argument to set help
	message.
	(Display_Help): display the user given help message, if available.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (OK_For_Limited_Init_In_05): The expression
	is legal if the original node is an identifier that is a
	parameterless function call.

2011-09-05  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb: Minor reformatting.
	Add support for standalone aggregate library.
	(Check_Stand_Alone_Library): Handle standalone aggregate library.
	* projects.texi: Fix documentation for aggregate library projects.

2011-09-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Minor reformatting.

2011-09-05  Matthew Gingell  <gingell@adacore.com>

	* s-tassta.adb (Task_Wrapper): Ensure that we don't try to write the
	stack guard page on PPC Linux. This patch ensures the 64K guard page at
	the bottom of the stack is not overwritten.

2011-09-05  Thomas Quinot  <quinot@adacore.com>

	* exp_intr.adb, s-tasini.adb: Minor reformatting.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Definition): If an access type declaration
	appears in a child unit, the scope of whatever anonymous type
	may be generated is the child unit itself.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): Do not set
	Comes_From_Source on rewritten body.
	(Analyze_Subprogram_Body_Helper): Check that the original node for
	the body comes from source, when determining whether expansion
	of a protected operation is needed.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Replace_Type): If the target of the assignment is
	a selected component and the right-hand side is a self-referential
	access, the proper prefix of the rewritten attribute is a copy
	of the left-hand side, not of its prefix.

2011-09-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb: Minor reformatting.
	* sem_ch3.adb: Minor code clean up.

2011-09-05  Jose Ruiz  <ruiz@adacore.com>

	* exp_ch9.adb (Make_Initialize_Protection): The fact that
	restriction No_Dynamic_Attachment is in effect or not should
	not influence the default priority associated to a protected
	object. With this change, when the restriction is in effect (as
	is the case for the Ravenscar profile) the default priority of
	a protected object with an interrupt handler is in the range of
	interrupt priorities (Default_Interrupt_Priority) as required
	by D.3(10).

2011-09-05  Arnaud Charlet  <charlet@adacore.com>

	* a-iteint.ads: Fix header.

2011-09-05  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Do_Autoconf): Make sure Obj_Dir always ends
	with a directory separator to avoid output such as:
	  "/path/to/objauto.cgpr" has been deleted.

2011-09-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: Better error message.

2011-09-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb: Add with and use clause for Exp_Ch6.
	(Expand_Array_Aggregate): Detect a special case of an aggregate
	which contains tasks in the context of an unexpanded return
	statement of a build-in-place function.
	* exp_ch6.adb: Add with and use clause for Exp_Aggr.
	(Expand_N_Extended_Return_Statement): Detect a delayed aggregate
	which contains tasks and expand it now that the original simple
	return statement has been rewritten.
	* exp_ch9.adb (Build_Activation_Chain_Entity): Code
	reformatting. Do not create a chain for an extended return
	statement if one is already available.
	(Has_Activation_Chain): New routine.

2011-09-05  Marc Sango  <sango@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Remove
	the wrong test and add the correct test to detect the violation
	of illegal use of unconstrained string type in SPARK mode.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iteration_Specification): Improve error
	message on an iterator over an array.

2011-09-05  Robert Dewar  <dewar@adacore.com>

	* lib-xref-alfa.adb: Minor reformatting.

2011-09-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_res.adb, par.adb, par-ch6.adb, g-comlin.adb,
	exp_ch6.adb, lib-xref-alfa.adb: Minor reformatting.

2011-09-05  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch7.adb, exp_ch6.adb: Minor reformatting.

2011-09-05  Johannes Kanig  <kanig@adacore.com>

	* lib-xref-alfa.adb: Update comments.

2011-09-05  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Build_In_Place_Formal): If extra formals are not
	present, create them now.  Needed in case the return type was
	a limited view in the function declaration.
	(Make_Build_In_Place_Call_In_Allocator): If return type contains
	tasks, build the activation chain for it.  Pass a reference to
	the Master_Id in call to Add_Task_Actuals_To_Build_In_Place call.
	* exp_ch7.adb (Make_Set_Finalize_Address_Call): Clean up interface
	with build_in_place calls.
	* sem_ch9.adb (Analyze_Task_Type_Declaration): If partial view was
	incomplete, inatialize its Corresponding_Record_Type component.
	* sem_ch10.adb (Build_Chain): Initialize Private_Dependents field
	of limited views.

2011-09-05  Johannes Kanig  <kanig@adacore.com>

	* lib-xref-alfa.adb (Is_Alfa_Reference): Filter constants from effect
	information.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* par-ch6.adb (P_Subprogram): In Ada2012 mode, if the subprogram
	appears within a package specification and the token after "IS"
	is not a parenthesis, assume that this is an unparenthesized
	expression function, even if the token appears in a line by
	itself.
	* par.adb: Clarify use of Labl field of scope stack in error
	recovery.

2011-09-05  Bob Duff  <duff@adacore.com>

	* sem_res.adb (Resolve_Intrinsic_Operator): Use unchecked
	conversions instead of normal type conversions in all cases where a
	type conversion would be illegal. In particular, use unchecked
	conversions when the operand types are private.

2011-09-05  Johannes Kanig  <kanig@adacore.com>

	* lib-xref-alfa.adb (Is_Alfa_Reference): Never declare effects on
	objects of task type or protected type.

2011-09-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Expression_Function): If the expression
	function comes from source, indicate that so does its rewriting,
	so it is compatible with any subsequent expansion of the
	subprogram body (e.g. when it is a protected operation).
	* sem_ch4.adb: minor reformatting

2011-09-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* lib.adb (Check_Same_Extended_Unit): Comment rewriting. Use
	Get_Source_Unit rather than Get_Code_Unit as instantiation unfolding
	may lead to wrong ancestor package in the case of instantiated subunit
	bodies. If a subunit is instantiated, follow the chain of instantiations
	rather than the stub structure.

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb, sem_ch6.adb: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-09-02  Marc Sango  <sango@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Change
	comment and add additional check to differentiate constant of
	type string from others unconstrained type.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb: New semantic attribute Premature_Use,
	present in incomplete type declarations to refine the error
	message the full declaration is in the same unit.
	* sem_ch4.adb (Analyze_Selected_Component): If the prefix is of
	an incomplete type, set the Premature_Use for additional message.
	* sem_ch3.adb (Find_Type_Name): If partial view is incomplete
	and Premature_Use is set, place additional information at the
	point of premature use.

2011-09-02  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb: (Check_Post_State): Suppress warning
	"postcondition refers only to pre-state" when the expression has not
	yet been analyzed, because it causes false alarms. This can happen when
	the postcondition contains a quantified expression, because those are
	analyzed later. This is a temporary/partial fix.
	(Process_Post_Conditions): Minor: change wording of warning.

2011-09-02  Marc Sango  <sango@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): Detect the violation of
	illegal use of unconstrained string type in SPARK mode.
	* sem_res.adb (Analyze_Operator_Symbol): Set the
	right place where the string operand of concatenation should be
	violate in SPARK mode.

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, sem_util.adb, sem_ch6.adb, prj-nmsc.adb,
	exp_ch3.adb: Minor reformatting.

2011-09-02  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Add_Default_GNAT_Naming_Scheme): Declare "gcc"
	as the compiler driver so Is_Compilable returns True for sources.
	* prj-nmsc.adb (Override_Kind): When Kind is Sep, set the source
	for the body.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_PPC_In_Decl_Part): for a class-wide
	condition, a reference to a controlling formal must be interpreted
	as having the class-wide type (or an access to such) so that the
	inherited condition can be properly applied to any overriding
	operation (see ARM12 6.6.1 (7)).

2011-09-02  Tristan Gingold  <gingold@adacore.com>

	* init.c (__gnat_is_vms_v7): Fix case and add prototype
	for LIB$GETSYI.

2011-09-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Do not copy the
	initializing expression of a class-wide interface object declaration
	if its type is limited.

2011-09-02  Johannes Kanig  <kanig@adacore.com>

	* sem_util.adb (Unique_Name): To obtain a unique name for enumeration
	literals, take into account the type name; the type is *not*
	the scope for an enumeration literal.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Overriding_Indicator): add special check
	to reject an overriding indicator on a user-defined Adjust
	subprogram for a limited controlled type.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): add missing call to Resolve
	for an actual that is a function call returning an unconstrained
	limited controlled type.

2011-09-02  Tristan Gingold  <gingold@adacore.com>

	* g-socthi-vms.adb (c_sendmsg, c_recvmsg): Use unpacked msg if on vms 7

2011-09-02  Johannes Kanig  <kanig@adacore.com>

	* alfa.ads (Name_Of_Heap_Variable): Change value of the HEAP variable
	from "HEAP" to __HEAP Change comment that refers to that variable
	* put_alfa.adb: Change comment that refers to that variable

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb, exp_ch6.adb, prj-nmsc.adb: Minor reformatting.

2011-09-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Extract_Renamed_Object): Renamed to
	Find_Renamed_Object. This routine has been reimplemented and now uses
	tree traversal to locate a renamed object.
	(Is_Aliased): Replace call to Extract_Renamed_Object with
	Find_Renamed_Object.

2011-09-02  Tristan Gingold  <gingold@adacore.com>

	* init.c: (__gnat_is_vms_v7): New function.

2011-09-02  Olivier Hainque  <hainque@adacore.com>

	* tracebak.c (STOP_FRAME, ppc elf/vxworks case): Stop on frames
	that have a misaligned backchain, necessarily bogus.

2011-09-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_Freeze_Class_Wide_Type): Do not create
	TSS routine Finalize_Address when compiling in Alfa mode.
	(Expand_Freeze_Record_Type): Do not create TSS routine
	Finalize_Address when compiling in Alfa mode.
	* exp_ch4.adb (Expand_Allocator_Expression): Do not produce a
	call to Set_Finalize_Address in Alfa mode because Finalize_Address is
	not built.
	(Expand_N_Allocator): Do not produce a call to
	Set_Finalize_Address in Alfa mode because Finalize_Address is not built.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Do not
	produce a call to primitive Set_Finalize_Address in Alfa mode because
	Finalize_Address is not built.
	* exp_ch7.adb (Build_Finalization_Master): Do not create
	finalization masters in Afa mode since they are not needed.
	(Build_Finalizer): Do not create scope and library-level
	finalizers in Alfa mode since they are not needed.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): Do not expand
	"new" and "free" when applied to controlled objects in Alfa mode since
	this is not needed.

2011-09-02  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.db: (Check_Stand_Alone_Library): For SALs, allow
	only library names with the syntax of Ada identifiers, to avoid errors
	when compiling the binder generated files.
	* projects.texi: Document restriction on SAL library names

2011-09-02  Thomas Quinot  <quinot@adacore.com>

	* a-chtgbo.adb: Minor comment fix.

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* lib-xref.adb: Minor reformatting

2011-09-02  Vincent Celier  <celier@adacore.com>

	* bindusg.adb, clean.adb, gnatchop.adb, gnatfind.adb, gnatlink.adb,
	gnatls.adb, gnatname.adb, gnatxref.adb, gprep.adb, makeusg.adb: Add
	--version and --help in usage.
	* switch.ads, switch.adb (Display_Usage_Version_And_Help): New procedure

2011-09-02  Bob Duff  <duff@adacore.com>

	* lib-xref.adb: (Hash): Avoid use of 'Mod attribute, because old
	compilers don't understand it.

2011-09-02  Gary Dismukes  <dismukes@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Pass the
	underlying subtype rather than its base type on the call to
	Build_Record_Or_Elementary_Input_Function, so that any
	constraints on a discriminated subtype will be available for
	doing the check required by AI05-0192.
	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function):
	If the prefix subtype of the 'Input attribute is a constrained
	discriminated subtype, then check each constrained discriminant value
	against the corresponding value read from the stream.

2011-09-02  Yannick Moy  <moy@adacore.com>

	* usage.adb, warnsw.adb, sem_ch6.adb, opt.ads: Disable by default
	warnings on suspicious contracts, and enable them with -gnatwa.

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, exp_ch9.adb, sem_attr.adb, sem_ch6.adb: Minor
	reformatting.

2011-09-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Install_Private_Data_Declarations): Add guards
	which ensure that restriction No_Dynamic_Attachment has not been
	violated.
	(Make_Initialize_Protection): Protected types with attach or
	interrupt handlers must not violate restriction No_Dynamic_Attachment.
	* exp_util.adb (Corresponding_Runtime_Package): Add a guard
	which ensures that restriction No_Dynamic_Attachment has not been
	violated.
	* sem_attr.adb: (Eval_Attribute): Transform
	VAX_Float_Type'First and 'Last into references to
	the temporaries which store the corresponding bounds. The
	transformation is needed since the back end cannot evaluate
	'First and 'Last on VAX.
	(Is_VAX_Float): New routine.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Subprogram_Instantiation): If the
	generic unit is not intrinsic and has an explicit convention,
	the instance inherits it.

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* prj-dect.adb, prj-env.adb, prj-nmsc.adb, prj-proc.adb, prj-tree.adb,
	prj.adb, prj.ads, sem_ch5.adb: Minor reformatting.

2011-09-02  Thomas Quinot  <quinot@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case Unrestriced_Access):
	Guard against a prefix that is an N_Has_Entity but has no
	associated entity.

2011-09-02  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Is_Alfa_Reference): Ignore IN parameters in Alfa
	references.

2011-09-02  Yannick Moy  <moy@adacore.com>

	* opt.ads (Warn_On_Suspicious_Contract): New warning flag.
	* sem_ch3.adb (Analyze_Declarations): Call checker for suspicious
	contracts.
	* sem_ch6.adb, sem_ch6.ads (Check_Subprogram_Contract): New
	procedure looking for suspicious postconditions.
	* usage.adb (Usage): New options -gnatw.t and -gnatw.T.
	* warnsw.adb (Set_Dot_Warning_Switch): Take into account new
	options -gnatw.t and -gnatw.T.

2011-09-02  Pascal Obry  <obry@adacore.com>

	* prj.adb: Minor code refactoring. Move check for null project in
	Project_Changed.
	* projects.texi: Fix minor typos.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): If the domain
	of iteration is an expression, its value must be captured in a
	renaming declaration, so that modification of the elements is
	propagated to the original container.

2011-09-02  Pascal Obry  <obry@adacore.com>

	* prj-proc.adb, prj.adb, makeutl.adb, makeutl.ads, prj-dect.adb,
	prj-nmsc.adb, prj-util.adb, prj-conf.adb, prj-env.adb,
	prj-tree.adb: Minor reformatting and style fixes.

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* s-rident.ads: Add new restriction No_Implicit_Aliasing
	* sem_attr.adb: (Analyze_Access_Attribute): Deal with
	No_Implicit_Aliasing
	(Analyze_Attribute, case Address): ditto
	(Analyze_Attribute, case Unrestricted_Access): ditto
	* sem_util.ads, sem_util.adb: (Is_Aliased_View): Handle
	No_Implicit_Aliasing restriction.
	* gnat_rm.texi: Add documentation for No_Implicit_Aliasing

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb: (Possible_Bit_Aligned_Object): If the object
	is an unchecked conversion, apply test to its expression.

2011-09-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Check_Abstract_Overriding): When
	traversing the chain of aliased subprograms avoid reporting a
	redundant error on the current entity.

2011-09-02  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Minor clean up.

2011-09-02  Bob Duff  <duff@adacore.com>

	* s-htable.adb (Set_If_Not_Present): Use renaming
	instead of ":=", because the type Key is limited in the generic (even
	if not in the instances).

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, sem_ch10.adb, sem_attr.adb, s-htable.adb,
	g-comlin.adb, g-comlin.ads, lib-xref-alfa.adb, lib-xref.adb: Minor
	reformatting.

2011-09-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb: (Set_Anonymous_Type): Associate the itype of an
	inherited component with the enclosing derived type. Code reformatting.

2011-09-02  Gary Dismukes  <dismukes@adacore.com>

	* checks.adb: (Determine_Range): Add test of OK1 to prevent the early
	return done when overflow checks are enabled, since comparisons against
	Lor and Hir should not be done when OK1 is False.

2011-09-02  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Add_Finalization_Master_Actual_To_Build_In_Place_Call):
	Add new formal Master_Exp. When present, add that expression to the
	call as an extra actual.
	(Make_Build_In_Place_Call_In_Object_Declaration): Add variable
	Fmaster_Actual and in the case of a BIP call initializing a return
	object of an enclosing BIP function set it to a
	new reference to the implicit finalization master
	formal of the enclosing function. Fmaster_Actual is
	then passed to the new formal Master_Exp on the call to
	Add_Finalization_Master_Actual_To_Build_ In_Place_Call. Move
	initializations of Enclosing_Func to its declaration.

2011-09-02  Thomas Quinot  <quinot@adacore.com>

	* csets.ads: Minor reformatting

2011-09-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.adb: (Get_Constraint_Association): Add code to retrieve
	the full view of a private type coming from an instantiation.
	* exp_ch4.adb: (Current_Anonymous_Master): Reimplement the search
	loop to iterate over the declarations rather than use the
	First_Entity / Next_Entity scheme.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: (Analyze_Attribute, case 'Range): when expanding
	X'range (N) into X'First (N) ..  X'Last (N), do not share the
	dimension indicator N, if present. Even though it is a static
	constant, its source location may be modified when printing
	expanded code under -gnatDL, and node sharing will lead to chaos
	in Sprint on large files, by generating a sloc value that does
	not correspond to any source file.

2011-09-02  Bob Duff  <duff@adacore.com>

	* einfo.adb: (Has_Xref_Entry): Do not call
	Implementation_Base_Type. Lib.Xref has been
	rewritten to avoid the need for it, and it was costly.
	* s-htable.ads,s-htable.adb: (Present,Set_If_Not_Present): New
	functions in support of efficient xref.
	* lib-xref-alfa.adb: Misc changes related to Key component of
	type Xref_Entry.
	* lib-xref.adb: (Add_Entry,etc): Speed improvement.
	(New_Entry): Call Implementation_Base_Type, because Has_Xref_Entry
	no longer does. This is the one place where it is needed.

2011-09-02  Johannes Kanig  <kanig@adacore.com>

	* g-comlin.adb (Getopt): New optional argument Concatenate to have
	similar interface as the other Getopt function.

2011-09-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb: (Expand_Allocator_Expression): Do not generate
	a call to Set_Finalize_Address if there is no allocator available.
	* exp_util.adb: (Build_Allocate_Deallocate_Proc): Account for
	a case of allocator expansion where the allocator is not expanded but
	needs a custom allocate routine. Code reformatting.
	(Is_Finalizable_Transient): Remove local variables Has_Rens and
	Ren_Obj. Code reformatting.
	(Is_Renamed): Renamed to Is_Aliased. Add code to detect aliasing
	through the use of 'reference.
	* sem_ch4.adb: (Analyze_Allocator): Detect allocators generated
	as part of build-in-place expansion. They are intentionally marked as
	coming from source, but their parents are not.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): If the library unit
	is the generated subprogram declaration for a child unit body
	that acts as spec, use the original body in the with_clause,
	to prevent binding errors.

2011-09-02  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Adapt documentation of -gnateInnn to new VMS
	qualifier /MULTI_UNIT_INDEX=

2011-09-02  Johannes Kanig  <kanig@adacore.com>

	* g-comlin.adb (Getopt): Return when switch is dealt with automatically,
	instead of calling the callback function

2011-09-02  Robert Dewar  <dewar@adacore.com>

	* prj-proc.adb, prj.ads, sem_util.adb, s-taprop-linux.adb,
	prj-nmsc.adb, prj-util.ads, prj-env.adb: Minor reformatting.

2011-09-02  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb: (Find_Sources): When the list of sources is
	explicitly declared in an extending project, do not warn if a source
	for an inherited naming exception is not found.

2011-09-02  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb: (Is_Build_In_Place_Function_Call): Return False if
	expansion is inactive.

2011-09-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Note_Possible_Modification): If the entity
	being modified is the renaming generated for an Ada2012 iterator
	element, the enclosing container or array is modified as well.

2011-09-02  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-linux.adb (Initialize_Lock, Initialize_TCB,
	Initialize): Define and initialize the
	mutex attributes and condition variable attributes locally.

2011-09-02  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_File): Mark as Locally_Removed a naming
	exception replaced in an extending project.
	(Check_Object): No error when the other source is locally removed.

2011-09-02  Yannick Moy  <moy@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function_Call): in Alfa mode, allow
	unresolved calls.

2011-08-31  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in: Clean up handling of x86 and x86-64
	run-time files.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, s-taprop-linux.adb, gnatls.adb: Minor reformatting.

2011-09-01  Jose Ruiz  <ruiz@adacore.com>

	* adaint.h (__gnat_cpu_free): Fix the name of this profile.
	* adaint.c (__gnat_cpu_alloc, __gnat_cpu_alloc_size, __gnat_cpu_free,
	__gnat_cpu_zero, __gnat_cpu_set): Create version of these subprograms
	specific for systems where their glibc version does not define the
	routines to handle dynamically allocated CPU sets.

2011-09-01  Vincent Celier  <celier@adacore.com>

	* prj-proc.adb, prj.ads, prj-nmsc.adb, prj-util.adb, prj-util.ads,
	prj-env.adb: Implement inheritance of naming exceptions in extending
	projects.

2011-09-01  Romain Berrendonner  <berrendo@adacore.com>

	* gnatls.adb: Display simple message instead of content of
	gnatlic.adl.

2011-09-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb: (Build_Derived_Record_Type) Remove the kludgy update of
	access discriminant and anonymous access component scopes.
	(Inherit_Component): Reuse the itype of an access discriminant
	or anonymous access component by copying it in order to set the proper
	scope. This is done only when the parent and the derived type
	are in different scopes.
	(Set_Anonymous_Etype): New routine.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* a-convec.adb: Minor reformatting throughout.

2011-09-01  Jose Ruiz  <ruiz@adacore.com>

	* adaint.c, adaint.h (__gnat_cpu_alloc, __gnat_cpu_alloc_size,
	__gnat_cpu_set_free): Create these wrappers around the CPU_ALLOC,
	CPU_ALLOC_SIZE and CPU_FREE linux macros.
	(__gnat_cpu_zero, __gnat_cpu_set): Use the CPU_ZERO_S and
	CPU_SET_S respectively because we are now using dynamically allocated
	CPU sets which are more portable across different glibc versions.
	* s-osinte-linux.ads (cpu_set_t_ptr, CPU_ALLOC, CPU_ALLOC_SIZE,
	CPU_FREE): Add this type and subprograms to be able to create cpu_set_t
	masks dynamically according to the number of processors in the target
	platform.
	(CPU_ZERO, CPU_SET): They are now mapped to the CPU_ZERO_S and CPU_SET_S
	respectively, so we need to pass the size of the masks as
	parameters.
	* s-taprop-linux.adb (Create_Task, Set_Task_Affinity): Use dynamically
	created cpu_set_t masks
	with the number of processors available in the target platform,
	instead of static bit arrays. It enhances portability because
	it uses the information from the target platform.
	* sem_ch8.adb: (Attribute_Renaming): When checking whether we
	are using a restricted run-time library, use the flag
	Configurable_Run_Time_Mode instead of Restricted_Profile.

2011-09-01  Vincent Celier  <celier@adacore.com>

	* ug_words: Add /MULTI_UNIT_INDEX= -> -gnateI
	* vms_data.ads: Add new VMS qualifier equivalent for -gnateInnn

2011-09-01  Nicolas Roche  <roche@adacore.com>

	* adaint.c (__gnat_tmp_name): Don't use tmpnam function from the system
	on VxWorks in kernel mode.

2011-09-01  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-linux.adb (Create_Task, Set_Task_Affinity): Use the linux
	macros for handling CPU sets (CPU_ZERO, CPU_SET) instead of modifying
	directly the bit array.
	* s-osinte-linux.ads (CPU_ZERO, CPU_SET): Import these wrappers around
	the linux macros with the same name.
	* adaint.h, adaint.c (__gnat_cpu_zero, __gnat_cpu_set): Create these
	wrappers around the CPU_ZERO and CPU_SET linux macros.

2011-09-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Find_Insertion_List): Removed.
	(Process_Transient_Objects): Insert the declarations of the hook
	access type and the hook object before the associated transient object.

2011-09-01  Jose Ruiz  <ruiz@adacore.com>

	* sem_ch8.adb (Attribute_Renaming): Add missing check to avoid loading
	package System.Aux_Dec when using restricted run-time libraries which
	do not have this package.

2011-09-01  Tristan Gingold  <gingold@adacore.com>

	* s-vaflop-vms-alpha.adb: Remove pragma optimize, useless.

2011-09-01  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Analyze_Access_Attribute): Do not call
	Kill_Current_Values for P'Unrestricted_Access, where P is library level

2011-09-01  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb: Minor reformatting
	* gnat_ugn.texi: Fix minor typos.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-09-01  Robert Dewar  <dewar@adacore.com>

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

2011-09-01  Ed Schonberg  <schonberg@adacore.com>

	* a-convec.adb: Proper handling of cursors for Ada2012 iterators.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* prj-proc.adb, exp_ch6.adb, prj-env.adb: Minor reformatting.

2011-09-01  Bob Duff  <duff@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): Need to treat "in instance
	body" the same as "in inlined body", because visibility shouldn't
	apply there.

2011-09-01  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Add_Inlined_Body): Refine previous change.

2011-09-01  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.ads (Needs_BIP_Alloc_Form): New utility function.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
	Test for case where call
	initializes an object of a return statement before testing for
	a constrained call, to ensure that all such cases get handled
	by simply passing on the caller's parameters. Also, in that
	case call Needs_BIP_Alloc_Form to determine whether to pass on
	the BIP_Alloc_Form parameter of the enclosing function rather
	than testing Is_Constrained. Add similar tests for the return
	of a BIP call to later processing to ensure consistent handling.
	(Needs_BIP_Alloc_Form): New utility function.
	* sem_ch6.adb: (Create_Extra_Formals): Replace test for adding
	a BIP_Alloc_Form formal with call to new utility function
	Needs_BIP_Alloc_Form.

2011-09-01  Pascal Obry  <obry@adacore.com>

	* prj-part.adb: Minor reformatting.

2011-09-01  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (Create_Mapping_File.Process): Encode the upper
	half character in the unit name.

2011-09-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb: Minor code and comment reformatting.

2011-09-01  Thomas Quinot  <quinot@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): Remove redundant tests
	for Is_Limited_Type and Is_Tagged_Type in condition checking
	for by-reference type.
	* inline.adb (Add_Inlined_Body): Only exclude init_procs. Other
	subprograms may have a completion because of a previous
	Inline_Always clause, but the enclosing package must be marked
	inlined for the subprogram body to become visible to the backend.

2011-09-01  Thomas Quinot  <quinot@adacore.com>

	* sem_aux.adb, exp_ch4.adb: Minor reformatting

2011-09-01  Pascal Obry  <obry@adacore.com>

	* prj-proc.adb, prj.ads, sinput-p.adb: Minor reformatting.

2011-09-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Generate references to
	the formals of a subprogram stub that acts as a spec.

2011-09-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): If an actual is a by_reference
	type, declare a renaming for it, not an object declaration.

2011-09-01  Yannick Moy  <moy@adacore.com>

	* ali-util.adb, ali-util.ads (Read_Withed_ALIs): Add parameter
	Ignore_Errors to ignore failures to read ALI files when True.

2011-09-01  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Handle non-default
	constructor calls associated with non-tagged record types.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* g-socthi-vms.adb: Minor reformatting.

2011-09-01  Nicolas Roche  <roche@adacore.com>

	* sysdep.c: Don't use macro functions for stdio functions on VxWorks
	in order to avoid impact of imcompatible changes.
	* cstreams.c: Likewise
	* cio.c: Likewise
	* aux-io.c: Likewise

2011-09-01  Yannick Moy  <moy@adacore.com>

	* lib-writ.adb (Write_With_Lines): Always output complete information
	on "with" line in Alfa mode, as this is required by formal verification
	back-end.

2011-09-01  Tristan Gingold  <gingold@adacore.com>

	* g-socthi-vms.adb: Add comments.

2011-09-01  Pascal Obry  <obry@adacore.com>

	* prj.ads: Minor reformatting.

2011-09-01  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (Create_Config_Pragmas_File.Check): Put all naming
	exceptions in the config pragmas file.

2011-09-01  Tristan Gingold  <gingold@adacore.com>

	* gnat_ugn.texi: Document GNAT_STACK_SIZE on IVMS.

2011-09-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Find_Insertion_List): New routine.
	(Process_Transient_Objects): Add code to handle the abnormal
	finalization of a controlled transient associated with a subprogram
	call. Since transients are cleaned up right after the associated
	context, an exception raised during a subprogram call may bypass the
	finalization code.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb (Expand_Call): Check actual for aliased parameter is
	aliased.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb, a-exexda.adb: Minor reformatting.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* s-taskin.ads, s-tassta.adb, sem_ch13.adb: Minor reformatting.

2011-09-01  Thomas Quinot  <quinot@adacore.com>

	* Makefile.rtl: Move s-oscons.o from GNATRTL_TASKING_OBJS to
	GNATRTL_NONTASKING_OBJS.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* einfo.ads (Is_Aliased): Fix existing documentation and add note on
	possibility of this flag being set for formals in Ada 2012 mode.
	* par-ch6.adb (P_Formal_Part): Handle aliased for parameters for Ada
	2012.
	* sem_ch6.adb (Process_Formals): Handle aliased parameters in Ada 2012
	mode.
	* sinfo.adb (Aliased_Present): Allowed in N_Parameter_Specification for
	Ada 2012.
	* sinfo.ads (Aliased_Present): Allowed in N_Parameter_Specification for
	Ada 2012.

2011-09-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Find_Insertion_Node): New routine. Determines the proper
	insertion node in a tree of nested Expression_With_Actions nodes.
	(Process_Transient_Object): In the case where a complex if statement
	has been converted into nested Expression_With_Actions nodes, the
	"hook" object and the associated access type must be inserted before
	the top most Expression_With_Actions.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* a-cbprqu.adb, a-cbprqu.ads, a-cuprqu.adb, a-cuprqu.ads,
	a-cbsyqu.adb, a-cbsyqu.ads: Minor reformatting.

2011-09-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: Conditionalize aliasing predicates to Ada2012.

2011-09-01  Jose Ruiz  <ruiz@adacore.com>

	* aspects.ads (Aspect_Id, Aspect_Argument, Aspect_Names): Add the CPU
	aspect.
	* aspects.adb (Canonical_Aspect): Add entry for the CPU aspect.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Analyze the CPU aspect
	in a similar way as we do for the Priority or Dispatching_Domain aspect.
	* s-mudido-affinity.adb (Dispatching_Domain_Tasks,
	Dispatching_Domains_Frozen): Move this local data to package
	System.Tasking because with the CPU aspect we need to have access
	to this data when creating the task in System.Tasking.Stages.Create_Task
	* s-taskin.ads (Dispatching_Domain_Tasks, Dispatching_Domains_Frozen):
	Move these variables from the body of
	System.Multiprocessors.Dispatching_Domains because with the CPU aspect
	we need to have access to this data when creating the task in
	System.Tasking.Stages.Create_Task.
	* s-taskin.adb (Initialize): Signal the allocation of the environment
	task to a CPU, if any, so that we know whether the CPU can be
	transferred to a different dispatching domain.
	* s-tassta.adb (Create_Task): Check whether the CPU to which this task
	is being allocated belongs to the dispatching domain where the task
	lives. Signal the allocation of the task to a CPU, if any, so that we
	know whether the CPU can be transferred to a different dispatching
	domain.

2011-09-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb, sem_attr.adb, snames.ads-tmpl: Implementation of
	attributes Same_Storage and Overlaps_Storage.

2011-09-01  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_strm.adb: Remove with and use clause for Opt.
	(Build_Array_Input_Function): Remove the version-dependent generation
	of the return statement. The Ada 2005 tree is now the default.

2011-09-01  Yannick Moy  <moy@adacore.com>

	* put_alfa.adb: Unconditionnally write files in Alfa section, so that
	it is never empty when compiling in Alfa mode.

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb, sem_ch3.adb, a-direct.adb, s-taprop-vxworks.adb,
	comperr.adb, exp_ch9.adb, exp_pakd.adb, sem_ch12.adb, freeze.adb,
	s-taprop-mingw.adb, s-taprop-linux.adb, s-taprop-solaris.adb,
	gnat1drv.adb, a-rbtgbo.adb, exp_dist.adb: Minor reformatting

2011-09-01  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Add a-csquin.ads, a-cusyqu.ad[sb],
	a-cuprqu.ad[sb], a-cbsyqu.ad[sb], a-cbprqu.ad[sb]
	* a-csquin.ads: New Ada 2012 unit that specifies the queue interface
	* a-cusyqu.ads, a-cusyqu.adb: New Ada 2012 unit that specifies the
	unbounded queue container.
	* a-cbsyqu.ads, a-cbsyqu.adb: New Ada 2012 unit that specifies the
	bounded queue container.
	* a-cuprqu.ads, a-cuprqu.adb: New Ada 2012 unit that specifies the
	unbounded priority queue container.
	* a-cbprqu.ads, a-cbprqu.adb: New Ada 2012 unit that specifies the
	bounded priority queue container.

2011-08-31  Pascal Obry  <obry@adacore.com>

	* a-direct.adb: Do not try to create an UNC path on Windows.
	(Create_Path): Skip leading computer name in UNC path if any.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function): Remove the
	version-dependent generation of the return statement. The Ada 2005 tree
	is now the default.

2011-08-31  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.ads, exp_dist.adb (Find_Numeric_Representation): Predefined
	types Stream_Element_Offset and Storage_Offset have a different native
	type depending on whether the platform is 32 or 64 bits. When
	exchanging them, always convert to 64 bits.

2011-08-31  Yannick Moy  <moy@adacore.com>

	* debug.adb: Reserve debug option -gnatd.E for passing gnatprove option
	--force-alfa to gnat2why.

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Save_References): If the node has aspects, save
	references within the corresponding expressions in a separate step,
	because the aspects are not directly in the tree for the declaration
	to which they belong.

2011-08-31  Arnaud Charlet  <charlet@adacore.com>

	* freeze.adb (Freeze_Record_Type): Omit test on variable size component
	in CodePeer mode, since representation clauses are partially ignored.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-31  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-vxworks.adb, s-taprop-mingw.adb, s-taprop-linux.adb,
	s-taprop-solaris.adb (Create_Task): Not_A_Specific_CPU can be assigned
	to any dispatching domain.

2011-08-31  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2011-08-31  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Get_Generic_Parent_Type): Don't query Subtype_Indication
	on nodes for which it is not defined.
	(Is_Non_Overriding_Operation): Exit the loop when we find a generic
	parent type.

2011-08-31  Bob Duff  <duff@adacore.com>

	* sem_ch3.adb (Process_Full_View): Disable legality check if
	In_Instance, to avoid spurious errors.
	* sem_ch12.adb (Validate_Derived_Type_Instance): Disable legality check
	if In_Instance, to avoid spurious errors.

2011-08-31  Pascal Obry  <obry@adacore.com>

	* a-direct.adb: Use Dir_Seps everywhere to properly handle all
	directory speparators.
	(Compose): Use Dir_Seps to handle both forms.
	(Create_Path): Use Dir_Seps instead of explicit check, no semantic
	changes.
	(Extension): Use Dir_Seps to handle both forms.

2011-08-31  Pascal Obry  <obry@adacore.com>

	* prj-conf.adb: Minor reformatting.

2011-08-31  Jose Ruiz  <ruiz@adacore.com>

	* aspects.ads (Aspect_Id, Aspect_Argument, Aspect_Names): Add the
	dispatching domain aspect.
	* aspects.adb (Canonical_Aspect): Add entry for the dispatching domain
	aspect.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Analyze the
	Dispatching_Domain aspect in a similar way as we do for the Priority
	aspect.
	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Add the
	Dispatching_Domain component if a Dispatching_Domain pragma or aspect
	is present.
	(Make_Task_Create_Call): Add the Dispatching_Domain when creating a task
	* par-prag.adb (Prag): Add Pragma_Dispatching_Domain as a known pragma.
	* sem_prag.adb (Analyze_Pragma): Check the correctness of a pragma
	Dispatching_Domain and add it to the task definition.
	(Sig_Flags): Add Pragma_Dispatching_Domain.
	* rtsfind.ads, rtsfind.adb (RTU_Id, RE_Id, Get_Unit_Name): Add the
	support to find the types Dispatching_Domain and
	Dispatching_Domain_Access.
	* sinfo.ads, sinfo.adb (Has_Pragma_Dispatching_Domain,
	Set_Has_Pragma_Dispatching_Domain): Add these subprograms to set and
	query the availability of a pragma Dispatching_Domain.
	* snames.ads-tmpl (Name_uDispatching_Domain): Add this name required by
	the expander to pass the Dispatching_Domain when creating a task.
	(Name_Dispatching_Domain): Add this new name for a pragma.
	(Pragma_Id): Add the new Pragma_Dispatching_Domain.
	* s-tassta.ads, s-tassta.adb (Create_Task): Set the domain to which the
	task has been allocated at creation time.
	* s-tarest.adb (Create_Restricted_Task): The dispatching domain using
	Ravenscar is always null.
	* s-taskin.ads, s-taskin.adb (Initialize_ATCB): Set the domain to which
	the task has been allocated at creation time.
	* s-tporft.adb (Register_Foreign_Thread): A foreign task will not have
	a specific dispatching domain.
	* s-taprop-linux.adb, s-taprop-solaris.adb, s-taprop-vxworks.adb,
	s-taprop-mingw.adb (Create_Task): Check whether both Dispatching_Domain
	and CPU are specified for the task, and the CPU value is not contained
	within the range of processors for the domain.

2011-08-31  Vincent Celier  <celier@adacore.com>

	* make.adb (Original_Gcc) : New constant String_Access.
	(Gnatmake): For VM targets, do not use VM version of the compiler if
	--GCC= has been specified.

2011-08-31  Thomas Quinot  <quinot@adacore.com>

	* sem_ch5.adb: Minor reformatting.

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_pakd.adb (Convert_To_PAT_Type): If prefix is a function call, do
	not reanalyze it.

2011-08-31  Bob Duff  <duff@adacore.com>

	* exp_ch4.adb (Expand_N_Selected_Component): Use the full type, in case
	the access type is private; we don't care about privacy in expansion.

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): In an instance, ignore aggregate
	subcomponents tnat may be limited, because they originate in view
	conflicts. If the original aggregate is legal and the actuals are
	legal, the aggregate itself is legal.

2011-08-31  Matthew Heaney  <heaney@adacore.com>

	* a-rbtgbo.adb (Clear_Tree): Assert representation invariant for lock
	status.

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: Set kind of loop parameter properly, to preserve all
	errors in B tests.

2011-08-31  Jose Ruiz  <ruiz@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): For the Priority and
	Interrupt_Priority aspects, force the analysis of the aspect expression
	(when building the equivalent pragma). Otherwise, its analysis is done
	too late, after the task or protected object has been created.
	* sem_ch9.adb (Analyze_Single_Protected_Declaration,
	Analyze_Single_Task_Declaration): Remove the code to move the aspects
	to the object declaration because they are needed in the type
	declaration.

2011-08-31  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, exp_ch7.ads, sem_ch5.adb, put_scos.adb, s-rannum.adb,
	a-rbtgbo.adb, exp_intr.adb, a-cbdlli.adb, a-cbdlli.ads: Minor
	reformatting.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Find_Protection_Type): Do not look for fields _object
	if the corresponding type is malformed due to restriction violations.

2011-08-31  Robert Dewar  <dewar@adacore.com>

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

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): Correct faulty condition which
	would cause the generation of Set_Finalize_Address if the target is a
	VM and the designated type is not derived from [Limited_]Controlled.

2011-08-31  Arnaud Charlet  <charlet@adacore.com>

	* comperr.adb, comperr.ads, gnat1drv.adb (Delete_SCIL_Files): New
	subprogram.
	(Compiler_Abort, Gnat1drv): Call Delete_SCIL_Files in codepeer mode in
	case of a compilation error.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* init.c (__gnat_error_handler): Standardize the stack overflow or
	erroneous memory access message.
	* seh_init.c (__gnat_SEH_error_handler): Standardize the stack overflow
	or erroneous memory access message.

2011-08-31  Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb: Minor reformatting.
	* sem_ch6.adb: Minor code reorganization (use Ekind_In).

2011-08-31  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Minor documentation clarification.
	* put_scos.adb: Do not generate SCO unit header line for a unit that
	has no SCO lines.

2011-08-31  Robert Dewar  <dewar@adacore.com>

	* a-rbtgbo.adb, alfa_test.adb: Minor reformatting.

2011-08-31  Tristan Gingold  <gingold@adacore.com>

	* exp_ch7.ads, exp_ch7.adb (Finalization_Exception_Data): New type to
	hold variables between these following subprograms.
	(Build_Exception_Handler, Build_Object_Declarations,
	Build_Raise_Statement): Use the above type as parameter.
	Make the above adjustments.
	* exp_intr.adb (Expand_Unc_Deallocation): Adjust.

2011-08-31  Pascal Obry  <obry@adacore.com>

	* projects.texi: Minor reformatting.

2011-08-31  Tristan Gingold  <gingold@adacore.com>

	* s-ransee.ads, s-ransee.adb: Add system.random_seed unit.
	* s-rannum.adb (Reset): Use Get_Seed from s-ransee.

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb: Minor code cleanup.
	* sem_ch5.adb (Analyze_Iteration_Scheme): Set ekind of loop variable to
	prevent cascaded errors.
	(Analyze_Loop_Statement): In semantics-only mode, introduce loop
	variable of an iterator specification in current scope.
	* sem_ch6.adb (Analyze_Return_Statement, Find_what_It_Apples_To): Skip
	postconditions on the stack, as they contain no return statements.

2011-08-31  Yannick Moy  <moy@adacore.com>

	* exp_alfa.adb (Expand_Alfa_N_Package_Declaration,
	Expand_Alfa_N_Subprogram_Body): Remove useless procedures which simply
	call Qualify_Entity_Names.
	(Expand_Alfa): call Qualify_Entity_Names in more cases
	* lib-xref-alfa.adb: Take into account system package.
	* sem_prag.adb Take into account restrictions in Alfa mode, contrary to
	CodePeer mode in which we are interested in finding bugs even if
	compiler cannot compile source.
	* sem_util.adb, sem_util.ads (Unique_Entity): Take into account case of
	deferred constant.

2011-08-31  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Constrain_Concurrent): Retrieve Base_Type of the subtype
	denoted by the subtype mark to ensure getting the concurrent type in
	the case where the subtype mark denotes a private subtype of a
	concurrent type (needed when using -gnatc).
	(Process_Subtype): For the processing specific to type kinds, case on
	the Base_Type kind of the Subtype_Mark_Id, to handle cases where the
	subtype denotes a private subtype whose base type is nonprivate (needed
	for subtypes of private fulfilled by task types when compiling with
	-gnatc).

2011-08-31  Gary Dismukes  <dismukes@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): Bypass registration of
	late primitives that override interface operations when the full
	expander is not active, to avoid blowups in Register_Primitive when
	types don't have associated secondary dispatch tables.

2011-08-31  Yannick Moy  <moy@adacore.com>

	* alfa_test.adb: Code clean up.

2011-08-31  Marc Sango  <sango@adacore.com>

	* restrict.adb (Check_SPARK_Restriction): Change Comes_From_Source (N)
	by Comes_From_Source (Original_Node (N)) in order to treat also the
	nodes which have been rewritten.
	* sem_ch4.adb (Analyze_Explicit_Dereference, Analyze_Slice): Guard the
	explicit dereference and slice violation in spark mode on the nodes 
	coming only from the source code.

2011-08-31  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, exp_alfa.ads, prj.ads, sem_attr.adb,
	lib-xref-alfa.adb: Minor reformatting.

2011-08-31  Matthew Heaney  <heaney@adacore.com>

	* a-crbltr.ads (Tree_Type): Default-initialize the Nodes component.

2011-08-31  Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Try_Object_Operation): Addition of one formal to search
	only for class-wide subprograms conflicting with entities of concurrent
	tagged types.

2011-08-31  Matthew Heaney  <heaney@adacore.com>

	* a-rbtgbo.adb (Generic_Allocate): Initialize pointer components of
	node to null value.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Insert_Freeze_Node_For_Instance): Provide a more
	general description of the routine.

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* a-cbdlli.adb, a-cbdlli.ads: Add iterator machinery to bounded
	doubly-linked lists.

2011-08-31  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): When a discriminant
	check is needed for a left-hand side that is a dereference, and the
	base type is private without discriminants (whereas the full type does
	have discriminants), an extra retrieval of the underlying type may be
	needed in the case where the subtype is a record subtype whose base
	type is private. Update comments.

2011-08-31  Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Try_Object_Operation): When a dispatching primitive is
	found check if there is a class-wide subprogram covering the primitive.
	
2011-08-31  Yannick Moy  <moy@adacore.com>

	* sem_res.adb: Further cases where full expansion test is needed,
	rather than expansion test.

2011-08-31  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb: Fix Source_File_Switches attribute kind (must be a list)

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb: Handle iterators over derived container types.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.ads, einfo.adb: Add new flag Has_Anonymous_Master.
	(Has_Anonymous_Master): New routine.
	(Set_Has_Anonymous_Master): New routine.
	(Write_Entity_Flags): Add an entry for Has_Anonymous_Master.
	* exp_ch4.adb: Add with and use clause for Sem_Ch8.
	(Current_Anonymous_Master): New routine.
	(Current_Unit_First_Declaration): Removed.
	(Current_Unit_Scope): Removed.
	(Expand_N_Allocator): Anonymous access-to-controlled types now chain
	their objects on a per-unit heterogeneous finalization master.

2011-08-31  Matthew Heaney  <heaney@adacore.com>

	* a-cbhama.adb, a-cbhase.adb (Insert): Check for zero-length buckets
	array.

2011-08-31  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-linux.adb (Create_Task): Avoid changing the affinity mask
	when not needed.

2011-08-31  Gary Dismukes  <dismukes@adacore.com>

	* sem_disp.adb (Propagate_Tag): Return without propagating in the case
	where the actual is an unexpanded call to 'Input.

2011-08-31  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb: Code clean up.

2011-08-31  Yannick Moy  <moy@adacore.com>

	* exp_alfa.adb, exp_alfa.ads: Minor correction of copyright notice.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Array_Deep_Procs): Do not generate Deep_Finalize
	and TSS primitive Finalize_Address if finalization is suppressed.
	(Build_Record_Deep_Procs): Do not generate Deep_Finalize and TSS
	primitive Finalize_Address if finalization is suppressed.

2011-08-31  Jose Ruiz  <ruiz@adacore.com>

	* s-mudido-affinity.adb, s-taprop-linux.adb, s-taprop-mingw.adb,
	s-taprop-solaris.adb, s-taprop-vxworks.adb (Set_Task_Affinity): Make
	sure that the underlying task has already been created before trying
	to change its affinity.
	(Set_CPU): Use the term processor instead of CPU, as we do in
	Assign_Task.

2011-08-31  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New Compiler attribute Source_File_Switches.
	* prj-nmsc.adb (Process_Compiler): Process attribute
	Source_File_Switches.
	* prj.ads (Language_Config): New name list component
	Name_Source_File_Switches.
	* snames.ads-tmpl (Name_Source_File_Switches): New standard name.

2011-08-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Old): If prefix may be a
	discriminated component of an actual, expand at once to prevent
	ouf-of-order references with generated subtypes.

2011-08-31  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Add_Alfa_Xrefs): Do not take into account read
	reference to operator in Alfa xrefs.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Freeze_Subprogram_Body): Add code to handle the case
	where the parent instance was frozen before the current instance due to
	the presence of a source body. Update calls to Insert_After_Last_Decl.
	(Insert_After_Last_Decl): Renamed to Insert_Freeze_Node_For_Instance.
	Update the comment which illustrates the purpose of the routine.
	Package instances are now frozen by source bodies which appear after
	the instance. This ensures that entities coming from within the
	instance are available for use in the said bodies.
	(Install_Body): Add code to handle the case where the parent instance
	was frozen before the current instance due to the presence of a source
	body. Update calls to Insert_After_Last_Decl.

2011-08-31  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-linux.adb (Set_Task_Affinity): Avoid the use of anonymous
	access types.
	* affinity.c (__gnat_set_affinity_mask): Declare index variable.

2011-08-31  Yannick Moy  <moy@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Refine expander test in
	full-expander test.
	* alfa.adb, alfa.ads, alfa_test.adb, ali.adb, debug.adb, errout.adb,
	errout.ads, erroutc.adb, expander.adb, exp_ch4.adb, exp_ch7.adb,
	freeze.adb, get_alfa.adb, get_alfa.ads, gnat1drv.adb, lib-writ.adb,
	lib-writ.ads, lib-xref.adb, lib-xref.ads, lib-xref-alfa.adb, opt.adb,
	opt.ads, put_alfa.adb, put_alfa.ads, restrict.adb, sem_ch12.adb,
	sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb,
	sem_prag.adb, sem_res.adb, sem_util.adb: Minor reformatting, renaming
	ALFA in Alfa (we dropped acronym).
	* einfo.adb (Primitive_Operations): Correctly return list of primitive
	operations in a case where it returned previously No_Elist.

2011-08-31  Robert Dewar  <dewar@adacore.com>

	* s-taprop-vxworks.adb, sem_ch5.adb, s-taprop-tru64.adb, exp_alfa.adb,
	s-taprop-vms.adb, bindgen.adb, s-mudido.adb, s-mudido.ads,
	sem_res.adb, expander.adb, s-taprop-mingw.adb, s-taprop-linux.adb,
	s-taprop-solaris.adb, s-mudido-affinity.adb, vms_conv.adb,
	s-taprop-irix.adb, s-taprop.ads, s-taskin.adb, s-taskin.ads,
	s-taprop-hpux-dce.adb, a-chtgbo.adb, s-taprop-posix.adb: Minor
	reformatting.

2011-08-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12 (Check_Private_View): Revert previous change.
	* sem_res.adb (Conversion_Check): Do not emit the error message if the
	conversion is in a generic instance.

2011-08-31  Matthew Heaney  <heaney@adacore.com>

	* a-cbhase.adb (Symmetric_Difference): Dereference correct node array.
	* a-chtgbo.adb (Free): Allow 0 as index value.

2011-08-31  Matthew Heaney  <heaney@adacore.com>

	* a-cborma.adb (Insert): Add comment to explain why no element
	assignment.

2011-08-31  Gary Dismukes  <dismukes@adacore.com>

	* sem_util.adb (Find_Body_Discriminal): Test whether the scope of the
	spec discriminant is already a concurrent type, in which case just use
	it, otherwise fetch the Corresponding_Concurrent_Type as before.

2011-08-30  Eric Botcazou  <ebotcazou@adacore.com>

	* system-irix-n64.ads, system-linux-armeb.ads, system-linux-armel.ads,
	system-linux-mips.ads, system-linux-mipsel.ads,
	system-linux-mips64el.ads, system-linux-ppc64.ads,
	system-linux-sparcv9.ads, system-rtems.ads: Remove GCC_ZCX_Support.

2011-08-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/ada-tree.h (TYPE_EXTRA_SUBTYPE_P): Add internal check.
	* gcc-interface/utils2.c (build_binary_op): Tighten condition.
	(build_unary_op): Likewise.

2011-08-30  Eric Botcazou  <ebotcazou@adacore.com>

	* raise-gcc.c: Do not include coretypes.h and tm.h.
	(setup_to_install): Remove test for compiler macro.
	* targext.c: Document use for the library.
	* gcc-interface/Makefile.in: Fix comment on the use of IN_GCC.

2011-08-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not convert
	the expression to the nominal type if the latter is a record type with
	a variant part and the type of the former is a record type without one.

2011-08-30  Yannick Moy  <moy@adacore.com>

	* exp_aggr.adb, exp_ch11.adb, exp_prag.adb: Remove early exit during
	expansion in Alfa mode.
	* exp_ch6.adb, exp_ch6.ads (Expand_Actuals): Make subprogram public
	* exp_alfa.adb, exp_alfa.ads: New package defining light expansion for
	Alfa mode.
	* gnat1drv.adb (Adjust_Global_Switches): Update Comment.
	* sem_res.adb: Ditto.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-30  Thomas Quinot  <quinot@adacore.com>

	* g-socket.ads: Minor documentation adjustment.

2011-08-30  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, s-tassta.adb, s-secsta.adb: Minor reformatting.

2011-08-30  Yannick Moy  <moy@adacore.com>

	* exp_ch6_light.adb, exp_ch6_light.ads, exp_attr_light.adb,
	exp_attr_light.ads, exp_ch7_light.adb, exp_ch7_light.ads,
	exp_light.adb, exp_light.ads, exp_prag.adb, expander.adb,
	gnat1drv.adb, exp_ch11.adb, exp_ch6.adb, exp_ch6.ads, exp_aggr.adb:
	Revert change which introduced files for "light"
	expansion, to be replaced by a single file for Alfa expansion.

2011-08-30  Robert Dewar  <dewar@adacore.com>

	* opt.ads, s-soflin.adb, exp_ch9.adb, sem_res.adb: Update comment.
	Minor code reorg/reformatting.

2011-08-30  Yannick Moy  <moy@adacore.com>

	* opt.adb, opt.ads (Full_Expander_Active): New function defines a
	common shorthand for (Expander_Active and not ALFA_Mode) that can be
	used for testing full expansion, that is active expansion not in the
	reduced mode for Alfa
	* exp_ch4.adb, exp_ch9.adb, exp_disp.adb, sem_ch10.adb, sem_ch12.adb,
	sem_ch6.adb, sem_ch9.adb, sem_res.adb: Use newly defined "flag" instead
	of the verbose (Expander_Active and not ALFA_Mode)

2011-08-30  Tristan Gingold  <gingold@adacore.com>

	* s-parame-vms-alpha.ads, s-parame-hpux.ads, s-tassta.adb,
	s-tarest.adb, s-parame-vms-ia64.ads, s-soflin.adb, s-secsta.adb,
	s-secsta.ads, s-parame.ads, s-parame-vxworks.ads, s-parame-ae653.ads:
	Renames Ratio to Percentage, and Sec_Stack_Ratio to Sec_Stack_Percentage

2011-08-30  Gary Dismukes  <dismukes@adacore.com>

	* sem_res.adb (Valid_Conversion): Revise test for implicit anonymous
	access conversions to check that the conversion is a rewritten node,
	rather than just having Comes_From_Source set to False, which wasn't
	sufficient.

2011-08-30  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, sem_ch9.adb, sem_ch6.adb, exp_disp.adb,
	g-socket.ads: Minor reformatting.

2011-08-30  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb: Minor reformatting.

2011-08-30  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c: Never catch exception if _UA_FORCE_UNWIND flag is set,
	to be compliant with the ABI.

2011-08-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.adb (Check_Private_View): Exchange the private and full view
	of a designated type when the related access type is an actual in an
	instance. This ensures that the full view of designated type is
	available when inside the body of the instance.

2011-08-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (May_Be_Lvalue): To determine whether a reference may be
	in a position to be modified, a slice is treated like an indexed
	component.

2011-08-30  Thomas Quinot  <quinot@adacore.com>

	* s-oscons-tmplt.c, g-socket.ads: Adjust maximum allowed value for
	field tv_sec in struct timeval.

2011-08-30  Yannick Moy  <moy@adacore.com>

	* exp_ch9.adb, exp_disp.adb, sem_ch9.adb, sem_res.adb: Protect several
	blocks of code doing full expansion, previously only guarded by
	Expander_Active, by anding the test that ALFA_Mode is not set

2011-08-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Return_Type): If the return type is incomplete,
	add the function to the list of private dependents, for subsequent
	legality check on Taft amendment types.
	* sem_ch12.adb (Analyze_Formal_Incomplete_Type): Initialize
	Private_Dependents, as for other incomplete types.
	* sem_util.adb (Wrong_Type): Avoid cascaded errors when a
	Taft-amendment type is used as the return type of a function.

2011-08-30  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Check_Abstract_Overriding): Code cleanup: replace code
	which emits an error by a call to a new routine which report the error.
	* exp_ch9.adb (Build_Wrapper_Spec): Build the wrapper even if the
	entity does not cover an existing interface.
	* errout.ads, errout.adb (Error_Msg_PT): New routine. Used to factorize
	code.
	* sem_ch6.adb (Check_Conformance): Add specific error for wrappers of
	protected procedures or entries whose mode is not conformant.
	(Check_Synchronized_Overriding): Code cleanup: replace code which emits
	an error by a call to a new routine which report the error.

2011-08-30  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor change.
	* exp_attr_light.adb: Minor reformatting.

2011-08-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: Patch inheritance of aspects in
	Complete_Private_Subtype, to avoid infinite loop.

2011-08-30  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Add_Internal_Interface_Entities): If serious errors have
	been reported and a subprogram covering an interface primitive is not
	found then skip generating the internal entity. Done to avoid crashing
	the frontend.
	(Check_Abstract_Overriding): Change text of error of wrong formal of
	protected subprogram or entry. Done for consistency to emit exactly the
	same error reported by Check_Synchronized_Overriding. In addition, the
	error is restricted to protected types (bug found working on AI05-0090)

2011-08-30  Yannick Moy  <moy@adacore.com>

	* exp_aggr.adb, exp_ch11.adb, exp_prag.adb: Remove early exit during
	expansion in Alfa mode.
	* exp_ch6.adb, exp_ch6.ads (Expand_Actuals): Make subprogram public.
	* exp_light.adb, exp_light.ads: New package defining light expansion.
	* expander.adb (Expand): Call light expansion in Alfa mode
	* exp_ch6_light.adb, exp_ch6_light.ads: Light expansion of chapter 6
	constructs.
	* exp_ch7_light.adb, exp_ch7_light.ads: Light expansion of chapter 7
	constructs.
	* exp_attr_light.adb, exp_attr_light.ads: Light expansion of attributes
	* gnat1drv.adb (Adjust_Global_Switches): Comment

2011-08-30  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb: Minor refactoring.

2011-08-30  Yannick Moy  <moy@adacore.com>

	* exp_ch9.adb (Expand_Entry_Barrier): Do not perform expansion in Alfa
	mode.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not perform
	expansion in Alfa mode.
	* sem_ch9.adb (Analyze_Entry_Body): Do not perform expansion in Alfa
	mode.

2011-08-30  Robert Dewar  <dewar@adacore.com>

	* debug_a.adb: Update comment.

2011-08-30  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, sem_ch3.adb, sem_ch5.adb, einfo.adb, checks.adb,
	sem_util.adb, sem_util.ads, sem_res.adb, s-stposu.adb, sem_attr.adb,
	exp_ch4.adb, exp_ch6.adb, lib-xref-alfa.adb,
	sem_ch8.adb, sem_disp.adb, exp_ch3.adb: Minor reformatting

2011-08-30  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Add section on C.6(16) implementation advice for pragma
	volatile.

2011-08-30  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_Freeze_Array_Type): Correct the call to
	Build_Finalization_Master by supplying an insertion node and enclosing
	scope. In its old version, the call did not generate a finalization
	master.
	(Expand_Freeze_Record_Type): Add local variable Has_AACC. Add code to
	recognize anonymous access-to-controlled components. Rewrite the
	machinery which creates finalization masters to service anonymous
	access-to-controlled components of a record type. In its current state,
	only one heterogeneous master is necessary to handle multiple anonymous
	components.
	(Freeze_Type): Comment reformatting.
	* rtsfind.ads: Add RE_Set_Is_Heterogeneous to tables RE_Id and
	RE_Unit_Table.
	* s-stposu.adb (Allocate_Any_Controlled): Rewrite the machinery which
	associates TSS primitive Finalize_Address with either the master itself
	or with the internal hash table depending on the mode of operation of
	the master.

2011-08-30  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Make_Eq_If): If the etype of the _parent component is an
	interface type then do not generate code to compare this component.
	Required since they have no components and their equality operator is
	abstract.

2011-08-30  Steve Baird  <baird@adacore.com>

	* sem_util.ads (Deepest_Type_Access_Level): New function; for the type
	of a saooaaat (i.e, a stand-alone object of an anonymous access type),
	returns the (static) accessibility level of the object. Otherwise, the
	same as Type_Access_Level.
	(Dynamic_Accessibility_Level): New function; given an expression which
	could occur as the rhs of an assignment to a saooaaat (i.e., an
	expression of an access-to-object type), return the new value for the
	saooaaat's associated Extra_Accessibility object.
	(Effective_Extra_Accessibility): New function; same as
	Einfo.Extra_Accessibility except that object renames are looked through.
	* sem_util.adb 
	(Deepest_Type_Access_Level): New function; see sem_util.ads description.
	(Dynamic_Accessibility_Level): New function; see sem_util.ads
	description.
	(Effective_Extra_Accessibility): New function; see sem_util.ads
	description.
	* einfo.ads (Is_Local_Anonymous_Access): Update comments.
	(Extra_Accessibility): Update comments.
	(Init_Object_Size_Align): New procedure; same as Init_Size_Align
	except RM_Size field (which is only for types) is unaffected.
	* einfo.adb
	(Extra_Accessibility): Expand domain to allow objects, not just formals.
	(Set_Extra_Accessibility): Expand domain to allow objects, not just
	formals.
	(Init_Size): Add assertion that we are not trashing the
	Extra_Accessibility attribute of an object.
	(Init_Size_Align): Add assertion that we are not trashing the
	Extra_Accessibility attribute of an object.
	(Init_Object_Size_Align): New procedure; see einfo.ads description.
	* sem_ch3.adb (Find_Type_Of_Object): Set Is_Local_Anonymous_Access
	differently for the type of a (non-library-level) saooaaat depending
	whether Ada_Version < Ada_2012. This is the only point where Ada_Version
	is queried in this set of changes - everything else (in particular,
	setting of the Extra_Accessibility attribute in exp_ch3.adb) is
	driven off of the setting of the Is_Local_Anonymous_Access attribute.
	The special treatment of library-level saooaaats is an optimization,
	not required for correctnesss. This is based on the observation that the
	Ada2012 rules (static and dynamic) for saooaaats turn out to be
	equivalent to the Ada2005 rules in the case of a library-level saooaaat.
	* exp_ch3.adb
	(Expand_N_Object_Declaration): If Is_Local_Anonymous_Access is
	false for the type of a saooaaat, declare and initialize its
	accessibility level object and set the Extra_Accessibility attribute
	of the saooaaat to refer to this object.
	* checks.adb (Apply_Accessibility_Check): Add Ada 2012 saooaaat support.
	* exp_ch4.adb (Expand_N_In): Replace some Extra_Accessibility calls with
	calls to Effective_Extra_Accessibility in order to support
	renames of saooaaats.
	(Expand_N_Type_Conversion): Add new local function,
	Has_Extra_Accessibility, and call it when determining whether an
	accessibility check is needed.
	It returns True iff Present (Effective_Extra_Accessibility (Id)) would
	evaluate to True (without raising an exception).
	* exp_ch5.adb
	(Expand_N_Assignment_Statement): When assigning to an Ada2012
	saooaaat, update its associated Extra_Accessibility object (if
	it has one). This includes an accessibility check.
	* exp_ch6.adb (Add_Call_By_Copy_Code): When parameter copy-back updates
	a saooaaat, update its Extra_Accessibility object too (if it
	has one).
	(Expand_Call): Replace a couple of calls to Type_Access_Level
	with calls to Dynamic_Access_Level to handle cases where
	passing a literal (any literal) is incorrect.
	* sem_attr.adb (Resolve_Attribute): Handle the static accessibility
	checks associated with "Saooaat := Some_Object'Access;"; this must
	be rejected if Some_Object is declared in a more nested scope
	than Saooaat.
	* sem_ch5.adb (Analyze_Assignment): Force accessibility checking for an
	assignment to a saooaaat even if Is_Local_Anonymous_Access
	returns False for its type (indicating a 2012-style saooaaat).
	* sem_ch8.adb
	(Analyze_Object_Renaming): Replace a call to Init_Size_Align
	(which is only appropriate for objects, not types) with a call
	of Init_Object_Size_Align in order to avoid trashing the
	Extra_Accessibility attribute of a rename (the two attributes
	share storage).
	* sem_res.adb
	(Valid_Conversion) Replace six calls to Type_Access_Level with
	calls to Deepest_Type_Access_Level. This is a bit tricky. For an
	Ada2012 non-library-level saooaaat, the former returns library level
	while the latter returns the (static) accessibility level of the
	saooaaat. A type conversion to the anonymous type of a saooaaat
	can only occur as part of an assignment to the saooaaat, so we
	know that such a conversion must be in a lhs context, so Deepest
	yields the result that we need. If such a conversion could occur,
	say, as the operand of an equality operator, then this might not
	be right. Also add a test so that static accessibilty checks are
	performed for converting to a saooaaat's type even if
	Is_Local_Anonymous_Access yields False for the type.

2011-08-30  Javier Miranda  <miranda@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): Complete condition that
	controls generation of a warning associated with late declaration of
	dispatching functions. Required to avoid generating spurious
	warnings.

2011-08-30  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Check_Return_Subtype_Indication): Issue error if the
	return object has an anonymous access type and the function's type is
	a named access type.
	* sem_ch8.adb (Analyze_Object_Renaming): Suppress error about renaming
	conversions on implicit conversions, since such conversions can occur
	for anonymous access cases due to expansion. Issue error for attempt
	to rename an anonymous expression as an object of a named access type.
	* sem_res.ads (Valid_Conversion): Add defaulted parameter Report_Errs,
	to indicate whether this function should report errors on invalid
	conversions.
	* sem_res.adb (Resolve): For Ada 2012, in the case where the type of
	the expression is of an anonymous access type and the expected type is
	a named general access type, rewrite the expression as a type
	conversion, unless this is an expression of a membership test.
	(Valid_Conversion.Error_Msg_N): New procedure that conditions the
	calling of Error_Msg_N on new formal Report_Errs.
	(Valid_Conversion.Error_Msg_NE): New procedure that conditions the
	calling of Error_Msg_NE on new formal Report_Errs.
	(Valid_Conversion): Move declaration of this function to the package
	spec, to allow calls from membership test processing. For Ada 2012,
	enforce legality restrictions on implicit conversions of anonymous
	access values to general access types, disallowing such conversions in
	cases where the expression has a dynamic accessibility level (access
	parameters, stand-alone anonymous access objects, or a component of a
	dereference of one of the first two cases).
	* sem_type.adb (Covers): For Ada 2012, allow an anonymous access type
	in the context of a named general access expected type.
	* exp_ch4.adb Add with and use of Exp_Ch2.
	(Expand_N_In): Add processing for membership tests applied to
	expressions of an anonymous access type. First, Valid_Conversion is
	called to check whether the test is statically False, and then the
	conversion is expanded to test that the expression's accessibility
	level is no deeper than that of the tested type. In the case of
	anonymous access-to-tagged types, a tagged membership test is applied
	as well.
	(Tagged_Membership): Extend to handle access type cases, applying the
	test to the designated types.
	* exp_ch6.adb (Expand_Call): When creating an extra actual for an
	accessibility level, and the actual is a 'Access applied to a current
	instance, pass the accessibility level of the type of the current
	instance rather than applying Object_Access_Level to the prefix. Add a
	??? comment, since this level isn't quite right either (will eventually
	need to pass an implicit level parameter to init procs).

2011-08-30  Bob Duff  <duff@adacore.com>

	* s-taskin.ads: Minor comment fix.

2011-08-30  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Check_Parameterless_Call): If the node is a selected
	component and the selector is a dispatching operation, check if it is
	a prefixed call before rewriting as a parameterless function call.

2011-08-29  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/Makefile.in (../stamp-gnatlib1-$(RTSDIR)): Copy
	tsystem.h into $(RTSDIR) instead of rts.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch10.adb, a-coorse.adb, exp_dist.adb, exp_ch3.adb: Minor
	reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* alfa.ads (Name_Of_Heap_Variable): New constant name.
	* lib-xref-alfa.adb, lib-xref.adb, lib-xref.ads (Drefs): New global
	table to hold dereferences.
	(Add_ALFA_Xrefs): Take into account dereferences as special
	reads/writes to the variable "HEAP".
	(Enclosing_Subprogram_Or_Package): Move subprogram here.
	(Generate_Dereference): New procedure to store a read/write dereferencew
	in the table Drefs.
	* put_alfa.adb (Put_ALFA): Use different default than (0,0) used for
	the special "HEAP" var.
	* sem_ch4.adb (Analyze_Explicit_Dereference): Store read dereference
	in ALFA mode.
	* sem_util.adb (Note_Possible_Modification): Store write dereference
	in ALFA mode.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Freeze_Type): Generate an accessibility check which
	ensures that the level of the subpool access type is not deeper than
	that of the pool object.
	* sem_util.adb (Object_Access_Level): Expand to handle defining
	identifiers.
	* sem_res.adb (Resolve_Allocator): Add a guard to avoid examining the
	subpool handle name of a rewritten allocator.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* impunit.adb, exp_ch4.adb, s-finmas.adb: Minor reformatting.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (TC_Rec_Add_Process_Element): For a choice with multiple
	values, we generate multiple triples of parameters in the TypeCode.
	Bump Choice_Index for each such triple so that a subsequent default
	choice is associated with the correct index in the typecode.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* a-cdlili.adb (Iterate): Initialize properly an iterator over a null
	container.
	(First, Last): Handle properly an iterator over a null container.

2011-08-29  Bob Duff  <duff@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause,Install_Withed_Unit): Abandon
	processing if we run across a node with no Scope. This can happen if
	we're with-ing an library-level instance, and that instance got errors
	that caused "instantiation abandoned".
	* sem_util.adb (Unit_Declaration_Node): Make it more robust, by raising
	an exception instead of using Assert, so it won't go into an infinite
	loop, even when assertions are turned off.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* a-coorse.adb: Proper handling of empty ordered sets.

2011-08-29  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: Add comments.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* a-except.adb, a-except-2005.adb: Minor comment rewording and
	reformatting.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Remove insertion of
	declaration for Itypes in Alfa mode.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-cdlili.ads, a-coinve.ads, a-coorma.adb, a-coorma.ads, s-tassta.adb,
	a-cborma.adb, a-cborma.ads, a-cohama.ads, a-coorse.ads, a-cbhama.ads,
	a-cborse.ads, a-cobove.adb, a-cobove.ads, a-cbhase.ads: Minor
	reformatting.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch7.adb, exp_ch7.ads (Build_Exception_Handler): Move its spec to
	package spec.
	* exp_intr.adb (Expand_Unc_Deallocation): Use Build_Exception_Handler.
	* a-except.adb, a-except-2005.adb (Rcheck_22): Do not defer aborts
	while raising PE.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-cbhama.adb, a-cbhama.ads: Minor reformatting.

2011-08-29  Javier Miranda  <miranda@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Complete support for
	renamings of formal subprograms when the actual for a formal type is
	class-wide.

2011-08-29  Matthew Heaney  <heaney@adacore.com>

	* a-cbhama.ads, a-cbhase.ads (Move): Clear Source following assignment
	to Target.

2011-08-29  Matthew Heaney  <heaney@adacore.com>

	* a-cborma.ads, a-cborse.ads (Cursor): Default-initialize all
	components of record type.
	* a-cborma.adb, a-cborse.adb (Move): Clear Source following assignmentw
	to Target.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* a-cbhama.adb, a-cbhama.ads, a-cborma.adb, a-cborma.ads, a-cobove.adb,
	a-cobove.ads, a-coorma.adb, a-coorma.ads: Add iterator machinery to
	container packages.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_util.adb, gnat1drv.adb, s-parint.ads: Minor
	reformatting.

2011-08-29  Matthew Heaney  <heaney@adacore.com>

	* a-cbhama.ads, a-cbhase.ads (Cursor): Default-initialize all
	components of record type.

2011-08-29  Bob Duff  <duff@adacore.com>

	* s-tassta.adb (Task_Wrapper): Handle and ignore exceptions propagated
	by the termination handler.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Create declarations for Itypes
	created in Alfa mode, instead of inserting artificial declarations of
	non-Itypes in the tree.
	* sem_util.adb, sem_util.ads (Itype_Has_Declaration): New function to
	know if an Itype has a corresponding declaration, as defined in
	itypes.ads.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb: Minor rewrite.

2011-08-29  Bob Duff  <duff@adacore.com>

	* s-tasuti.adb (Make_Passive): Work around race condition in
	Make_Independent, which can cause Wait_Count to be zero. So instead of
	asserting that Wait_Count > 0, and then decrementing it, decrement it
	only if Wait_Count > 0.
	* s-taskin.ads (Wait_Count, Alive_Count, Awake_Count): All of these
	should be nonnegative, so declare them Natural instead of Integer.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, sem_ch3.adb, a-cihama.adb, a-cihama.ads, exp_ch7.adb,
	sem_ch5.adb, a-ciorse.adb, a-ciorse.ads, sem_ch12.adb, a-cidlli.adb,
	a-cidlli.ads, sem_util.adb, sem_res.adb, gnat1drv.adb, a-except.adb,
	a-except.ads, a-except-2005.ads, sem_ch4.adb, exp_disp.adb,
	exp_aggr.adb, sem_ch13.adb, par-ch3.adb: Minor reformatting.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* s-auxdec-vms-alpha.adb: Add comments, remove some HT before labels.

2011-08-29  Vadim Godunko  <godunko@adacore.com>

	* s-parint.ads: Minor comment clarification.

2011-08-29  Vincent Celier  <celier@adacore.com>

	* prj.adb (Initialize): Make sure that new reserved words after Ada 95
	may be used as identifiers.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* a-coinho.ads: Minor reformating.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): Handle properly a loop over a
	container of a derived type.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* a-cidlli.adb, a-cidlli.ads, a-cihama.adb, a-cihama.ads,
	a-ciorse.adb, a-ciorse.ads: Add iterator machinery to containers.

2011-08-29  Pascal Obry  <obry@adacore.com>

	* exp_disp.adb: Minor comment fix.
	(Make_Disp_Asynchronous_Select_Body): Properly initialize out parameters
	to avoid warnings when compiling with -Wall.
	(Make_Disp_Conditional_Select_Body): Likewise.
	(Make_Disp_Timed_Select_Body): Likewise.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Subprogram_Declaration): If default is
	an entity name, generate reference for it.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): Uniform handling of "X of S"
	iterator form.
	* sem_util.adb (Is_Iterator, Is_Reversible_Iterator): Yield True for
	the class-wide type.
	* sem_ch5.adb: Move some rewriting to the expander, where it belongs.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Check_Constrained_Object): Do not create an actual
	subtype for an object whose type is an unconstrained union.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* par-ch3.adb (P_Array_Type_Definiation, P_Component_Items): "aliased"
	is allowed in a component definition, by AI95-406.

2011-08-29  Matthew Heaney  <heaney@adacore.com>

	* a-chtgbo.adb (Generic_Iteration): Use correct overloading of Next.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-except-2005.adb: Alphabetize all routines.
	(Triggered_By_Abort): New routine.
	* a-except-2005.ads (Triggered_By_Abort): New routine.
	* a-except.adb Alphabetize all routines.
	(Triggered_By_Abort): New routine.
	* a-except.ads (Triggered_By_Abort): New routine.
	* exp_ch7.adb: Update all comments involving the detection of aborts in
	finalization code.
	(Build_Object_Declarations): Do not generate code to detect the
	presence of an abort at the start of finalization code, use a runtime
	routine istead.
	* rtsfind.ads: Add RE_Triggered_By_Abort to tables RE_Id and
	RE_Unit_Table.
	* sem_res.adb (Resolve_Allocator): Emit a warning when attempting to
	allocate a task on a subpool.
	* s-stposu.adb: Add library-level flag Finalize_Address_Table_In_Use.
	The flag disables all actions related to the maintenance of
	Finalize_Address_Table when subpools are not in use.
	(Allocate_Any_Controlled): Signal the machinery that subpools are in
	use.
	(Deallocate_Any_Controlled): Do not call Delete_Finalize_Address which
	performs costly task locking when subpools are not in use.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Restore expansion of tagged
	types and dispatching calls in Alfa mode.
	* lib-xref-alfa.adb (Collect_ALFA): Rewrite computation of
	correspondance between body and spec scopes, to reuse utility functions
	(Traverse_Declarations_Or_Statements): Protect access to body for stub
	by testing the presence of the library unit for the body
	* sem_ch6.adb (Set_Actual_Subtypes): take into account that in Alfa
	mode the expansion of accept statements is skipped
	* sem_util.adb, sem_util.ads (Unique_Entity): New function returning
	the unique entity corresponding to the one returned by
	Unique_Defining_Entity applied to the enclosing declaration of the
	argument.

2011-08-29  Bob Duff  <duff@adacore.com>

	* treepr.ads: Improve debugging facilities. pn(x) no longer crashes in
	gdb when x is not a node (it can be a node list, name_id, etc). pp is
	an alias for pn. ppp is an alias for pt.

2011-08-29  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Expand_Record_Aggregate): Use the top-level enclosing
	aggregate to take a consistent decision on the need to convert into
	assignments aggregates that initialize constant objects.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Add a call to
	Build_Allocate_Deallocate_Proc in order to handle allocation of
	non-controlled objects on subpools.
	* impunit.adb: Remove s-finmas and s-spsufi since they were never meant
	to be end-user visible.
	* s-finmas.adb: Add with and use clause for System.HTable.
	Add an instantiation of Simple_HTable which provides a mapping between
	the address of a controlled object and the corresponding
	Finalize_Address used to clean up the object. The table is used when a
	master is operating in heterogeneous mode.
	(Attach): Explain why the input node is not verified on being already
	attached.
	(Delete_Finalize_Address): New routine.
	(Detach): Add pragma Assert which ensures that a node is already
	attached.
	(Finalize): Add local variable Cleanup. Rewrite the iteration scheme
	since nodes are no longer removed on traversal. Explain why node
	detachment is undesirable in this case.
	(Get_Finalize_Address): New routine.
	(Hash): New routine.
	(Is_Empty_List): Removed.
	(pm): Renamed to Print_Master. Add output for discriminant
	Is_Homogeneous.
	Comment reformatting.
	(Set_Finalize_Address (Address, Finalize_Address_Ptr)): New routine.
	* s-finmas.ads: Various comments additions / improvements.
	Type Finalization_Master has a discriminant which determines the mode of
	operation.
	(Delete_Finalize_Address): New routine.
	(Get_Finalize_Address): New routine.
	(pm): Renamed to Print_Master.
	(Set_Finalize_Address (Address, Finalize_Address_Ptr)): New routine.
	* s-stposu.adb: Add with clause for System.Address_Image; Add with and
	use clause for System.IO.
	(Allocate_Any_Controlled): Add machinery to set TSS primitive
	Finalize_Address depending on the mode of allocation and the mode of
	the master.
	(Deallocate_Any_Controlled): Remove the relation pair object -
	Finalize_Address regardless of the master mode. Add comment explaining
	the reason.
	(Detach): Ensure that fields Prev and Next are null after detachment.
	(Finalize_Pool): Remove local variable Next_Ptr. Rewrite the iteration
	scheme to check whether the list of subpools is empty. There is no
	longer need to store the next subpool or advance the current pointer.
	(Is_Empty_List): New routine.
	(Print_Pool): New routine.
	(Print_Subpool): New routine.
	* s-stposu.ads: Various comments additions / improvements.
	Field Master of type Root_Subpool is now a heterogeneous collection.
	(Print_Pool): New routine.
	(Print_Subpool): New routine.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Iterator_Loop): Implement Ada2012 loop iterator
	forms, using aspects of container types.
	* sem_ch3.adb (Find_Type_Name): Preserve Has_Delayed_Aspects and
	Has_Implicit_Dereference flags, that may be set on the partial view.
	* sem_ch4.adb (Process_Overloaded_Indexed_Component): Prefix may be a
	container type with an indexing aspect.
	(Analyze_Quantified_Expression): Analyze construct with expansion
	disabled, because it will be rewritten as a loop during expansion.
	(Try_Container_Indexing): The prefix itself may be a container type
	with an indexing aspect, as with a vector of vectors.
	* sem_ch5.adb (Analyze_Iteration_Scheme): In a generic context, analyze
	the original doamin of iteration, for name capture.
	(Analyze_Iterator_Specification): If the domain is an expression that
	needs finalization, create a separate declaration for it.
	For an iterator with "of" retrieve default iterator info from aspect of
	container type. For "in" iterator, retrieve type of Iterate function.
	* sem_ch13.adb (Check_Iterator_Function): Fix typo.
	(Check_Aspect_At_End_Of_Declaration): Make type unfrozen before
	analysis, to prevent spurious errors about late attributes.
	* sprint.adb: Handle quantified expression with either loop or iterator
	specification.
	* a-convec.ads, a-convec.adb: Iterate function returns a reversible
	iterator.

2011-08-29  Vincent Celier  <celier@adacore.com>

	* make.adb (Scan_Make_Arg): Take any option as is in packages Compiler,
	Binder or Linker of the main project file.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* inline.adb (Add_Scopes_To_Clean): Exclude any entity within a generic
	unit.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_ch9.adb: Partial revert of previous change for Alfa mode

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_ch11.adb: Minor expansion of comment.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Add_ALFA_Scope): Treat generic entities.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Arithmetic_Op): If the node has a universal
	interpretation, set the type before resolving the operands, because
	legality checks on an exponention operand need to know the type of the
	context.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): Do not set delayed
	cleanups on a master if the instance is within a generic unit.
	Complement to the corresponding fix to inline.adb for K520-030.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* exp_ch7.adb (Build_Raise_Statement): Raise PE instead of the current
	occurrence.
	* exp_intr.adb: Minor comment fix.

2011-08-29  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Fix cases where
	Delay_Required was used as an uninitialized variable.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-cdlili.adb, a-cdlili.ads, a-coinve.adb, a-coinve.ads,
	sem_util.adb, sem_util.ads, a-cohama.adb, a-cohama.ads, a-coorse.adb,
	a-coorse.ads, aspects.ads, sem_ch8.adb: Minor reformatting.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* system-freebsd-x86_64.ads (Backend_Overflow_Checks): Set true True.
	Remove unused variables.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb: Remove Build_Explicit_Dereference.
	* sem_util.adb, sem_util.ads (Build_Explicit_Dereference): Moved here
	from sem_res.adb, used in analysis of additional constructs.
	(Is_Iterator, Is_Reversible_Iterator): New predicates for Ada2012
	expansion of iterators.
	(Is_Object_Reference): Recognize variables rewritten as explicit
	dereferences in Ada2012.
	* snames.ads-tmpl: Add Has_Element, Forward_Iterator,
	Reversible_Iterator names, for expansion of Ada2012 iterators.
	* aspects.ads, aspects.adb (Find_Aspect): Utility.
	* a-cdlili.ads, a-cdlili.adb: Add new iterator machinery to doubly
	linked list container.
	* a-coinve.ads, a-coinve.adb: Ditto for indefinite vector containers.
	* a-coorse.ads, a-coorse.adb: Ditto for ordered sets.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* a-cohama.adb, a-cohama.ads: Add iterator primitives to hashed map
	containers.

2011-08-29  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Get the maximum number of simultaneous
	compilation processes after the Builder switches has been scanned, as
	there may include -jnn.

2011-08-29  Matthew Heaney  <heaney@adacore.com>

	* a-chtgbo.adb (Generic_Equal): Use correct overloading of Next.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* gnatcmd.adb (GNATCmd): On OpenVMS, truncate the length of
	GNAT_DRIVER_COMMAND_LINE to 255.

2011-08-29  Pascal Obry  <obry@adacore.com>

	* freeze.adb, sem_ch8.adb, a-convec.adb, a-convec.ads: Minor
	reformatting and style fix (class attribute casing).

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_ch11.adb: Yet another case where expansion should be common
	between CodePeer and Alfa.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_ch9.adb: Partial revert of previous change for Alfa mode.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Matches_Limited_With_View): The limited views of an
	incomplete type and its completion match.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_ch13.adb: Adjust previous change.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb, prj.adb, sem_util.adb, sem_res.adb, gnat1drv.adb,
	exp_ch4.adb, sem_ch8.adb: Minor code reorganization
	Minor reformatting.

2011-08-29  Emmanuel Briot  <briot@adacore.com>

	* make.adb, prj.adb, prj.ads (Compute_All_Imported_Projects): Also
	initialize aggregated projects.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Renamed_Entity): Within an instance, use scope
	depth of candidates to resolve a potentially spurious ambiguity between
	two visible subprograms.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Allow Test_Case pragma without
	Requires/Ensures.
	* sem_util.adb (Get_Ensures_From_Test_Case_Pragma,
	Get_Requires_From_Test_Case_Pragma): Allow Test_Case pragma without
	Requires/Ensures.

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Improve previous change.
	Add comment.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting.

2011-08-29  Johannes Kanig  <kanig@adacore.com>

	* exp_ch4.adb (Expand_Quantified_Expression): Do not expand in ALFA
	mode.
	* gnat1drv.adb (Adjust_Global_Switches): Set
	Use_Expressions_With_Actions to False in ALFA mode.
	* sem_res.adb (Resolve_Quantified_Expression): Simpler treatment in
	ALFA mode.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_ch13.adb (Expand_N_Freeze_Entity): Do nothing in Alfa mode.
	* exp_ch9.adb: Do not expand tasking constructs in Alfa mode.
	* gnat1drv.adb (Adjust_Global_Switches): Suppress the expansion of
	tagged types and dispatching calls in Alfa mode.

2011-08-29  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Process_Discriminants): Add missing check to ensure that
	we do not report an error on an Empty node.

2011-08-29  Geert Bosch  <bosch@adacore.com>

	* Makefile.rtl (GNATRTL_NONTASKING_OBJECTS): Add a-nllrar.o,
	a-nlrear.o and a-nurear.o.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor code reorganization.
	Minor reformatting.
	* sem_util.adb, errout.adb, exp_ch11.adb, a-ngrear.adb, s-gearop.adb,
	sem_ch6.adb: Minor reformatting

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* s-except.ads, s-except.adb: Provide dummy body.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_warn.adb (Within_Postcondition): Take into account the case of
	an Ensures component in a Test_Case.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* s-excdeb.ads, s-excdeb.adb: New files, created from s-except.
	* rtsfind.ads (RTU_Id): Replaces System_Exceptions by
	System_Exceptions_Debug
	(RE_Unit_Table): Search RE_Local_Raise in System_Exceptions_Debug
	* a-except.adb: With and use System.Exceptions_Debug instead of
	System.Exceptions.
	* a-except-2005.adb: Likewise.
	* s-assert.adb: Likewise.
	* s-except.adb, s-except.ads: Move debugging hooks to s-excdeb.
	* Makefile.rtl: Add s-excdeb.  Adjust compilation rule.
	* gcc-interfaces/Makefile.in, gcc-interface/Make-lang.in: Add
	s-excdeb. Update dependencies.
	(GNATRTL_LINEARALGEBRA_OBJS): Remove a-nlrear.o a-nurear.o a-nllrar.o
	as these no longer need external libraries.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Op_Expon): Additional check to reject an
	exponentiation operator on universal values in a context that requires
	a fixed-point type.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (personnality_routine): Fix thinko.  Set Ada occurrence
	before calling notify_handled_exception.
	* a-exextr.adb: Fix comment.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Add code to set attribute
	Finalize_Address of the access type's finalization master.
	(Expand_N_Allocator): Add code to set attribute Finalize_Address of the
	access type's finalization master. Add a guard to prevent
	Associated_Storage_Pool from being set on .NET/JVM.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add code to set
	attribute Finalize_Address of the access type's finalization master.
	* exp_ch7.adb (Make_Finalize_Address_Call): New routine.
	* exp_ch7.ads (Make_Finalize_Address_Call): New routine.
	* rtsfind.ads: Add RE_Set_Finalize_Address to tables RE_Id and
	RE_Unit_Table.
	* s-finmas.adb: Add with clause for System.Address_Image. Add with and
	use clause for System.IO
	(Detach): Relax the assertion, to be reinstated later.
	(Finalize): Rewrite the iteration loop to avoid pointer comparison.
	Relax the assertion on Finalize_Address, to be reinstated later.
	(Is_Empty_List): New routine.
	(pm): New debug routine.
	(Set_Finalize_Address): New routine.
	* s-finmas.ads (pm): New debug routine.
	(Set_Finalize_Address): New routine.
	* s-stposu.adb (Allocate_Any_Controlled): Code reformatting.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (GCC_Exception_Access, GNAT_GCC_Exception_Access):
	Remove convention C.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* s-taprop-vms.adb (Get_Exc_Stack_Addr): Remove.
	(Initialize_TCB): Remove Exc_Stack_Ptr initialization.
	(Finalize_TCB): Remove its finalization.
	(Initialize): Remove assignment of GET_Exc_Stack_Addr
	* s-soflin.adb (NT_Exc_Stack): Remove
	(Get_Exc_Stack_Addr_NT): Likewise.
	(Get_Exc_Stack_Addr_Soft): Likewise.
	* s-soflin.ads (Get_Exc_Stack_Addr_NT): Remove.
	(Get_Exc_Stack_Addr): Likewise.
	(Get_Exc_Stack_Addr_Soft): Likewise
	* s-taspri-vms.ads (Exc_Stack_T): Remove.
	(Exc_Stack_Ptr_T): Likewise.
	(Private_Data): Remove Exc_Stack_Ptr component.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* raise-gcc.c (get_ip_from_context): New function. Factorize code.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* gnat_ugn.texi: Fix aix and x86-solaris info for run-time.

2011-08-29  Geert Bosch  <bosch@adacore.com>

	* s-gearop.ads (Back_Substitute, Diagonal, Forward_Eliminate,
	L2_Norm, Swap_Column): New generic subprograms
	* s-gearop.adb (Back_Substitute, Diagonal, Forward_Eliminate,
	L2_Norm, Swap_Column): Implement new subprograms in order to
	eliminate dependency on BLAS and LAPACK libraries in
	Ada.Numerics.Generic_Real_Arrays and eventually also the complex
	version. Forward_Eliminate/Back_Substitute can be used to put a
	matrix in row echelon or reduced row echelon form using partial
	pivoting.
	* a-ngrear.adb: (Back_Substitute, Diagonal, Forward_Eleminate,
	Swap_Column): Instantiate from System.Generic_Array_Operations.
	("*", "abs"): Implement by instantiation from Generic_Array_Operations.
	(Sqrt): Local function for simple computation of square root without
	adding dependencies on Generic_Elementary_Functions.
	(Swap): New subprogram to exchange floating point numbers.
	(Inverse): Reimplement using Jordan-Gauss elimination.
	(Jacobi): New procedure implementing Jacobi's method for computation
	of eigensystems, based on Rutishauser's implementation.
	(L2_Norm): Implement directly using the inner product.
	(Sort_Eigensystem): Sort eigenvalue/eigenvector pairs in order of
	decreasing eigenvalue as required by the Ada RM.
	(Swap_Column): New helper procedure for Sort_Eigensystem.
	Remove with of System.Generic_Real_BLAS and System.Generic_Real_LAPACK.
	Add with of Ada.Containers.Generic_Anonymous_Array_Sort, for
	Sort_Eigensystems.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* put_scos.adb (Put_SCOs): Do not emit a newline for an empty
	statements line.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-finmas.adb (Finalize): Check Finalize_Address of the master rather
	than the current node.
	* s-finmas.ads: Move field Finalize_Address from type FM_Node to
	Finalization_Master. The list headers have two fields instead of three.
	This should fix alignment issue but subpool allocations are now
	unusable. Alphabetize subprograms.
	* s-stposu.adb (Allocate_Any_Controlled): Use the offset rather than
	the size of the header when converting the beginning of the object to
	a FM_Node. Set the master's Finalize_Address attribute if not already
	set.
	(Deallocate_Any_Controlled): Use the offset rather than the size of the
	header when converting the beginning of the object to a FM_Node.

2011-08-29  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch11.adb (Expand_N_Raise_Statement): Don't suppress expansion of
	reraise when compiling for CodePeer.

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

	* a-iteint.ads, Makefile.rtl: Add missing compilation of a-iteint.ads,
	now needed by a-convec.adb. Fix warning.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Build_Allocate_Deallocate_Proc): Add a guard for the
	processing of TSS routine Finalize_Address when compiling in
	CodePeer_Mode.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* a-strunb.ads, einfo.ads, g-comlin.ads, sem_ch6.adb,
	sem_warn.adb: Minor reformatting.

2011-08-29  Emmanuel Briot  <briot@adacore.com>

	* prj-conf.adb (Get_Config_Switches): Also collect the list of
	languages from aggregated projects.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb, lib-xref.ads (Traverse_Declarations_Or_Statements,
	Traverse_Handled_Statement_Sequence, Traverse_Package_Body,
	Traverse_Package_Declaration, Traverse_Subprogram_Body,
	Traverse_Compilation_Unit): Add a parameter Inside_Stubs so that bodies
	for stubs are traversed too when parameter is set
	(Traverse_All_Compilation_Units): Traverse without going inside stubs
	(Traverse_Declarations_Or_Statements): Do the special traversing for
	stubs when required.
	* sem_util.adb, sem_util.ads (Get_Body_From_Stub): New function to
	return subprogram or package body from stub.
	(Is_Subprogram_Stub_Without_Prior_Declaration): New function to detect
	stubs without prior subprogram decl.

2011-08-29  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnat_ugn.texi: Fix typo.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* s-stposu.adb (Allocate_Any_Controlled): Reimplement the mechanism
	which accounts for size vs alignment issues and calculates the size of
	the list header.
	(Deallocate_Any_Controlled): Ditto.
	(Nearest_Multiple_Rounded_Up): New routine.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exstat.adb (String_To_EO): Do no set Cleanup_Flag.
	* a-exexda.adb (Set_Exception_C_Msg): Ditto.
	(Set_Exception_Msg): Ditto.
	* a-exexpr-gcc.adb (Setup_Current_Excep): Ditto.  Do not set
	Private_Data.
	* a-except.adb, a-except-2005.adb (Save_Occurrence_No_Private): Remove.
	Use Save_Occurrence instead of Save_Occurrence_No_Private.
	(Raise_With_Msg): Remove Cleanup_Flag.
	* a-except.ads, a-except-2005.ads (Exception_Occurrence): Remove
	Clean_Flag and Private_Data components.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* freeze.adb (Freeze_Record_Type): Ignore packing in Alfa mode, like
	in CodePeer mode.
	* sem_ch3.adb (Signed_Integer_Type_Declaration): Correct the generation
	of an explicitly declared type, so that the base types of the original
	type and this generated type are the same, and a "type" (not a subtype
	like previously).
	* errout.adb (Special_Msg_Delete): Do not issue messages "Size too
	small" in Alfa mode, like in CodePeer mode.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Ignore rep
	clauses in Alfa mode.

2011-08-29  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.ads, exp_ch6.adb (Is_Null_Procedure): Move the spec of this
	function to the package spec.
	* sem_ch6.adb (Find_Corresponding_Spec, New_Overloaded_Entity): For
	internally generated bodies of null procedures locate the internally
	generated spec enforcing mode conformance.
	(Is_Interface_Conformant): Ensure that the controlling formal of the
	primitives match.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Inline): In an instance, do not
	reject the pragma if it appears to apply to a formal subprogram.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Use consistent name for
	inner expression, to prevent double evaluation.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr.adb (Propagate_Exception): Remove all the parameters as
	they were unused.
	* a-exexpr-gcc.adb (Propagate_Exception): Ditto.
	* a-except-2005.adb (Propagate_Exception): Adjust spec.
	(Raise_Current_Excep): Adjust call.
	(Raise_From_Signal_Handler): Call now simply call Raise_Current_Excep.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* exp_disp.adb: Minor reformatting.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr.adb (Setup_Exception): Removed.
	* a-exexpr-gcc.adb (Setup_Exception): Removed.
	* a-except.adb (Exception_Propagation): Removed.
	* a-except-2005.adb (Setup_Exception): Removed.
	(Reraise): Remove call to Setup_Exception.
	(Reraise_Occurrence): Ditto.
	(Reraise_Occurrence_Always): Ditto.
	(Reraise_Occurrence_No_Defer): Ditto.
	(Transfer_Occurrence): Ditto.
	* a-exexda.adb (Set_Exception_C_Msg): Remove call to Setup_Exception.
	(Set_Exception_Msg): Ditto.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-convec.adb, exp_disp.adb: Minor reformatting.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (GNAT_GCC_Exception_Access): Set to convention C.

2011-08-29  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Build_Record_Init_Proc.Build_Init_Procedure): Set
	Exception_Handlers to No_List instead of Empty_List in the case where
	there are no handlers.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* gcc-interface/gigi.h (enum standard_datatypes): Add
	ADT_reraise_zcx_decl
	(reraise_zcx_decl): New macro.
	* gcc-interface/trans.c (gnu_incoming_exc_ptr): New variable.
	(gigi): Set reraise_zcx_decl.
	(Exception_Handler_to_gnu_zcx): Save and restore gnu_incoming_exc_ptr.
	(gnat_to_gnu): Handle N_Raise_Statement.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb, exp_ch3.adb, s-stposu.adb, a-undesu.ads,
	a-undesu.adb: Minor reformatting.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Check_Premature_Freezing): When building a dispatch
	table, accept an unfrozen untagged component if it is an actual for a
	formal incomplete type.
	* a-convec.ads, a-convec.adb: Instantiate Ada.Iterator_Interfaces to
	provide new iterator forms over vectors.
	Introduce type Iterator in package body to implement operations of
	Reversible_Iterator interface.
	* a-iteint.ads: Make package pure so it is usable with new container
	packages, that are categorized Remote_Types.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-exexpr-gcc.adb, a-synbar.adb, sem_ch13.adb: Minor reformatting.

2011-08-29  Bob Duff  <duff@adacore.com>

	* sem_aggr.adb (Resolve_Aggr_Expr): Call this routine even in the case
	of <>, because this is the routine that checks for dimensionality
	errors (for example, for a two-dimensional array, (others => <>) should
	be (others => (others => <>)).

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* impunit.adb: Add new run-time units.
	* freeze.adb, exp_ch7.ads, exp_ch7.adb, exp_util.ads, exp_util.adb,
	s-stposu.ads, s-stposu.adb: Code clean up.
	Handle protected class-wide or task class-wide types
	Handle C/C++/CIL/Java types.
	* s-spsufi.adb, s-spsufi.ads: New files.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Reject test-case on
	library-level subprogram.
	* sem_prag.adb (Check_Test_Case): Stricter rules for test-case
	placement.
	(Analyze_Pragma): Change name "Normal" for "Nominal" in test-case
	component.
	* snames.ads-tmpl: Change name "Normal" for "Nominal" in test-case
	component.
	* gnat_rm.texi: Update doc for Test_Case pragma.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (Unwind_Exception): Remove default value, made it
	convention C.
	(GCC_Exception_Access): New type.
	(Unwind_DeleteException): New imported procedure
	(Foreign_Exception): Import it.
	(GNAT_GCC_Exception): Simply have the occurrence inside.
	(To_GCC_Exception): New function.
	(To_GNAT_GCC_Exception): New function.
	(GNAT_GCC_Exception_Cleanup): New procedure..
	(Propagate_GCC_Exception): New procedure.
	(Reraise_GCC_Exception): New procedure.
	(Setup_Current_Excep): New procedure.
	(CleanupUnwind_Handler): Change type of UW_Exception parameter.
	(Unwind_RaiseException): Ditto.
	(Unwind_ForcedUnwind): Ditto.
	(Remove): Removed.
	(Begin_Handler): Change type of parameter.
	(End_Handler): Ditto. Now delete the exception if still present.
	(Setup_Key): Removed.
	(Is_Setup_And_Not_Propagated): Removed.
	(Set_Setup_And_Not_Propagated): Ditto.
	(Clear_Setup_And_Not_Propagated): Ditto.
	(Save_Occurrence_And_Private): Ditto.
	(EID_For): Add 'not null' constraint on parameter.
	(Setup_Exception): Does nothing.
	(Propagate_Exception): Simplified.
	* exp_ch11.adb (Expand_N_Raise_Statement): In back-end exception model,
	re-raise is not expanded anymore.
	* s-except.ads (Foreign_Exception): New exception - placeholder for
	non Ada exceptions.
	* raise-gcc.c (__gnat_setup_current_excep): Declare
	(CXX_EXCEPTION_CLASS): Define (not yet used)
	(GNAT_EXCEPTION_CLASS): Define.
	(is_handled_by): Handle foreign exceptions.
	(PERSONALITY_FUNCTION): Call __gnat_setup_current_excep.

2011-08-29  Jose Ruiz  <ruiz@adacore.com>

	* a-synbar.adb (Synchronous_Barrier): Some additional clarification.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* a-synbar-posix.adb: Minor reformatting.

2011-08-29  Jose Ruiz  <ruiz@adacore.com>

	* a-exetim-posix.adb, a-exetim-mingw.adb, a-exetim-mingw.ads,
	a-exetim-default.ads (Interrupt_Clocks_Supported,
	Separate_Interrupt_Clocks_Supported, Clock_For_Interrupts): Add these
	definitions to be compliant with AI-0171. The target systems do not
	support separate account for the execution time of interrupt handlers.

2011-08-29  Jose Ruiz  <ruiz@adacore.com>

	* a-synbar.adb (Wait): Change the order of evaluation of the conditions
	in the barrier to put first the easiest to evaluate (and the one which
	will be True more often). More efficient.

2011-08-29  Eric Botcazou  <ebotcazou@adacore.com>

	* s-atocou-x86.adb: Fix constraint in machine code insertion.

2011-08-29  Bob Duff  <duff@adacore.com>

	* aspects.ads, aspects.adb: Add new aspects for various pragmas and
	attributes that are now aspects, as specified by AI05-0229-1.
	* sem_ch13.adb (Analyze_Aspect_Specifications,
	Check_Aspect_At_Freeze_Point): Analyze the new aspects. Turn them into
	pragmas or attribute references, as appropriate.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-synbar.ads, a-synbar.adb, a-synbar-posix.adb,
	a-synbar-posix.ads: Minor reformatting.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* snames.ads-tmpl: Add name Force.

2011-08-29  Pascal Obry  <obry@adacore.com>

	* prj-nmsc.adb: Minor reformatting.

2011-08-29  Jose Ruiz  <ruiz@adacore.com>

	* a-exetim.ads (Interrupt_Clocks_Supported,
	Separate_Interrupt_Clocks_Supported, Clock_For_Interrupts): Add these
	definitions to be compliant with AI-0171.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-ngelfu.adb: Add comments.

2011-08-29  Geert Bosch  <bosch@adacore.com>

	* a-ngelfu.adb (Tan): Do not raise Constraint_Error if the argument is
	the closest machine number to Pi / 2.0.

2011-08-29  Jose Ruiz  <ruiz@adacore.com>

	* impunit.adb (Non_Imp_File_Names_12): Add a-synbar for new Ada 2012
	package Ada.Synchronous_Barriers.
	* a-synbar.ads, a-synbar.adb, a-synbar-posix.ads, a-synbar-posix.adb:
	Add new specs and bodies for Ada.Synchronous_Barriers. There is a
	default implementation using protected objects and another one
	a-synbar-posix using POSIX barriers as the underlying support.
	* gcc-interface/Makefile.in (LIBGNAT_TARGET_PAIRS for Linux (x86,
	x86_64, ia64) and MIPS IRIX): Use the a-synbar-posix implementation of
	Ada.Synchronous_Barriers which uses POSIX barriers (more efficient).
	Clean up dependencies.
	* Makefile.rtl (GNATRTL_TASKING_OBJS): Add a-synbar.o

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch7.adb, make.adb, sem_res.adb, exp_intr.adb,
	exp_dist.adb: Minor code reorganization.
	Minor reformatting.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb (Validate_RACW_Primitive): The return type of an RACW
	primitive operation must support external streaming if it is not a
	controlling access result.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads, sem_ch7.adb: Minor reformatting.

2011-08-29  Bob Duff  <duff@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Check No_Nested_Finalization
	restriction on allocators, as required by AI05-0013-1.
	* restrict.ads: Minor comment fix.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr.adb, a-except-2005.ads (Jmpbuf_Address): Move to a-exexpr.adb
	(To_Jmpbuf_Address): Ditto
	(builtin_longjmp): Ditto

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb: Minor reformatting.

2011-08-29  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Move special processing for VM targets after the
	call to Get_Target_Parameters.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* sem_ch12.adb, par-ch12.adb: Minor reformatting.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_res.adb (Resolve_Allocator): Implement Ada2012-B052. Detect cases
	where an anonymous access discriminant of a limited designated type
	appears in a non-immutably limited discriminated type and issue an
	error message. Add local variable Desig_T and replace all occurrences
	of Designated_Type.

2011-08-29  Jose Ruiz  <ruiz@adacore.com>

	* a-rttiev.adb (Set_Handler): Update comment to indicate that our
	implementation is compliant to RM D.15(15/2) after the modification
	imposed by AI05-0094-1 (binding interpretation).

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, s-tasren.adb, exp_sel.adb, exp_sel.ads, exp_ch11.adb,
	s-interr-hwint.adb, s-tpobop.adb, sem_ch13.adb: Minor reformatting.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* par-endh.adb (Check_End): For an END where it is mandatory to repeat
	the scope name, do not report a missing label as a style violation (it
	will be diagnosed as an illegality).
	* exp_dist.adb (Add_Params_For_Variant_Components): Fix handling of
	variant records: Get_Enum_Lit_From_Pos already returns a usage
	occurrence of the literal, no need to use New_Occurrence_Of. Set Etype
	on Expr in Integer_Literal case so that it can be used by
	Build_To_Any_Call.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* exp_sel.ads (Build_Abort_BLock_Handler): New function spec.
	Adjust comment.
	* exp_sel.adb (Build_Abort_Block): Use Build_Abort_Block_Handler.
	(Build_Abort_Block_Handler): New function to build an Abort_Signal
	exception handler.
	* exp_ch9.adb (Expand_N_Asynchronous_Select): Call
	Build_Abort_Block_Handler to build the exception handler. Do not
	undefer aborts for the Abort_Signal exception handler if back-end
	exception mechanism.
	* exp_ch11.adb (Expand_Exception_Handlers): Do not undefer aborts if
	back_end exceptions for all others and abort_signal.
	* s-except.ads (ZCX_By_Default): New constant.
	* a-except-2005.adb (Raise_Exception): Do not defer abort if ZCX.
	(Raise_Exception_Always): Ditto.
	(Raise_From_Signal_Handler): Ditto.
	(Raise_With_Location_And_Msg): Ditto.
	(Raise_With_Msg): Ditto.
	(Reraise): Ditto.
	(Reraise_Occurence): Ditto.
	(Reraise_Occurrence_Always): Ditto.
	* s-tasren.adb (Exceptional_Complete_Rendezvous): Defer aborts if ZCX.
	* s-tpobop.adb: (Exceptional_Complete_Body): Undefer abort if ZCX.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* sem_util.ads (Get_Enum_Lit_From_Pos): Clarify documentation.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* snames.adb-tmpl, sem_ch13.adb: Minor reformatting
	Minor code reorganization.

2011-08-29  Bob Duff  <duff@adacore.com>

	* usage.adb (-gnatwy): Fix documentation: this switch applies to Ada
	2012, not just Ada 2005.

2011-08-29  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Indicate that when the compiler is called by gnatmake
	with a project file or with gprbuid, if -gnatep= is specified, the
	builder may need to be invoked with -x.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb: Minor comment fix.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb: Minor reformatting.

2011-08-29  Bob Duff  <duff@adacore.com>

	* par-ch2.adb (P_Identifier): Warn that "some" is reserved in Ada 2012.
	* par-ch4.adb (P_Quantified_Expression): Remove unnecessary code for
	treating "some" as unreserved in earlier Ada versions. This is now
	handled in Snames.Is_Keyword_Name. Parse "for some" using Tok_Some,
	rather than Name_Some, since Tok_Some is now recognized as reserved.
	* scans.adb (Initialize_Ada_Keywords): Handle Tok_Some like any other
	reserved word.
	* scans.ads: Minor comment fixes.
	* snames.adb-tmpl (Is_Keyword_Name): Handle Ada 2012 reserved words as
	for other language versions.
	* scn.adb (Scan_Reserved_Identifier): Remove unnecessary code for
	treating "some" as unreserved in earlier Ada versions. This is now
	handled in Snames.Is_Keyword_Name.
	* par-ch3.adb (P_Defining_Identifier): Warn that "some" is reserved in
	Ada 2012.
	(P_Subtype_Mark_Resync): Remove unnecessary code for treating "some" as
	unreserved in earlier Ada versions. This is now handled in
	Snames.Is_Keyword_Name.
	* snames.ads-tmpl (Ada_2012_Reserved_Words): Handle Ada 2012 reserved
	words as for other language versions.
	* gnat_ugn.texi (-gnatwy): Fix documentation: this switch applies to
	Ada 2012, not just Ada 2005.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Additional semantic checks for aspects involved in
	iterators.

2011-08-29  Matthew Heaney  <heaney@adacore.com>

	* a-comutr.ads, a-comutr.adb, a-cimutr.ads, a-cimutr.adb,
	a-cbmutr.ads, a-cbmutr.adb (Find_In_Subtree): Remove superfluous
	Container parameter.
	(Ancestor_Find): ditto.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* par-endh.adb: Minor reformatting.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (Unwind_Action) Rewrite as an integer with constants.
	(GNAT_GCC_Exception): Remove N_Cleanups_To_Trigger component.
	(Adjust_N_CLeanups_For): Remove.
	(CleanupUnwind_Handler): Call Unhandled_Exception_Terminate when end of
	stack is reached.
	(Propgate_Exception): Adjust.
	* raise-gcc.c: Add a few static/const.
	(Adjust_N_Cleanups_For): Remove declaration.
	(PERSONALITY_FUNCTION): Remove code dealing with N_Cleanups_To_Trigger.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: Use type of function return when rewriting as object
	declaration.

2011-08-29  Gary Dismukes  <dismukes@adacore.com>

	* sem_type.adb: Minor reformatting.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* makeutl.adb: Minor reformatting.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Object_Renaming): If the renamed object is a
	function call of a limited type, the expansion of the renaming is
	complicated by the presence of various temporaries and subtypes that
	capture constraints of the renamed object.
	Rewrite node as an object declaration, whose expansion is simpler.
	Given that the object is limited there is no copy involved and no
	performance hit.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, sinfo.ads, make.adb, s-pooglo.adb, sem_ch12.adb,
	freeze.adb, sem_ch6.adb, par-ch12.adb: Minor reformatting.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* system-darwin-x86.ads, system-linux-s390x.ads, system-linux-alpha.ads,
	system-tru64.ads, system-irix-n32.ads, system-vxworks-arm.ads,
	system-linux-hppa.ads, system-linux-s390.ads,
	system-solaris-sparcv9.ads, system-mingw.ads, system-linux-ia64.ads,
	system-vms_64.ads, system-vxworks-sparcv9.ads, system-linux-ppc.ads,
	system-aix64.ads, system-lynxos-ppc.ads, system-linux-sh4.ads,
	system-solaris-x86.ads, system-linux-x86_64.ads, system-linux-x86.ads,
	system-vxworks-ppc.ads, system-hpux.ads, system-darwin-ppc.ads,
	system-solaris-sparc.ads, system-lynxos-x86.ads,
	system-vxworks-m68k.ads, system-hpux-ia64.ads, system-irix-o32.ads,
	system-solaris-x86_64.ads, system-mingw-x86_64.ads,
	system-vxworks-mips.ads, system-linux-sparc.ads, system-vms-ia64.ads,
	system-freebsd-x86.ads, system-aix.ads, system-darwin-x86_64.ads,
	system-vxworks-x86.ads: Remove GCC_ZCX_Support.
	* s-taprop-posix.adb, s-taprop-irix.adb, s-taprop-vxworks.adb,
	s-taprop-tru64.adb, s-taprop-linux.adb, s-taprop-solaris.adb: Ditto.
	* opt.ads: Adjust comment.
	* targparm.ads, targparm.adb: Remove GCC_ZCX_Support_On_Target.
	* gnat1drv.adb: Do not check for GCC_ZCX_Support_On_Target.
	* system.ads: Move GCC_ZCX_Support to obsolete entries.

2011-08-29  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb (Do_Complete): Resolve symbolic links when a relative
	file name is specified on the gnatmake or gprbuild command line, and
	before we search for that file in the project.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Within_Instance): New predicate in Collect_Interps,
	used to determine whether a possible interpretation for an overloadable
	entity is declared within the current instantiation and should be
	included in the candidate set.

2011-08-29  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Clean ups.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): Use base type to determine whether an
	access subtype is access_to_subprogram, when applying checks for
	RM 3.10.2 (27).

2011-08-29  Matthew Heaney  <heaney@adacore.com>

	* a-comutr.adb, a-cimutr.adb, a-cbmutr.adb (Splice_Subtree): Only check
	for sibling when common parent.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* get_scos.adb: Literals of Pragma_Id are pragma names prefixed with
	"pragma_".

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Enable freeze actions
	for the return type when in ASIS mode.

2011-08-29  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Get the default search dirs, then the target
	parameters after getting the Builder switches, as the Builder switches
	may include --RTS= and that could change the default search dirs.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Make_Adjust_Call): Rewrite to mimic the structure of
	Make_Final_Call. Move the processing for class-wide types before the
	processing for derivations from [Limited_]Controlled.
	(Make_Final_Call): Move the processing for class-wide types before the
	processing for derivations from [Limited_]Controlled.
	* s-stposu.adb (Allocate_Any_Controlled): Correct the membership check.
	Add code to account for alignments larger than the list header. Add a
	comment illustrating the structure of the allocated object + padding +
	header.
	(Deallocate_Any_Controlled): Add code to account for alignments larger
	than the list header.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads, sinfo.adb: New node kind
	N_Formal_Incomplete_Type_Definition, related flags.
	par-ch12.adb (P_Formal_Type_Declaration, G_Formal_Type_Definition):
	Parse formal incomplete types.
	* sem.adb (Analyze): Formal_Incomplete_Type_Definitions are handled in
	sem_ch12.
	* sem_ch7.adb (Analyze_Package_Specification, Unit_Requires_Body):
	Formal incomplete types do not need completion.
	* sem_ch12.adb (Analyze_Formal_Incomplete_Type,
	Validate_Incomplete_Type_Instance): New procedures to handle formal
	incomplete types.
	* freeze.adb (Freeze_Entity): Do not freeze the subtype of an actual
	that corresponds to a formal incomplete type.
	* sprint.adb: Handle formal incomplete type declarations.
	* exp_util.adb (Insert_Actions): An incomplete_type_definition is not
	an insertion point.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-fihema.ads, a-fihema.adb: Unit removed.
	* a-undesu.ads, a-undesu.adb: New unit implementing
	Ada.Unchecked_Deallocate_Subpool.
	* einfo.adb: Remove Associated_Collection from the node usage.
	Add Finalization_Master to the node usage.
	(Associated_Collection): Removed.
	(Finalization_Master): New routine.
	(Set_Associated_Collection): Removed.
	(Set_Finalization_Master): New routine.
	(Write_Field23_Name): Remove Associated_Collection from the output. Add
	Finalization_Master to the output.
	* einfo.ads: Remove attribute Associated_Collection and its uses in
	entities.
	Add new attribute Finalization_Master along with its uses in entitites.
	(Associated_Collection): Removed along with its pragma import.
	(Finalization_Master): New routine along with a pragma import.
	(Set_Associated_Collection): Removed along with its pragma import.
	(Set_Finalization_Master): New routine along with a pragma import.
	* exp_ch3.adb (Expand_Freeze_Array_Type): Replace call to
	Build_Finalization_Collection with Build_Finalization_Master.
	(Expand_Freeze_Record_Type): Move the generation of Finalize_Address
	before the bodies of the predefined routines. Add comment explaining
	this. Replace call to Build_Finalization_Collection with
	Build_Finalization_Master.
	(Freeze_Type): Replace call to Build_Finalization_Collection with
	Build_Finalization_Master.
	(Make_Finalize_Address_Body): Comment reformatting.
	(Make_Predefined_Primitive_Specs): Code reformatting.
	(Stream_Operation_OK): Update comment mentioning finalization
	collections. Replace RE_Finalization_Collection with
	RE_Finalization_Master.
	* exp_ch4.adb (Complete_Controlled_Allocation): Replace call to
	Associated_Collection with Finalization_Master. Replace call to
	Build_Finalization_Collection with Build_Finalization_Master.
	(Expand_Allocator_Expression): Replace call to Associated_Collection
	with Finalization_Master. Replace call to Set_Associated_Collection with
	Set_Finalization_Master. Remove the generation of
	Set_Finalize_Address_Ptr.
	(Expand_N_Allocator): Replace call to Associated_Collection with
	Finalization_Master. Remove the generation of Set_Finalize_Address_Ptr.
	* exp_ch6.adb (Add_Collection_Actual_To_Build_In_Place_Call): Renamed to
	Add_Finalization_Master_Actual_To_Build_In_Place_Call. Update the
	comment on usage. Replace call to Needs_BIP_Collection with
	Needs_BIP_Finalization_Master Remplace BIP_Collection with
	BIP_Finalization_Master. Update all comments which mention finalization
	collections. Replace Associated_Collection with
	Finalization_Master. Replace Build_Finalization_Collection with
	Build_Finalization_Master.
	(BIP_Formal_Suffix): Update BIP_Collection's case.
	(Build_Heap_Allocator): Update the related comment. Rename local
	variable Collect to Fin_Mas_Id and update its occurrences. Update
	comments which mention finalization collections. Replace
	Set_Associated_Collection with Set_Finalization_Master.
	(Expand_Call): Update the code which detects a special piece of library
	code for .NET/JVM.
	(Make_Build_In_Place_Call_In_Allocator): Replace the call to
	Add_Collection_Actual_To_Build_In_Place_Call with
	Add_Finalization_Master_Actual_To_Build_In_Place_Call. Remove the code
	which generates a call to Make_Set_Finalize_Address_Ptr_Call.
	(Make_Build_In_Place_Call_In_Anonymous_Context): Replace call to
	Add_Collection_Actual_To_Build_In_Place_Call with
	Add_Finalization_Master_Actual_To_Build_In_Place_Call.
	(Make_Build_In_Place_Call_In_Assignment): Replace call to
	Add_Collection_Actual_To_Build_In_Place_Call with
	Add_Finalization_Master_Actual_To_Build_In_Place_Call.
	(Needs_BIP_Collection): Renamed to Needs_BIP_Finalization_Master.
	* exp_ch6.ads: Rename BIP_Collection to BIP_Finalization_Master.
	(Needs_BIP_Collection): Renamed to Needs_BIP_Finalization_Master.
	* exp_ch7.adb (Build_BIP_Cleanup_Stmts): Update comment on usage.
	Rename local variable Collect to Fin_Mas_Id and update its occurrences.
	Replace call to Set_Associated_Collection with Set_Finalization_Master.
	(Build_Finalization_Collection): Renamed to Build_Finalization_Master.
	Replace the call to Associated_Collection with Finalization_Master.
	Rename local variable Coll_Id to Fin_Mas_Id and update its occurrences.
	Update the way finalization master names are generated. Update the
	retrieval of the correct access type which will carry the pool and
	master attributes.
	(Make_Final_Call): Reimplement the way [Deep_]Finalize is retrieved.
	(Make_Finalize_Address_Body): Abstract types do not need
	Finalize_Address. Code reformatting.
	(Make_Finalize_Address_Stmts): Update comment on usage.
	(Make_Set_Finalize_Address_Ptr_Call): Removed.
	(Process_Declarations): Update comments.
	* exp_ch7.ads (Build_Finalization_Collection): Renamed to
	Build_Finalization_Master. Update associated comment.
	(Make_Set_Finalize_Address_Ptr_Call): Removed.
	* exp_ch13.adb: Update comments which mention finalization collections.
	(Expand_N_Free_Statement): Replace the call to Associated_Collection
	with Finalization_Master.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): Reimplemented to
	create calls to routines Allocate_Any_Controlled and
	Deallocate_Any_Controlled.
	(Find_Finalize_Address): New routine.
	(Is_Allocate_Deallocate_Proc): Update the RTE entities used in the
	comparison.
	(Requires_Cleanup_Actions): Update the comment on freeze node
	inspection.
	* exp_util.ads: Remove comment on generated code for
	Build_Allocate_Deallocate_Proc. The code is now quite complex and it
	is better to simply look in the body.
	* freeze.adb (Freeze_All): Update the comment of finalization
	collections. Replace the call to Associated_Collection with
	Finalization_Master. Replace the call to Build_Finalization_Collection
	with Build_Finalization_Master.
	* impunit.adb: Add a-undesu and s-stposu to the list of units.
	* Makefile.rtl: Add files a-undesu, s-finmas and s-stposu. Remove file
	a-fihema.
	* rtsfind.adb (Get_Unit_Name): Remove the processing for children of
	Ada.Finalization. Add processing for children of System.Storage_Pools.
	* rtsfind.ads: Remove the naming of second level children of
	Ada.Finalization.
	Remove Ada_Finalization_Heap_Management from the list of units.
	Remove subtype Ada_Finalization_Child.
	Remove the following subprogram entities:
	
	   RE_Allocate
	   RE_Deallocate
	   RE_Finalization_Collection
	   RE_Finalization_Collection_Ptr
	   RE_Set_Finalize_Address_Ptr
	
	Add the naming of second level children of System.Storage_Pools.
	Add System_Finalization_Masters and System_Storage_Pools_Subpools to
	the list of units.
	Add subtype System_Storage_Pools_Child.
	Add the following subprogram entities to System.Finalization_Masters:
	
	   RE_Finalization_Master
	   RE_Finalization_Master_Ptr
	
	Add the following subprogram entities to System.Storage_Pools.Subpools:
	
	   RE_Allocate_Any_Controlled
	   RE_Deallocate_Any_Controlled
	   RE_Root_Storage_Pool_With_Subpools
	   RE_Root_Subpool
	   RE_Subpool_Handle
	
	Move the following subprogram entities from
	Ada.Finalization.Heap_Management to System.Finalization_Masters:
	
	   RE_Add_Offset_To_Address
	   RE_Attach
	   RE_Base_Pool
	   RE_Detach
	
	* sem_ch3.adb (Access_Type_Declaration): Replace the call to
	Set_Associated_Collection with Set_Finalization_Master.
	* sem_ch6.adb (Create_Extra_Formals): Update the way extra formal
	BIP_Finalization_Master is created.
	* s-finmas.adb: New unit System.Finalization_Masters.
	* s-finmas.ads: New unit System.Finalization_Masters.
	* s-stopoo.ads, s-stopoo.adb: Minor code reformatting.
	* s-stposu.ads, s-stposu.adb: New unit implementing
	System.Storage_Pools.Subpools.

2011-08-29  Bob Duff  <duff@adacore.com>

	* tbuild.adb: Add assertion.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* s-pooglo.adb: Minor reformatting.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): if the left-hand side is
	an indexed component of a packed array whose element type is a record
	with a representation clause different from that of the right-hand
	side, generate a temporary to minimuze the number of bit-field
	operations generated.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Insert_Actions): Use clauses can be part of lists of
	declarations, and thus are likely insertion points for actions.

2011-08-29  Bob Duff  <duff@adacore.com>

	* einfo.ads: Minor comment fix.

2011-08-29  Robert Dewar  <dewar@adacore.com>

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

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* s-pooglo.adb (Allocate, Deallocate): Take into account the alignment.
	* a-fihema.adb (Allocate, Deallocate): Ditto.  Possibly add padding
	space in front of the header.

2011-08-29  Johannes Kanig  <kanig@adacore.com>

	* frontend.adb (Frontend): Exit after creating Standard package when
	-gnatd.H is present.
	* gnat1drv.adb (Gnat1drv): Call Backend right away when -gnatd.H is
	present.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, mlib-prj.adb, prj.adb, prj.ads, ttypes.ads, sem_ch4.adb,
	makeutl.adb, makeutl.ads, atree.ads, snames.adb-tmpl,
	snames.ads-tmpl: Minor reformatting.

2011-08-29  Philippe Gil  <gil@adacore.com>

	* prj.adb (Reset_Units_In_Table): New procedure.
	Reset units to avoid access to freed memory.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* get_scos.adb: When reading a P statement SCO without a pragma name
	(from an older ALI file), ensure that the Pragma_Name component is set
	to Unknown_Pragma (not left uninitialized).

2011-08-29  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Get_Directories): New procedure moved from Buildgpr and
	modified to compute correctly the object path of a SAL project that is
	extending another library project.
	(Write_Path_File): New procedure.
	* makeutl.ads (Directories): New table moved from Buildgpr
	(Get_Directories): New procedure moved from Buildgpr
	(Write_Path_File): New procedure
	* mlib-prj.adb (Build_Library): Use Makeutl.Get_Directories to set the
	paths before binding SALs, instead of Set_Ada_Paths.
	* prj-env.adb (Set_Path_File_Var): Procedure has been moved to package
	Prj.
	* prj.adb (Set_Path_File_Var): New procedure moved from Prj.Env
	(Current_Source_Path_File_Of): New function
	(Set_Current_Object_Path_File_Of): New procedure
	(Current_Source_Object_File_Of): New function
	(Set_Current_Object_Path_File_Of): New procedure
	* prj.ads (Set_Path_File_Var): New procedure moved from Prj.Env
	(Current_Source_Path_File_Of): New function
	(Set_Current_Object_Path_File_Of): New procedure
	(Current_Source_Object_File_Of): New function
	(Set_Current_Object_Path_File_Of): New procedure

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): For an assignment to a
	packed entity, use a bit-field assignment only if there is no change of
	representation.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.ads, exp_ch3.adb (In_Runtime): Minor code improvement, use
	Is_RTU instead of using Chars comparisons.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* exp_strm.adb (Build_Mutable_Record_Read_Procedure): Do not create a
	temporary object if the actual is constrained, and the discriminants
	read from the stream don't match.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* sem_attr.adb, exp_attr.adb: Add handling of
	Attribute_System_Allocator_Alignment
	* snames.ads-tmpl: Add Name_System_Allocator_Alignment and
	Attribute_System_Allocator_Alignment.
	* ttypes.ads, get_targ.ads: Add Get_System_Allocator_Alignment.
	* gcc-interface/targtyps.c, gcc-interface/utils2.c,
	gcc-interface/gigi.h: Renames get_target_default_allocator_alignment to
	get_target_system_allocator_alignment.

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

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

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

	* exp_ch3.adb (In_Runtime): Fix typo.

2011-08-29  Bob Duff  <duff@adacore.com>

	* sem_ch4.adb (Analyze_Allocator): Analyze the subpool specification.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): If the entity is tagged
	and a separate tag assignment is generated, ensure that the tag
	assignment is analyzed.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* atree.ads, atree.adb (Copy_Separate_List): New function that applies
	Copy_Separate_Tree to a list of nodes. Used to create disjoint copies
	of statement lists that may contain local declarations.
	* exp_ch9.adb (Expand_N_Timed_Entry_Call): Use Copy_Separate_List to
	duplicate the triggering statements needed for the expansion of this
	construct, when the trigger is a dispatching call to a synchronized
	primitive.

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi: Add doc for 'Elab_Subp_Body.
	* bindgen.adb: Add comments.
	* snames.adb-tmpl (Is_Attribute_Name): Only recognize 'Elab_Subp_Body
	in CodePeer mode.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb: Minor reformatting.
	Minor code reorganization and commenting.
	* par_sco.adb, checks.adb, sem_attr.adb, get_scos.adb: Minor
	reformatting.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* get_scos.adb: Ignore chaining indicators not currently supported
	by Ada.

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

	* system.ads: Minor editing.

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

	* bindgen.adb (Gen_Elab_Calls): Generate calls to subp'Elab_Subp_Body in
	CodePeer mode.
	* sem_attr.ads, sem_attr.adb, exp_Attr.adb, sem_ch6.adb: Add handling of
	Attribute_Elab_Subp_Body.
	* snames.ads-tmpl (Attribute_Elab_Subp_Body, Name_Elab_Subp_Body): New.
	* sem_util.adb: Update comments.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb, scos.adb, scos.ads, put_scos.adb, get_scos.adb: Record
	pragma name for each SCO statement corresponding to a pragma.

2011-08-29  Arnaud Charlet  <charlet@adacore.com>

	* opt.ads: Minor editing.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): Remove options for ALFA mode
	that only made sense for CodePeer mode.

2011-08-29  Jose Ruiz  <ruiz@adacore.com>

	* targparm.ads (Support_64_Bit_Divides_On_Target): Remove this flag
	which is no longer used.
	* targparm.adb (S64, S64_Str, Get_Target_Parameters): Remove the
	handling of the 64-bit division check.
	* exp_ch4.adb (Expand_N_Op_Divide): Remove the check for 64-bit
	division available.
	* system*.ads (Support_64_Bit_Divides): Remove this flag which is no
	longer used.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* get_scos.adb: Minor reformatting.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Process_Statements_For_Controlled_Objects): Whenever a
	statement list is wrapped in a block, the block is explicitly analyzed
	in order to properly redecorate the entities and create a servicing
	finalizer.

2011-08-29  Tristan Gingold  <gingold@adacore.com>

	* sinfo.ads, sinfo.adb (Zero_Cost_Handling): Remove.
	(Set_Zero_Cost_Handling): Remove.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb, scos.ads, put_scos.adb, get_scos.adb: Minor reformatting

2011-08-29  Geert Bosch  <bosch@adacore.com>

	* s-vaflop-vms-alpha.adb (Neg_F): Use subtraction instead of negation
	instruction, as the latter may produce -0.0, which is not a valid VAX
	F float number.
	(Neg_G): Likewise for VAX F float.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Minor reformatting.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb: Minor comment update.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* checks.adb (Apply_Type_Conversion_Checks): Use the Underlying_Type of
	the operand type.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statements): Do not flush
	current statement sequence on a generic instantiation or a subprogram
	declaration.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* sem_type.adb, einfo.ads, freeze.adb, exp_ch4.adb, sem_ch13.adb:
	Minor reformatting.

2011-08-29  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Requires_Cleanup_Actions (List_Id, Boolean, Boolean)):
	Correct the check which involves the freeze node of a controlled or
	access-to-controlled type.

2011-08-29  Geert Bosch  <bosch@adacore.com>

	* sem_warn.adb (Check_Code_Statement): Remove check for consecutive Asm
	statements.
	* s-vaflop-vms-alpha.adb: Remove bogus Volatile => True arguments from
	Asm statements.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): Insert a subtype declaration
	for every index type and component type that is not a subtype_mark.
	(Process_Subtype): Set Etype of subtype.

2011-08-29  Robert Dewar  <dewar@adacore.com>

	* a-cbmutr.adb, a-cimutr.adb, a-comutr.adb, prj-nmsc.adb: Minor code
	reorganization.  Minor reformatting.

2011-08-29  Steve Baird  <baird@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Expon): Suppress N_Op_Expon node expansion
	for CodePeer and ALFA modes.

2011-08-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Collect_Interps): Within an instance, collect a homonym
	that comes from an enclosing scope if it is not the renaming of an
	actual, to handle properly a spurious ambiguity in an instance.

2011-08-29  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch13.adb (Alignment_Check_For_Esize_Change): Rename to...
	(Alignment_Check_For_Size_Change): ...this.  Add SIZE parameter and
	use it instead of the Esize of the first parameter.
	(Analyze_Attribute_Definition_Clause) <Object_Size>: Adjust call to
	above change.
	<Size>: Likewise.  Call it for composite types on the RM size.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_ch4.adb (Expand_N_Op_Not): Do not expand not on array.
	* sem_util.adb (Unique_Name): Correct behaviour for names of
	compilation units.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Check_Precondition_Postcondition): In formal
	verification mode, analyze pragma expression for correctness, for
	pre/post on library-level subprogram, as it is not expanded later.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* exp_aggr.adb (Expand_Array_Aggregate): Do not expand array aggregates
	in formal verification.

2011-08-29  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb: Minor reformatting.
	* freeze.adb, sem_ch13.adb: Fix comment: Bit_Order is an attribute,
	there's no pragma.
	* par_sco.ads, par_sco.adb: Update comments.

2011-08-29  Yannick Moy  <moy@adacore.com>

	* einfo.adb, einfo.ads: Remove flag Is_Postcondition_Proc and
	associated getter/setter.
	* sem_ch6.adb: Remove reference to Is_Postcondition_Proc.

2011-08-29  Vincent Celier  <celier@adacore.com>

	* prj-attr.adb: New Compiler attribute Dependency_Kind and Language_Kind
	* prj-conf.adb: Add_Default_GNAT_Naming_Scheme: Add a package Compiler
	with declarations for Language_Kind and Dependency_Kind for Ada.
	* prj-nmsc.adb (Check_Unit_Name): New name of procedure Check_Ada_Name
	(Process_Compiler): Take into account the new attributes Dependency_Kind
	and Language_Kind.
	(Check_Configuration): Check if language kind is unit based, not if the
	language name is Ada.
	(Process_Exceptions_Unit_Based): Ditto
	(Add_Language): Remove default additions of language and dependency kind
	* prj.ads: Minor comment change
	* snames.ads-tmpl: New standard names Dependency_Kind and Language_Kind

2011-08-29  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: Update comments.

2011-08-24  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/Make-lang.in (CFLAGS-ada/tracebak.o)
	(CFLAGS-ada/targext.o, CFLAGS-ada/cio.o, CFLAGS-ada/init.o)
	(CFLAGS-ada/initialize.o, CFLAGS-ada/raise.o): New.
	(ada/tracebak.o, ada/targext.o, ada/cio.o, ada/init.o)
	(ada/initialize.o, ada/raise.o): Remove explicit compilation rules.

2011-08-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (PICFLAG_FOR_TARGET): New.
	(GNATLIBCFLAGS_FOR_C): Replace
	TARGET_LIBGCC2_CFLAGS by PICFLAG_FOR_TARGET.
	(gnatlib-shared-default, gnatlib-shared-dual-win32)
	(gnatlib-shared-win32, gnatlib-shared-darwin, gnatlib-shared)
	(gnatlib-sjlj, gnatlib-zcx): Likewise.

2011-08-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Makefile.in (raise-gcc.o): Fix previous change.

	* gcc-interface/gigi.h (enumerate_modes): Fix formatting.

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Revert latest change.

2011-08-05  Nicolas Roche  <roche@adacore.com>

	* gcc-interface/Makefile.in: Don't use directly ../xgcc to build shared
	libgnat. Use rather the value of GCC_FOR_TARGET. Fix issue with
	canadian cross.
	* gcc-interface/Make-lang.in: Add support for canadian cross setting.

2011-08-05  Matthew Heaney  <heaney@adacore.com>

	* a-comutr.adb, a-cimutr.adb, a-cbmutr.adb (Child_Count, Child_Depth):
	subprogram bodies declared out-of-order.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Unique_Name): only prefix with "standard" the names of
	entities directly in package Standard, otherwise skip the standard
	prefix.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* a-cbmutr.adb: Minor reformatting
	(Allocate_Node): refactor node allocation algorithm

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* opt.ads, opt.adb (Debug_Pragmas_Disabled): New switch.
	* sem_prag.adb (Analyze_Pragma, case Debug_Policy): Implement Disable
	mode.
	(Analyze_Pragma, case Check_Policy): Ditto.
	* sem_prag.ads (Check_Disabled): New function
	* snames.ads-tmpl: Add Name_Disable.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Document implementation-defined policy DISABLE for
	pragmas Assertion_Policy, Check_Policy, Debug_Policy.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pragma, case Inline): reject an Inline pragma
	that appears in a generic formal part and applies to a formal
	subprogram.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* a-cbmutr.ads: Minor reformatting.

2011-08-05  Matthew Heaney  <heaney@adacore.com>

	* a-comutr.adb, a-cimutr.adb, a-cbmutr.adb (Read): do not use T'Valid
	to check count, check sign of value instead.
	* a-comutr.adb, a-cimutr.adb (Write): return immediately if tree empty
	(Copy_Subtree): allocate copy of source element
	(Equal_Subtree): compare elements, not access objects

2011-08-05  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Fix VMS alternative.

2011-08-05  Thomas Quinot  <quinot@adacore.com>

	* sem_ch11.adb: Add comment.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb: Minor comment fix.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Error_Unterminated_String): Improve flag position when
	comma present.

2011-08-05  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Added a-cbmutr.ad[sb] (bounded multiway
	tree containers).
	* a-cbmutr.ads, a-cbmutr.adb: This is the new Ada 2012 unit for bounded
	multiway tree containers.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* styleg.adb (Check_Comment): Implement comment spacing of 1 or 2
	* stylesw.adb: Implement -gnatyC to control comment spacing
	* stylesw.ads (Style_Check_Comments_Spacing): New switch (set by
	-gnatyc/C).
	* usage.adb: Add line for -gnatyC.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Document -gnatyC.
	* vms_data.ads: Implement COMMENTS1/COMMENTS2 (retaining COMMENTS as a
	synonym for COMMENTS2).

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, sem_ch3.adb, scos.ads, a-iteint.ads, sem_ch12.adb,
	a-cimutr.adb, a-cimutr.ads, sem_util.ads, sem_res.adb, a-fihema.adb,
	sem_ch4.adb, lib-xref-alfa.adb, exp_disp.adb, a-comutr.adb,
	a-comutr.ads, lib-xref.adb: Minor reformatting.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch11.adb (Analyze_Raise_Statement): Kill assignment to formal
	warning if there is an exception handler present.

2011-08-05  Pascal Obry  <obry@adacore.com>

	* a-iteint.ads: Fix copyright year.

2011-08-05  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statements): Do not generate a
	statement SCO for a USE clause or a representation clause.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Collect_ALFA): generate the proper relation
	between body and spec for stub.
	(Detect_And_Add_ALFA_Scope): take into account subprogram stub
	* lib-xref.adb (Enclosing_Subprogram_Or_Package): in the case of a
	pragma precondition or postcondition, for which the enclosing
	subprogram or package in the AST is not the desired one, return empty.

2011-08-05  Thomas Quinot  <quinot@adacore.com>

	* g-expect.adb: Minor reformatting.

2011-08-05  Bob Duff  <duff@adacore.com>

	* a-fihema.adb: Comment out OS_Lib.

2011-08-05  Matthew Heaney  <heaney@adacore.com>

	* Makefile.rtl, impunit.adb: Added a-c[oi]mutr.ad[sb]
	(unbounded multiway tree containers) and a-iteint.ads.
	* a-comutr.ads, a-comutr.adb:
	This is the new Ada 2012 unit for unbounded multiway tree containers
	* a-cimutr.ads, a-cimutr.adb
	This is the new Ada 2012 unit for indefinite multiway tree containers
	* a-iteint.ads: New file.

2011-08-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (raise-gcc.o): Search $(srcdir)/../libgcc.

2011-08-05  Bob Duff  <duff@adacore.com>

	* sinfo.ads, sinfo.adb (Subpool_Handle_Name): New attribute for
	subpools.
	* par-ch4.adb (P_Allocator): Parse new subpool specification syntax.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Container_Indexing): New procedure to implement the
	general indexing aspects of Ada2012. Called when analyzing indexed
	components when other interpretations fail.
	* sem_ch8.adb (Find_Direct_Name): check for implicit dereference only
	in an expression context where overloading is meaningful. This excludes
	the occurrence in an aspect specification (efficiency only).
	* sem_attr.adb (Analyze_Attribute): indicate that the attributes
	related to iterators can be set by an attribute specification, but
	cannot be queried.
	* sem_ch13.adb (Analyze_Aspect_Specifications): handle
	Constant_Indexing and Variable_Indexing.
	(Check_Indexing_Functions): New procedure to perform legality checks.
	Additional semantic checks at end of declarations.

2011-08-05  Sergey Rybin  <rybin@adacore.com>

	* tree_io.ads: Update ASIS_Version_Number because of the change of the
	order of calling Tree_Write/Tree_Read routines made for aspects.

2011-08-05  Bob Duff  <duff@adacore.com>

	* a-fihema.adb (Finalize): Fix race condition.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation,
	Need_Subprogram_Instance_Body): do not generate instance bodies in ALFA
	mode.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Specific_Type): in an instance, the type-specific
	operand of an equality check that involves null may have a private
	type. Use full view to determine legality of construct.

2011-08-05  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Get_Closure): Do not crash when it is not possible to
	delete or close the file when the call to gnatmake was successful.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* gnat1drv.adb (Adjust_Global_Switches): in ALFA mode, set
	Global_Discard_Names.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sinfo.ads: comments on use of entity field for aspect specifications.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Reset_Entity): If the entity field of the associated
	node is not itself an entity but a selected component, it is a
	rewritten parameterless call to an en enclosing synchronized operation,
	and this expansion will be performed again in the instance, so there is
	no global information to preserve.

2011-08-05  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Set_All_DT_Position): Cleanup code and improve support
	for renamings of predefined primitives.
	(In_Predef_Prims_DT): New subprogram.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb, sem_util.ads (Check_Implicit_Dereference): If a
	possible interpretation of name is a reference type, add an
	interpretation that is the designated type of the reference
	discriminant of that type.
	* sem_res.adb (resolve): If the interpretation imposed by context is an
	implicit dereference, rewrite the node as the deference of the
	reference discriminant.
	* sem_ch3.adb (Analyze_Subtype_Declaration, Build_Derived_Record_Type,
	Build_Discriminated_Subtype): Inherit Has_Implicit_Dereference from
	parent type or base type.
	* sem_ch4.adb (Process_Indexed_Component,
	Process_Overloaded_Indexed_Component, Indicate_Name_And_Type,
	Analyze_Overloaded_Selected_Component, Analyze_Selected_Component):
	Check for implicit dereference.
	(List_Operand_Interps): Indicate when an implicit dereference is
	ambiguous.
	* sem_ch8.adb (Find_Direct_Name): Check for implicit dereference.

2011-08-05  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Update documentation of SCO table. Pragma statements can now
	be marked as disabled (using 'p' instead of 'P' as the statement kind).
	* par_sco.ads, par_sco.adb: Implement the above change.
	(Process_Decisions_Defer): Generate a P decision for the first parameter
	of a dyadic pragma Debug.
	* sem_prag.adb (Analyze_Pragma, case Debug): Mark pragma as enabled if
	necessary.
	* put_scos.adb: Code simplification based on above change.

2011-08-05  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, gnatcmd.adb, switch-c.adb, exp_attr.adb, make.adb,
	bindgen.adb, einfo.adb, sem_ch12.adb, sem_attr.adb, a-fihema.adb,
	a-fihema.ads, sem_elab.adb, sem_elab.ads, aspects.adb, opt.ads,
	prj-conf.adb, sem_ch13.adb, s-ficobl.ads: Minor reformatting

2011-08-05  Bob Duff  <duff@adacore.com>

	* a-stunau.ads, g-spipat.adb: Update comments.

2011-08-05  Bob Duff  <duff@adacore.com>

	* a-fihema.ads: Minor comment fix.
	* a-fihema.adb (Allocate, Deallocate): Assert that the alignment is
	correct.
	(Attach, Detach): Remove some unnecessary code.
	(Finalize): Remove Node_Ptr_To_Address, replace with a constant.

2011-08-05  Bob Duff  <duff@adacore.com>

	* a-fihema.ads, a-fihema.adb (Finalization_Collection): Avoid heap
	allocation for Objects component. This simplifies the code somewhat. It
	is also a little more efficient in the not-so-unusual case where there
	are no controlled objects allocated.
	Make Finalization_Started flag atomic.
	(Finalize): Avoid unnecessary detachment of items from the list.
	(pcol): Minor cleanup.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): reject a formal
	package whose name is the same as that of the generic unit, or its
	ultimate prefix.

2011-08-05  Bob Duff  <duff@adacore.com>

	* a-fihema.adb, a-fihema.ads: Minor comment improvements.
	* sem_ch3.adb, exp_ch5.adb, exp_ch7.adb, exp_ch7.ads, exp_util.adb:
	Minor comment fixes.

2011-08-05  Arnaud Charlet  <charlet@adacore.com>

	* make.adb (Linking_Phase): No longer need to set source search path
	before calling gnatlink in CodePeer mode.
	* gnatlink.adb (Gnatlink): No longer pass -gnat83/95/05/12 switch to
	gcc in CodePeer mode, since the binder generated file no longer has a
	'with Main'.
	* switch.ads, switch.adb (Is_Language_Switch): Removed.
	* switch-c.adb: Update comment.

2011-08-05  Thomas Quinot  <quinot@adacore.com>

	* exp_strm.adb, bindgen.adb, s-ficobl.ads: Minor reformatting.

2011-08-05  Nicolas Roche  <roche@adacore.com>

	* gnat_ugn.texi: Fix minor syntax error issue.

2011-08-05  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Get_Closure): Do not crash when it is not possible to
	delete or close the file when the call to gnatmake returns a non
	successful return code.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): When expanding a predicate
	check, indicate that the copy of the original node does not come from
	source, to prevent an infinite recursion of the expansion.

2011-08-05  Johannes Kanig  <kanig@adacore.com>

	* debug.adb: document switch -gnatd.G for gnat2why, which deactivates
	VC generation for subprogram bodies.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* einfo.ads: Typo.
	* sem_ch3.adb (Signed_Integer_Type_Declaration): in ALFA mode, define
	the base type with the smallest allowed base type.

2011-08-05  Sergey Rybin  <rybin@adacore.com>

	* tree_gen.adb, tree_in.adb, aspects.adb: Fix tree read-write for
	aspects.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.ads: minor comment updates.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Formal_Package_Declaration): in an
	instantiation and a formal package the compiler generates a package
	renaming declaration so that the generic name within the declaration
	is interpreted as a renaming of the instance. At the end of a formal
	package declaration, this renaming must become invisible.

2011-08-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Is_Init_Call): Reimplemented to avoid character
	comparison and rely on concrete entities instead.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb (Has_Implicit_Dereference): new flag on types
	and discriminants, to indicate that the type has an access discriminant
	that supports implicit dereference.
	* snames.ads-tmpl: Add names of aspects and attributes related to
	Ada2012 iterators: constant_indexing, default_iterator,
	iterator_element, implicit_dereference, variable_indexing.
	* aspects.ads, aspects.adb: entries for iterator-related aspects.
	* sem_ch13.adb (Analyze_aspect_specifications): dummy entries for
	iterator-related aspects.
	* sem_attr.adb, exp_attr.adb Dummy entries for iterator-related aspects.

2011-08-05  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi, vms_data.ads: Extend the subsection about coupling
	metrics in gnatmetric to cover new kinds of coupling mentrics.

2011-08-05  Steve Baird  <baird@adacore.com>

	* bindgen.adb (Gen_CodePeer_Wrapper): Call Ada_Main_Program instead
	of calling the user-defined main subprogram.
	(Gen_Main):  Declare Ada_Main_Program and (if CodePeer_Mode
	is set) Call_Main_Subprogram ahead of, as opposed to
	inside of, Main.
	(Gen_Output_File_Ada): Remove CodePeer_Mode-conditional
	generation of a "with" of the user-defined main subprogram.
	Remove CodePeer_Mode-conditional call to Gen_CodePeer_Wrapper
	(which is now called from Gen_Main instead).

2011-08-05  Emmanuel Briot  <briot@adacore.com>

	* projects.texi: Added reference to the Makefile package.

2011-08-05  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb: Minor comment rewording.

2011-08-05  Ed Falis  <falis@adacore.com>

	* env.c: Fix comment.

2011-08-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Is_Finalization_Procedure): Reimplemented to avoid
	character comparison and rely on concrete entities instead.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb: (Check_Private_Overriding): better error message,
	suggested by AI95-0068.

2011-08-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Find_Last_Init): Use Next_Suitable_Statement to retrieve
	the two potential initialization calls. This accounts for any
	access-before-elaboration checks which may precede the initialization
	calls.
	(Next_Suitable_Statement): New routine. Returns the next real statement
	after the input node while skipping generated checks.
	* sem_elab.adb (Check_A_Call): New formal parameter In_Init_Proc along
	with comment on usage.
	Do not generate Elaborate_All when the trigger is a finalization call
	coming from a type init proc.
	(Check_Elab_Call): Propagate the initialization procedure context to
	subsequent calls to Check_A_Call.
	(Check_Internal_Call_Continue): Propagate the initialization procedure
	context to subsequent calls to Check_Elab_Call.
	(Is_Finalization_Procedure): New routine. Returns True if the input
	entity denotes a [Deep_]Finalize routine.
	* sem_elab.ads (Check_Elab_Call): New formal parameter In_Init_Proc
	along with comment on usage.

2011-08-05  Vadim Godunko  <godunko@adacore.com>

	* s-atocou.ads: Add list of supported platforms.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb, restrict.adb: Correct style for or'ing Boolean variables

	* opt.ads (Disable_ALI_File): new Boolean flag
	* lib-writ.adb (Write_ALI): when Disable_ALI_File is set, do nothing

2011-08-05  Ed Falis  <falis@adacore.com>

	* env.c (__gnat_environ): Fix includes for RTPs and VTHREADS so that
	environ is properly defined.

2011-08-05  Vincent Celier  <celier@adacore.com>

	* make.adb (Compilation_Phase): Exit immediately when all objects have
	been found up to date, to avoid multiple exit messages.
	* prj-nmsc.adb (Add_Source): Allow duplicate source file names in the
	same project for languages with no compiler.
	* gnat_ugn.texi: Document compiler switch -gnateI and gnatmake switch
	-eI.
2011-08-05  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.ads, sem_type.adb, make.adb, sem_prag.adb, sem_util.adb,
	sem_util.ads, sem_attr.adb, restrict.ads, sem_ch6.adb, prj-conf.adb,
	prj-conf.ads, s-atocou.ads, s-atocou.adb, s-atocou-x86.adb,
	s-atocou-builtin.adb: Minor reformatting.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* exp_ch7.adb (Establish_Transient_Scope): in formal verification mode,
	if the node to wrap is a pragma check, this node and enclosed
	expression are not expanded, so do not apply any transformations here.
	* exp_prag.adb (Expand_Pragma_Check): document the need to avoid
	introducing transient scopes.

2011-08-05  Jose Ruiz  <ruiz@adacore.com>

	* adaint.c (__gnat_set_writable, __gnat_set_readable,
	__gnat_set_executable, __gnat_set_non_writable, __gnat_set_non_readable,
	__gnat_copy_attribs): On VxWorks 6.x and later, the required chmod
	routine is available, so we use the default implementation of these
	functions.
	* s-os_lib.ads (Copy_File, Copy_Time_Stamps): Document that there is
	support for copying attributes on VxWorks 6.

2011-08-05  Yannick Moy  <moy@adacore.com>

	* debug.adb: Remove use of -gnatd.D.
	* gnat1drv.adb (Adjust_Global_Switches): adjust switches for ALFA mode
	* opt.ads: Simplify variables for ALFA mode, to keep one only
	* restrict.adb, sem_prag.adb: Adapt treatment done for CodePeer mode
	to ALFA mode.

2011-08-05  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Do_Autoconf): Look also for --RTS in
	Builder'Default_Switches.

2011-08-05  Vincent Celier  <celier@adacore.com>

	* makeusg.adb: Add lines for --create-map-file switches.

2011-08-05  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): For a subprogram, if a type in the
	profile is incomplete and the full view is available, replace it with
	the full view.
	* sem_ch6.adb (Possible_Freeze): if a type in the profile is
	incomplete, freezing the subprogram is delayed until the full view is
	frozen.
	* sem_type.adb (Disambiguate): an ambiguity between a user-defined
	fixed-point multiplication operator and the predefined operator is
	resolved in favor of the user-defined one.

2011-08-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* init.c [__alpha__ && __osf__] (__gnat_error_handler): Use
	CONST_CAST.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_unit.adb (Type_Without_Stream_Operation): determine
	whether a type lacks user-defined Read or Write operations, or has a
	component that lacks them.
	* sem_attr.adb (Check_Stream_Attribute): if restriction
	No_Default_Stream_Attributes is active, verify that all subcomponent
	types of the target have user-defined stream operations, and report
	error otherwise.
	* exp_ch3.adb (Stream_Operqtion_OK): use Type_Without_Stream_Operation.
	* exp_strm.adb: Build_Elementary_Input_Call,
	Build_Elementary_Write_Call): remove checks for restriction
	No_Default_Stream_Attributes, now checked in semantics.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* prj-conf.ads, prj-conf.adb (Do_Autoconf): If there is no --RTS
	switches on the command line, look for all valid --RTS switches in the
	Builder switches and for each language use the first runtime name found
	to invoke gprconfig.
	(Get_Or_Create_Configuration_File): Warn if --RTS is specified on the
	command line and there is no auto-configuration.
	(Runtime_Name_Set_For): New function.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Object_Declarations): Do not generate the
	elaborate initialization expression for variable Abort when processing
	a package body or a declaration.
	(Create_Finalizer): Propagate the package context when creating the
	exception-related variables.
	* exp_ch7.ads (Build_Object_Declarations): New formal parameter
	For_Package along with usage comment.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Makefile.in: Clean up targets.
	Enable new package for atomic counters and copy-on-write implementation
	of unbounded strings on x86 platforms.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb: Minor reformatting.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_strm.adb: Minor reformatting.

2011-08-04  Vadim Godunko  <godunko@adacore.com>

	* s-atocou.adb: Replace by dummy version and use on targets where atomic
	operations are not supported.
	* s-atocou-builtin.adb: Renamed from s-atocou.adb.
	* s-atocou-x86.adb: New file.
	* Makefile.rtl: Add s-atocou.o file

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* make.adb (Compile): Move setting of CodePeer_Mode to ...
	(Compilation_Phase): ... here.
	(Scan_Make_Arg): Now bind and link by default in CodePeer mode.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* Make-generated.in: Fix minor typo in comment.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* gnatls.adb: Use Prj.Env.Initialize_Default_Project_Path to retrieve
	the project path.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* a-coinho.adb: Minor reformatting.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* a-coinho.ads: Minor reformatting.

2011-08-04  Vadim Godunko  <godunko@adacore.com>

	* s-atocou.ads, s-atocou.adb: New files.
	* a-strunb-shared.ads, a-strunb-shared.adb, a-stwiun-shared.ads,
	a-stwiun-shared.adb, a-stzunb-shared.ads, a-stzunb-shared.adb: Remove
	direct use of GCC's atomic builtins and replace them by use of new
	atomic counter package.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_strm.adb: better error message for No_Default_Stream_Attributes.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-tags.adb (Unregister_Tag): Replace the complex address arithmetic
	with a call to Get_External_Tag.
	* exp_ch7.adb (Build_Cleanup_Statements): Update the comment on
	subprogram usage. Remove the guard against package declarations and
	bodies since Build_Cleanup_Statements is no longer invoked in that
	context.
	(Build_Components): Initialize Tagged_Type_Stmts when the context
	contains at least one library-level tagged type.
	(Build_Finalizer): New local variables Has_Tagged_Types and
	Tagged_Type_Stmts along with associated comments on usage. Update the
	logic to include tagged type processing.
	(Create_Finalizer): Insert all library-level tagged type unregistration
	code before the jump block circuitry.
	(Expand_N_Package_Body): Remove the call to Build_Cleanup_Statements.
	(Expand_N_Package_Declaration): Remove the call to
	Build_Cleanup_Statements.
	(Process_Tagged_Type_Declaration): New routine. Generate a call to
	unregister the external tag of a tagged type.
	(Processing_Actions): Reimplemented to handle tagged types.
	(Process_Declarations): Detect the declaration of a library-level
	tagged type and carry out the appropriate actions.
	(Unregister_Tagged_Types): Removed. The machinery has been directly
	merged with Build_Finalizer.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* bindgen.ads, gnatlink.adb, sem_ch4.adb, gnatbind.adb, put_alfa.adb,
	gnatls.adb, exp_ch3.adb: Minor reformatting.

2011-08-04  Marc Sango  <sango@adacore.com>

	* sem_attr.adb (Analyze_Attribute): Replace the message
	"invisible attribute of}" of the spark restriction violation in
	attribute reference by the simple message "invisible attribute of type".
	Indeed, the node value Error_Msg_Node_1 used is in conflit with the
	two insertion characters: '&' and '}'.

2011-08-04  Vadim Godunko  <godunko@adacore.com>

	* impunit.adb (Non_Imp_File_Names_12): Add "a-coinho".
	* a-coinho.ads, a-coinho.adb: New file.
	* Makefile.rtl: Add Ada.Containers.Indefinite_Holders.

2011-08-04  Nicolas Roche  <roche@adacore.com>

	* alfa_test.adb: Not all ali files are containing alfa information even
	if compiled with -gnatd.F. So suppress warning about missing ALFA
	information.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Add_ALFA_Scope): use non-empty unique name for
	scope.
	* put_alfa.adb: Check that scope name is not empty.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Stream_Operation_Ok): new predicate
	Needs_Elementary_Stream_Operation, to determine whether user-defined
	Read and Write attributes are available for the elementary components
	of the given type. If only the predefined attributes are available,
	then when restriction No_Default_Stream_Attributes is active the
	predefined stream attributes for the composite type cannot be created.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* bindgen.adb: Fix obsolete comments and names from Ada/C days.
	Put routines in alpha order

2011-08-04  Jose Ruiz  <ruiz@adacore.com>

	* gcc-interface/Makefile.in: Remove xenomai specific versions of system.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/lang.opt: Add AdaWhy language, simimlar to Ada.
	* gcc-interface/lang-specs.h: Add handling of AdaWhy specs (calls
	gnat1why).

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, make.adb, a-cohata.ads, sem_prag.adb, makeutl.adb,
	lib-xref-alfa.adb: Minor reformatting.

2011-08-04  Marc Sango  <sango@adacore.com>

	* sem_ch12.adb (Analyze_Generic_Package_Declaration,
	Analyze_Generic_Subprogram_Declaration, Analyze_Package_Instantiation,
	Analyze_Subprogram_Instantiation): Check absence of generic in SPARK
	mode.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb (Gen_Adainit_C): Remove.
	(Gen_Adafinal_C): Ditto.
	(Gen_Elab_Externals_C): Ditto.
	(Gen_Elab_Calls_C): Ditto.
	(Gen_Elab_Order_C): Ditto.
	(Gen_Elab_Defs_C): Ditto.
	(Gen_Finalize_Library_C): Ditto.
	(Gen_Finalize_Library_Defs_C): Ditto.
	(Gen_Main_C): Ditto.
	(Gen_Output_File_C): Ditto.
	(Gen_Restrictions_C): Ditto.
	(Gen_Versions_C): Ditto.
	(Write_Info_Ada_C): Ditto.
	(Gen_Object_Files_Options): Call WBI instead of Write_Info_Ada_C
	(Gen_Output_File): Do not force Ada_Bind_File anymore.
	Always call Gen_Output_File_Ada.
	* gnatlink.adb (Begin_Info): Now a constant.
	(End_Info): Ditto.
	(Ada_Bind_File): Remove
	(Process_Args): Do not handle -A/-C.  Remove not Ada_Bind_File cases.
	* switch-b.adb (Scan_Binder_Switches): Do not handle -C.
	* gnatbind.adb (Gnatbind): Remove not Ada_Bind_File cases.
	* opt.ads (Ada_Bind_File): Remove.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* projects.texi: Document target-specific directory in default project
	path for gnatmake.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* gnatls.adb, prj-env.adb: Add $prefix/share/gpr to default project
	path in all cases .

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb, sem_ch5.adb, sem_util.adb, sem_ch4.adb, sem_ch8.adb,
	opt.ads, lib-xref.ads: Code clean up.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Update description of Test_Case
	* gnat_ugn.texi: Typo.

2011-08-04  Ed Falis  <falis@adacore.com>

	* adaint.c (__gnat_get_number_of_cpus): fix typo in last checkin.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Suitable_Element): Skip field _parent on .NET/JVM when
	it is of type Root_Controlled. This action eliminates fields Prev and
	Next from type equality.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb: Correct typo.

2011-08-04  Matthew Heaney  <heaney@adacore.com>

	* a-cohata.ads (Hash_Table_Type): default-initialize the Nodes
	component.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb (Check_Arg_Is_String_Literal): remove useless procedure
	(Analyze_Pragma): allow static string expression for name of Test_Case,
	instead of simply string literals.
	* sem_util.adb (Get_Name_From_Test_Case_Pragma): adapt to static string
	expressions.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Complete_Mains.Find_File_Add_Extension): Use canonical
	case suffixes to find truncated main sources.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* impunit.adb (Non_Imp_File_Names_95): Add g-tastus.
	s-stusta.adb (Compute_All_Task): Use Put_Line instead of Put.
	(Compute_Current_Task): Ditto.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* gnat_ugn.texi: Mention GNAT.Task_Stack_Usage.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Is_Global_Constant): new function that detects
	library-level constant.
	(Add_ALFA_Xrefs): ignore global constants in ALFA xref.
	* sem_res.adb (Resolve_Actuals): do not add cross-reference to Formal
	used as selector of parameter association, in ALFA mode.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, exp_ch7.adb, exp_util.adb, bindgen.adb, sem_prag.adb,
	s-tassta.adb, exp_ch4.adb, exp_disp.adb, s-stausa.adb: Minor
	reformatting.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* make.adb (Linking_Phase): Set source search path before calling
	gnatlink in CodePeer mode.

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* exp_ch7.adb (Expand_N_Package_Body, Expand_N_Package_Declaration):
	Remove code which takes care of building TSDs.
	* rtsfind.ads (RE_Check_Interface_Conversion): New entity.
	* exp_ch4.adb (Apply_Accessibility_Check): Add support for generating
	the accessibility check in VM targets.
	* exp_disp.adb (Make_VM_TSD): Spec moved to exp_disp.ads
	(Building_Static_DT): Now returns false for VM targets.
	(Build_VM_TSDs): Removed.
	(Expand_Interface_Conversion): Generate missing runtime check for
	conversions to interface types whose target type is unknown at compile
	time.
	(Make_VM_TSD): Add missing code to disable the generation of calls to
	Check_TSD if the tagged type is not defined at library level, or not
	has a representation clause specifying its external tag, or -gnatdQ is
	active.
	* exp_disp.ads (Build_VM_TSDs): Removed.
	(Make_VM_TSDs): Spec relocated from exp_disp.adb
	* sem_disp.adb (Check_Dispatching_Operation): No code required to
	register primitives in the dispatch tables in VM targets.
	* exp_ch3.adb (Expand_N_Object_Declaration): Remove wrong expansion of
	initialization of class-wide interface objects in VM targets.
	(Expand_Freeze_Record_Type): For VM targets call Make_VM_TSD (instead
	of Make_DT).

2011-08-04  Jerome Lambourg  <lambourg@adacore.com>

	* gnatlink.adb (Gnatlink): Correct missleading error message displayed
	when dotnet-ld cannot be found.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* bindgen.adb: Simplify significantly generation of binder body file in
	CodePeer mode.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Prevent assert failure
	when compiling binder generated file in CodePeer mode (xxx'Elab_Spec
	not expanded).

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_prag.adb, sem.ads: Code cleanup.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* s-tassta.adb (Task_Wrapper): Rewrite the dynamic stack usage part.
	* s-stausa.adb, s-stausa.ads: Major rewrite. Now provides accurate
	results if possible.
	* s-stusta.adb (Print): Adjust after changes in s-stausa.
	* gnat_ugn.texi: Update dynamic stack usage section.

2011-08-04  Steve Baird  <baird@adacore.com>

	* bindgen.adb (Gen_CodePeer_Wrapper): new procedure.
	Generate (if CodePeer_Mode is set) a "wrapper" subprogram which
	contains only a call to the user-defined main subprogram.
	(Gen_Main_Ada) - If CodePeer_Mode is set, then
	call the "wrapper" subprogram instead of directly
	calling the user-defined main subprogram.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_N_Case_Statement): Check the statements of all
	alternatives of a case statement for controlled objects. Rename local
	variable A to Dead_Alt.
	(Expand_N_If_Statement): Check the then and else statements of an if
	statement for controlled objects. Check the then statements of all
	elsif parts of an if statement for controlled objects.
	(Expand_N_Loop_Statement): Check the statements of a loop for controlled
	objects.
	* exp_ch7.adb (Process_Transient_Objects): Rewrite the condition which
	detects a loop associated with the expansion of an array object.
	Augment the processing of the loop statements to account for a possible
	wrap done by Process_Statements_For_Controlled_Objects.
	* exp_ch9.adb (Expand_N_Asynchronous_Select): Check the triggering
	statements and abortable part of an asynchronous select for controlled
	objects.
	(Expand_N_Conditional_Entry_Call): Check the else statements of a
	conditional entry call for controlled objects.
	(Expand_N_Selective_Accept): Check the alternatives of a selective
	accept for controlled objects.
	(Expand_N_Timed_Entry_Call): Check the entry call and delay
	alternatives of a timed entry call for controlled objects.
	* exp_ch11.adb (Expand_Exception_Handlers): Check the statements of an
	exception handler for controlled objects.
	* exp_util.adb (Requires_Cleanup_Actions (List_Id, Boolean, Boolean)):
	Add formal parameter Nested_Constructs along with its associated
	comment.
	(Requires_Cleanup_Actions (Node_Id)): Update all calls to
	Requires_Cleanup_Actions.
	(Process_Statements_For_Controlled_Objects): New routine.
	* exp_util.ads (Process_Statements_For_Controlled_Objects): New
	routine. Inspect a node which contains a non-handled sequence of
	statements for controlled objects. If such an object is found, the
	statements are wrapped in a block.

2011-08-04  Bob Duff  <duff@adacore.com>

	* sem_type.adb (Covers): If T2 is a subtype of a class-wide type, we
	need to compare with Class_Wide_Type (T2), in order to get at the
	original class-wide type node.
	* sem_type.ads (Covers): Improve the comment.
	* einfo.ads (Class_Wide_Type): Improve the comment.
	* exp_intr.adb (Expand_Unc_Deallocation): Remove unnecessary setting of
	the type of the Deref.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Document that Test_Case pragma can only appear on
	separate declarations.
	* sem_prag.adb (procedure Check_Identifier_Is_One_Of): new procedure to
	check identifier of pragma argument.
	(Chain_TC): check that no other test case associated to the same entity
	share the same name.
	(Check_Test_Case): disallow test case inside subprogram body
	(Analyze_Pragma): correct call to check identifier and not argument
	* sem_util.adb, sem_util.ads (Get_Name_From_Test_Case_Pragma): new
	function gets name from test case pragma.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Document new pragma and aspect.
	* aspects.adb, aspects.ads (Aspect_Id): new value Aspect_Test_Case
	(No_Duplicates_Allowed): new constant array defining whether duplicates
	aspects of each kind can appear on the same declaration.
	* einfo.adb, einfo.ads (Spec_PPC_List): replace field with Contract
	field, which points to a node holding the previous Spec_PPC_List.
	* exp_ch9.adb, sem_ch6.adb, sem_prag.adb: Reach to Spec_PPC_List
	through the indirection with Contract.
	* exp_util.adb (Insert_Actions): raise Program_Error on N_Contract node
	* par-prag.adb (Prag): do nothing on Test_Case pragma
	* sem.adb (Analyze): abort on N_Contract, on which Analyze should not
	be called directly.
	* sem_attr.adb (Analyze_Attribute): allow attribute 'Result in
	component Ensures of Test_Case.
	* sem_ch12.adb, sem_ch6.adb, sem_ch9.adb
	(Analyze_Generic_Subprogram_Declaration,
	Analyze_Subprogram_Instantiation,
	Analyze_Abstract_Subprogram_Declaration,
	Analyze_Subprogram_Body_Helper,
	Analyze_Subprogram_Specification, Analyze_Entry_Declaration):
	insert contract in subprogram node at point of definition
	* sem_ch13.adb
	(Aspect_Loop): do not raise error on duplicate Test_Case aspect
	(Analyze_Aspect_Specifications): analyze Test_Case aspect and create
	corresponding pragma
	(Check_Aspect_At_Freeze_Point): raise Program_Error on Test_Case aspect
	* sem_ch3.adb (Analyze_Declarations): insert analysis of test-cases,
	similar to the analysis of pre/post
	(Derive_Subprogram): insert contract in subprogram node at point of
	derivation.
	* sem_prag.adb, sem_prag.ads
	(Check_Arg_Is_String_Literal, Check_Identifier):
	new checking procedures to be called in treatment of pragmas
	(Check_Test_Case): new procedure to check that a Test_Case aspect or
	pragma is well-formed. This does not check currently that 'Result is
	used only in the Ensures component of a Test_Case.
	(Analyze_Pragma): add case for Test_Case
	(Analyze_TC_In_Decl_Part): pre-analyze the Requires and Ensures
	components of a Test_Case.
	(Preanalyze_TC_Args): new procedure to preanalyze the boolean
	expressions in the 3rd (and 4th if present) arguments of a Test_Case
	pragma, treated as spec expressions.
	(Sig_Flags): add value -1 for Test_Case.
	* sem_util.adb, sem_util.ads (Get_Ensures_From_Test_Case_Pragma,
	Get_Requires_From_Test_Case_Pragma): getters for both expression
	components of a Test_Case.
	* sinfo.adb, sinfo.ads (N_Contract): new kind of node used as
	indirection between an entry or [generic] subprogram entity and its
	pre/post + test-cases.
	(Spec_PPC_List, Spec_TC_List, Set_Spec_PPC_List, Set_Spec_TC_List):
	get/set for fields of an N_Contract node.
	* snames.ads-tmpl (Name_Test_Case, Name_Ensures, Name_Mode,
	Name_Normal, Name_Requires, Name_Robustness, Pragma_Test_Case): new
	names and pragma for Test_Case.
	* sprint.adb (Sprint_Node): raise Program_Error on N_Contract node

2011-08-04  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Improve documentation of gnatmake switch
	--source-info-file=.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Make_Final_Call): Add local variable Atyp (assertion
	type). Initialize Atyp to the appropriate type which is later checked
	for completion. Rewrite the assertion associated with private type
	completion.

2011-08-04  Ed Falis  <falis@adacore.com>

	* adaint.c: Add call to vxCpuConfiguredGet for VxWorks SMP to
	initialize the number of CPUs.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Disambiguate): New subsidiary routine
	In_Same_Declaration_List, to implement AI05-0020: a user-defined
	equality on an anonymous access type whose designated type is private
	does not lead to an ambiguity with the universal access equality
	operator in the body or child units of the defining package. The same
	is true for a multiplication operator on a private type completed with
	a fixed-point-type.

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* opt.ads (Init_Or_Norm_Scalars_Config): Removed.
	(Normalize_Scalars_Config): Removed.
	* opt.adb
	(Register_Opt_Config_Switches): Remove registering config values of
	Init_Or_Norm_Scalars_Config and Normalize_Scalars_Config.
	(Restore_Opt_Config_Switches): Remove code which restores the values of
	Init_Or_Norm_Scalars and Normalize_Scalars. Recalculate value of
	Init_Or_Norm_Scalars.
	(Save_Opt_Config_Switches): Remove code which saves values of
	Init_Or_Norm_Scalars and Normalize_Scalars.
	(Set_Opt_Config_Switches): Remove code which restores config values of
	Init_Or_Norm_Scalars and Normalize_Scalars. Recalculate value of
	Init_Or_Norm_Scalars.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* frontend.adb (Frontend): remove previous patch to avoid full
	qualification in ALFA mode.
	* lib-xref-alfa.adb (Add_ALFA_Xrefs): use unique name for variables.
	* sem_util.adb, sem_util.ads (Unique_Name): new function to define a
	unique name for an entity, which could be used to identify the entity
	across compilation units.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* prj-env.adb
	(Initialize_Default_Project_Path): Add target specific directory
	($prefix/$target/lib/gnat) in front of project path in all cases
	(making gnatmake's behaviour consistent with gprbuild).
	* gnatcmd.adb, make.adb, prj-makr.adb, clean.adb:
	Pass target name from Sdefault to project subsystem.
	* gnatls.adb: Show new target specific default project directory.

2011-08-04  Johannes Kanig  <kanig@adacore.com>

	* cstand.adb: Add Information to Identifier in Standard
	(Identifer_For): Set Entity to the corresponding entity

2011-08-04  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Update doc on gnatcheck.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Add_ALFA_Xrefs): correct definition of ranges of
	xrefs in a scope.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* exp_prag.adb (Expand_Pragma_Check): in ALFA mode, return without
	performing expansion.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper,
	Analyze_Generic_Subprogram_Body): protect call to Process_PCCs so that
	it is not called in ALFA mode.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb, osint.adb, osint.ads (Reset_Command_Line_Files): not used
	after all, so removed.

2011-08-04  Sergey Rybin  <rybin@adacore.com>

	* vms_data.ads: Add missing VMS qualifiers.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb, makeutl.adb, osint.adb, osint.ads (Check_Mains): rebuild
	the list of files on the command line after processing it through
	Complete_Mains.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Raise_Statement): Remove the specialized
	processing for .NET/JVM. These targets can now benefit from
	Raise_From_Controlled_Operation and they share the same processing with
	standard targets.
	(Establish_Transient_Scope): Remove the restriction for .NET/JVM.
	These targets need transient scopes in order to properly finalize short
	lived controlled objects.
	(Make_Handler_For_Ctrl_Operation): Remove the specialized processing for
	 NET/JVM. These targets can now benefit from
	Raise_From_Controlled_Operation and they share the same processing with
	standard targets.

2011-08-04  Geert Bosch  <bosch@adacore.com>

	* tracebak.c (STOP_FRAME): Stop at any next pointer outside the stack

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Has_Visible_Private_Ancestor): subsidiary routine to
	Expand_Record_Aggregate, to determine whether aggregate must be
	expanded into assignments. This is the case if the ancestor part is
	private, regarless of the setting of the flag Has_Private_Ancestor.

2011-08-04  Ed Falis  <falis@adacore.com>

	* vxaddr2line.adb: Add support for e500v2 and for Linux hosts

2011-08-04  Bob Duff  <duff@adacore.com>

	* sinfo.ads: Fix comment.

2011-08-04  Steve Baird  <baird@adacore.com>

	* bindgen.adb (Get_Ada_Main_Name): If CodePeer_Mode is set, then
	choose a package name in much the same way as is
	done for JGNAT when VM_Target /= No_VM, except that
	a slightly more distinctive prefix string is used.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb (Complete_Mains): no longer accept unit names on the
	gnatmake command line.
	This behavior was never documented (and was supported only because of
	an early bug in the code). This case might lead to ambiguous cases
	(between unit names and truncated base names without suffixes).

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-tags.ads, a-tags.adb (Unregister_Tag): New routine.
	Remove the external tag of a tagged type from the internal hash table.
	* exp_ch7.adb (Build_Cleanup_Statements): Update the comment on the
	expanded usage of the routine. Strenghten the check for Is_Master. Add
	processing for tagged types.
	(Build_Finalizer): Create all the necessary lists used in finalizer
	creation when the processed context is a package that may contain
	tagged types.
	(Expand_Cleanup_Actions): Rename the call to Has_Controlled_Objects to
	Requires_Cleanup_Actions.
	(Expand_N_Package_Body): Package bodies may need clean up code
	depending on whether they contain tagged types.
	(Expand_N_Package_Declaration): Package declarations may need clean up
	code depending on whether they contain tagged types.
	(Unregister_Tagged_Types): New routine. Search through a list of
	declarations or statements, looking for non-abstract Ada tagged types.
	For each such type, generate code to unregister the external tag.
	* exp_util.adb (Has_Controlled_Objects (Node_Id)): Renamed to
	Requires_Cleanup_Actions.
	(Requires_Cleanup_Actions (List_Id, Boolean)): New routine. Search
	through a list of declarations or statements looking for non-abstract
	Ada tagged types or controlled objects.
	* exp_util.ads (Has_Controlled_Objects (Node_Id)): Renamed to
	Requires_Cleanup_Actions.
	(Has_Controlled_Objects (List_Id, Boolean)): Removed.
	* rtsfind.ads: Add entry RE_Unregister_Tag to tables RE_Id and
	RE_Unit_Table.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (For_All_Source_Dirs.For_Project): Check if project Prj
	has Ada sources, not project Project, because if the root project
	Project has no sources of its own, all projects will be deemed without
	sources.

2011-08-04  Gary Dismukes  <dismukes@adacore.com>

	* bindgen.adb (Gen_Adainit_Ada): Move the generation of the declaration
	of the No_Param_Proc acc-to-subp type used for initialization of
	__gnat_finalize_library_objects so that it's declared at library level
	rather than nested inside of the adainit routine.

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Generate code to check the external tag ONLY
	if the tagged type has a representation clause which specifies its
	external tag.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb (Has_Private_Ancestor): now a flag on types.
	Remove previous procedure with that name.
	* sem_ch3.adb (Build_Derived_Record_Type): set Has_Private_Ancestor
	when appropriate.
	* sem_aggr.adb (Resolve_Extension_Aggregate): if the ancestor part is a
	subtype mark, the ancestor cannot have unknown discriminants.
	(Resolve_Record_Aggregate): if the type has invisible components
	because of a private ancestor, the aggregate is illegal.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Recognize and take into
	account switches -gnat2005, -gnat12 and -gnat2012.

2011-08-04  Bob Duff  <duff@adacore.com>

	* s-tasdeb.ads: Minor comment fix.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* gnatlink.adb (Gnatlink): Pass -gnat83/95/05/12 switch to gcc in
	CodePeer mode.
	* switch.ads, switch.adb (Is_Language_Switch): New function.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* switch-c.adb: Minor comment addition.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* vms_conv.adb (Process_Argument): Fail graciously when qualifier
	ending with '=' is followed by a space (missing file name).

2011-08-04  Pascal Obry  <obry@adacore.com>

	* g-regist.ads: Fix size of HKEY on x86_64-windows.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Associations): New routine
	Check_Overloaded_Formal_Subprogram to reject a formal package when
	there is a named association or a box initialisation for an overloaded
	formal subprogram of the corresponding generic.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* alfa.ads (ALFA_Xref_Record): add component for type of entity
	* get_alfa.adb, put_alfa.adb: Read and write new component of
	cross-reference.
	* lib-xref-alfa.adb (Collect_ALFA): generate new component.

2011-08-04  Pascal Obry  <obry@adacore.com>

	* urealp.adb: Minor reformatting.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* exp_ch7.adb (build_finalizer.process_declarations.processing_actions):
	Handle the case when Cleanup_Protected_Object returns Empty.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* frontend.adb (Frontend): only qualify names in non-ALFA mode

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Class_Wide_Operation): if the context is a procedure
	call, ignore functions.

2011-08-04  Geert Bosch  <bosch@adacore.com>

	* urealp.adb (Equivalent_Decimal_Exponent): Avoid the use of floating
	point.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb (Compute_Builder_Switches): no longer accept a unit name
	as an index for Builder'Switches. This conforms to the documentation.
	* make.adb (Insert_Project_Sources): avoid duplicate code

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb (Complete_Mains): if the user has passed a relative file
	name on the command line (for instance "../dummy"), never assume it can
	be a unit name.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* bindgen.adb: Remove code the reference or create the
	Break_Start/__gnat_break_start procedure.
	* s-stalib.adb (Break_Start): Removed.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb, makeutl.adb, makeutl.ads (Compute_Builder_Switches): now
	shared with gprbuild.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* par-ch4.adb (P_Primary): preferentially issue an error message about
	a missing parenthesis arount a conditional or case expression in Ada
	2012 mode, if we detect that the alignment is not correct for a
	statement.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Process_Declarations): Do not consider the result of a
	tag-to-class-wide conversion as needing finalization actions.
	* exp_util.adb (Has_Controlled_Objects): Do not consider the result of
	a tag-to-class-wide conversion as needing finalization actions.
	(Is_Finalizable_Transient): The result of a tag-to-class-wide
	conversion does not need finalization actions.
	(Is_Tag_To_CW_Conversion): New routine.
	* exp_util.ads (Is_Tag_To_CW_Conversion): New routine. Determines
	whether an object is the result of a tag-to-class-wide conversion.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): correct order in which
	the left-hand-side and right-hand-side of a conjunct are inserted when
	translating a pre- or postcondition
	* sem_ch6.adb: Correct typo in comment

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* gnat_rm.texi: Ravenscar does not prohibit dependence on
	Unchecked_Conversion and Unchecked_Deallocation.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* make.adb: Minor reformatting.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj.adb, prj.ads, makeutl.adb (Complete_Mains): search for the
	sources in the project and its imported projects, but not in the whole
	tree.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb: Remove debug trace.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Do_Complete): Get the absolute path name of a relative
	path in canonical form, to be able to compare path names on platforms
	such as Windows or Darwin.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb (Traverse_Declarations_Or_Statements.Set_Statement_Entry):
	For a pragma (statement with C1 = 'P'), record the sloc of the pragma.
	* scos.ads: Update documentation accordingly.
	* put_scos.adb (Output_SCO_Line): Omit statement SCOs for disabled
	pragmas.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Bad_Attribute_For_Predicate): flag illegal use of
	attribute only if prefix type is scalar.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb, makeutl.adb, prj-env.adb (Check_Mains): put back support
	in gnatmake for specifying mains on the command line that do not belong
	to the main project. These mains must currently all belong to the same
	project, though.
	(Ultimate_Extension_Of): removed, since duplicated
	Ultimate_Extending_Project.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* make.adb (Do_Codepeer_Globalize_Step): Removed. Use CodePeer_Mode
	instead.
	(CodePeer_Mode_String): New.
	(Linking_Phase, Binding_Phase): Call gnatlink with -P switch in
	CodePeer mode.
	(Scan_Make_Arg): Do not disable binding/linking phase in CodePeer mode.
	* bindgen.adb (Gen_Elab_Calls_Ada): Ignore subprograms in CodePeer
	mode, since no useful elaboration subprogram is needed by CodePeer.
	* gnatlink.adb (Gnatlink): Add support for -P switch (CodePeer mode).
	In this mode, compile binder file with -gnatC and do stop after this
	step.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* exp_ch7.adb: Minor comment fix.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb, make.adb, sem_ch10.adb, bindgen.adb, sem_res.adb,
	exp_ch4.adb, makeutl.adb: Minor reformatting.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb, makeutl.adb, makeutl.ads (Make): major refactoring.
	Create several new subprograms to move code out of Make. This makes the
	code more readable, removes code duplication, and is a preparation work
	for adding support for aggregate projects.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* s-po32gl.ads, s-po32gl.adb: New files.
	* exp_ch7.ads (Get_Global_Pool_For_Access_Type): New function.
	* exp_ch7.adb (Get_Global_Pool_For_Access_Type): New function.
	(Build_Finalization_Collection): Use it.
	* exp_ch4.adb (Complete_Controlled_Allocation): Ditto.
	* rtsfind.ads: System_Pool_32_Global, Re_Global_Pool_32_Object: New
	literals.
	* gcc-interface/Makefile.in: Use s-po32gl.o on VMS.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb (Complete_Mains): add support for specs with no suffix on
	the command line.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb, makeutl.adb (Complete_Mains): if a main specified on the
	command line is not a file name, also check whether it could be a unit
	name.

2011-08-04  Eric Botcazou  <ebotcazou@adacore.com>

	* bindgen.adb (Gen_Finalize_Library_Ada): Factor out code to generate
	the header of the finalization routine.
	If the unit has no finalizer but is a body whose spec has one, then
	generate the decrement of the elaboration entity only.
	If the unit has a finalizer and is a spec, then do not generate the
	decrement of the elaboration entity.
	(Gen_Finalize_Library_C): Likewise.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Alignment_Of): New subsidiary routine.
	(Bounds_Size_Expression): Removed.
	(Double_Alignment_Of): New subsidiary routine.
	(Make_Finalize_Address_Stmts): New local variable Index_Typ. Account
	for a hole in the dope vector of unconstrained arrays due to different
	index and element alignments.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Allocator): diagnose task allocator that will
	raise program_error because body has not been seen yet.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): Protect against child unit with
	an unresolved name.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Do_Complete): Check absolute paths in canonical forms

2011-08-04  Yannick Moy  <moy@adacore.com>

	* alfa.adb, alfa.ads (Unique_Defining_Entity): move function from here
	* sem_util.adb, sem_util.ads (Unique_Defining_Entity): ...to here

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): Do not omit body for
	instantiation in RCI.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* make.adb: Share more code with gprbuild

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* projects.texi: Added documentation for the IDE'Gnat project file
	attribute.

2011-08-04  Nicolas Roche  <roche@adacore.com>

	* gnat_rm.texi: Minor editing.

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* bindgen.adb (Gen_Adafinal_Ada): Do not differentiate the main case
	and the library case for VM targets.
	(Gen_Adainit_Ada): Likewise.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* g-altive.ads: Minor comment updates.
	* prj-nmsc.adb: Minor reformatting.

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* opt.ads
	(Normalize_Scalars_Config): Value of the configuration switch set by
	pragma Normalize_Scalars when it appears in the gnat.adc file.
	(Normalize_Scalars): New field for record Config_Switches_Type. Used
	to save and restore settings of this pragma.
	* opt.adb
	(Register_Opt_Config_Switches, Save_Opt_Config_Switches,
	Restore_Opt_Config_Switches): Add missing support for Normalize_Scalars.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* gnat_ugn.texi: Document gnatlink options -M and -M=mapfile

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* makeutl.adb: Minor reformatting.

2011-08-04  Olivier Hainque  <hainque@adacore.com>

	* g-altive.ads: Update comments to reflect that only the soft
	binding is available today.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* bindgen.adb, einfo.adb, sem_ch12.adb, s-tasren.adb, sem_res.adb,
	makeutl.adb, prj-nmsc.adb, opt.ads, prj-env.adb: Minor reformatting
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* prj-env.adb: Remove local debug traces.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Float_Conversion_Check): correct a typo where Lo_OK
	was used instead of Hi_OK, which could cause a read of an uninitialized
	value later on. Detected while working on the new warning.
	* exp_ch9.adb (Expand_N_Entry_Declaration): remove useless assignment
	to local variable.
	* sem_ch5.adb (Analyze_Assignment): set the last assignment component
	in more cases, in order to detect more unreferenced values.
	* sem_util.adb, sem_util.ads (Get_Enclosing_Object): return enclosing
	object for expression, if any.

2011-08-04  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_intr.adb (Expand_Binary_Operator_Call): Look at the RM size of
	the operand types instead of the Esize.

2011-08-04  Steve Baird  <baird@adacore.com>

	* switch-b.adb (Scan_Binder_Switches): Add -P binder switch, used to
	enable CodePeer_Mode.
	* bindusg.adb (Display): Add help message describing -P binder switch.
	* gnat_ugn.texi: Document -P binder switch.
	* bindgen.adb (Gen_Main_Ada): If CodePeer_Mode is set, then call the
	user-defined main program directly.
	(Gen_Output_File_Ada): If CodePeer_Mode is set, generate a with of the
	user-defined main program in the context clause of the package body.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* alfa.adb, alfa.ads (Get_Entity_For_Decl): remove function, partial
	duplicate of Defining_Entity
	(Get_Unique_Entity_For_Decl): rename function into
	Unique_Defining_Entity
	* einfo.adb, einfo.ads (Is_In_ALFA, Body_Is_In_ALFA): remove flags
	(Formal_Proof_On): remove synthesized flag
	* cstand.adb, sem_ch11.adb, sem_ch2.adb, sem_ch3.adb, sem_ch4.adb,
	sem_ch5.adb, sem_ch6.adb, sem_ch9.adb, sem_res.adb, sem_util.adb,
	sem_util.ads, stand.ads: Remove treatment associated to entities in ALFA
	* sem_prag.adb (Analyze_Pragma): remove special treatment for pragma
	Annotate (Formal_Proof)

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj-env.adb (Create_Config_Pragmas_File): fix handling of multi-unit
	source files with non-standard naming schemes, in imported projects

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb (Complete_Mains): when a multi-unit source file is
	specified on the gprbuild command line, we need to compile all units
	within that file, not just the first one we find
	Fix error message for mains that are not found.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* sem_ch6.adb: Update comment.
	* sem_ch12.adb: Minor reformatting.

2011-08-04  Bob Duff  <duff@adacore.com>

	* s-tasren.adb (Task_Do_Or_Queue): Previous code was reading
	Acceptor.Terminate_Alternative without locking Acceptor, which causes a
	race condition whose symptom is to fail to lock Parent. That, in turn,
	causes Parent.Awake_Count to be accessed without locking Parent, which
	causes another race condition whose symptom is that Parent.Awake_Count
	can be off by 1 (either too high or too low). The solution is to lock
	Parent unconditionally, and then lock Acceptor, before reading
	Acceptor.Terminate_Alternative.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* debug.adb: Update comment.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, exp_util.adb, make.adb, a-tags.adb, sem_prag.adb,
	sem_util.adb, sem_attr.adb, exp_ch4.adb, g-comlin.adb, g-comlin.ads,
	exp_ch6.adb: Minor reformatting.

2011-08-04  Gary Dismukes  <dismukes@adacore.com>

	* gnat_ugn.texi: Add sentence about the case of compile-time-detected
	checks for -gnateE.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* gnat_rm.texi: update Ravenscar desription to reflect Ada2012 RM.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads: Minor reformatting.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb, makeutl.ads, prj-nmsc.adb (Complete_Mains): report error
	even if there is no location.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb, sem_ch4.adb: move check for restriction
	No_Task_Hierarchy to resolve_allocator.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* sinfo.adb, sinfo.ads, sem_prag.adb, sem_ch12.adb (Pragma_Enabled):
	This flag of N_Pragma nodes is not used, remove it as well as all of
	the associated circuitry.

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Switch -gnatdQ disables the generation of the
	runtime check on duplicated externa tags
	* debug.adb Document switch -gnatdQ.

2011-08-04  Gary Dismukes  <dismukes@adacore.com>

	* a-fihema.ads: Minor typo fix.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_ch10.adb: Minor comment update.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Update the node field usage to reflect the renaming of
	Return_Flag to Return_ Flag_Or_Transient_Decl.
	(Return_Flag): Renamed to Return_Flag_Or_Transient_Decl.
	(Set_Return_Flag): Renamed to Set_Return_Flag_Or_Transient_Decl.
	(Write_Field15_Name): Change Return_Flag to
	Return_Flag_Or_Transient_Decl.
	* einfo.ads: Rename node field Return_Flag to
	Return_Flag_Or_Transient_Decl. Update the associated comment and all
	occurrences in entities.
	(Return_Flag): Renamed to Return_Flag_Or_Transient_Decl. Update
	associated Inline pragma.
	(Set_Return_Flag): Renamed to Set_Return_Flag_Or_Transient_Decl. Update
	associated Inline pragma.
	* exp_ch4.ads, exp_ch4.adb (Expand_N_Expression_With_Actions): New
	routine.
	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Update the calls to
	Return_Flag and Set_Return_Flag.
	* exp_ch7.adb (Process_Declarations): Add code to recognize hook
	objects generated for controlled transients declared inside an
	Exception_With_Actions. Update the calls to Return_Flag.
	(Process_Object_Declaration): Add code to add a null guard for hook
	objects generated for controlled transients declared inside an
	Exception_With_Actions. Update related comment.
	* exp_util.adb (Has_Controlled_Objects): Add code to recognize hook
	objects generated for controlled transients declared inside an
	Exception_With_Actions. Update the calls to Return_Flag.
	* expander.adb (Expand): Add new case for N_Expression_With_Actions.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb:(Wrong_Type): Improve error message on a one-element
	positional aggregate.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* par_sco.adb (Process_Decisions.Output_Header): Check and record pragma
	SLOC only for pragmas.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* projects.texi: Minor typo fix.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Check_File): Minor change to traces, to help debugging
	on case-sensitive file systems.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* put_scos.adb (Put_SCOs): Do not emit decision SCO for an X decision
	nested in a disabled pragma.
	* scos.ads, scos.adb, par_sco.ads, par_sco.adb: Record sloc of
	enclosing pragma, if any, for X decisions.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb: Minor reformatting.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* a-tags.adb (Check_TSD): Avoid concatenation of strings, as it is not
	allowed in no run time mode.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* make.adb (Check): When -gnatc is used, check for the source file
	inside the ALI file with a canonical case file name.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb, g-comlin.ads (Add_Switch): Put back support for
	overriding the separator.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb, par_sco.adb, sem_type.adb, exp_util.adb, exp_ch9.adb,
	prj-nmsc.adb, sem_ch13.adb, exp_strm.adb: Minor reformatting.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor documentation fix for pragma Annotate.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Analyze_Attribute): add check during pre-analysis that
	'Result only appears in postcondition of function.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* a-tags.adb (Check_TSD): When raising PROGRAM_ERROR for a duplicated
	external tag, include the value of the external tag in the exception
	message.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Result): modify error message for misplaced 'Result

2011-08-04  Sergey Rybin  <rybin@adacore.com>

	* gnat_rm.texi (pragma Annotate): Fix syntax description to make it
	clear that the second argument must be an identifier.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* exp_ch9.adb (Build_Barrier_Function): When compiling with
	-fpreserve-control-flow, insert an IF statement on the barrier
	condition to ensure that a conditional branch instruction is generated.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj-part.adb, prj.adb, prj.ads, prj-tree.ads
	(Processing_Flags.Ignore_Missing_With): new flag.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb (Find_Sources, Path_Name_Of): Fix handling of
	Source_List_File on case-insensitive systems where the file is actually
	on a case-sensitive file system (NFS,...).

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch6.adb (Analyze_Function_Return): In a rare case where a
	function return contains a controlled [extension] aggregate and the
	return statement is not part of a handled sequence of statements, wrap
	the return in a block. This ensures that all controlled temporaries
	generated during aggregate resolution will be picked up by the
	finalization machinery.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): If aggregate has box-initialized
	components, freeze type before resolution, to ensure that default
	initializations are present for all components.
	* sem_res.adb (Resolve_Actuals): the designated object of an
	accces-to-constant type is a legal actual in a call to an
	initialization procedure.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Extract_Renamed_Object): Add N_Type_Conversion and
	N_Unchecked_Type_Conversion to the possible containers of a renamed
	transient variable.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* par-ch13.adb (Aspect_Specifications_Present): recognize
	"with Identifier'Class =>" as an aspect, so that a meaningful warning
	is issued in Strict mode.
	* par.adb: Fix typos in comments.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Result): modify error message to take into account Post
	aspect when compiling Ada 2012 (or newer) code.

2011-08-04  Nicolas Roche  <roche@adacore.com>

	* env.c (__gnat_clearenv): Avoid use of dynamic size array in order to
	remove need for GCC exceptions.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* makeutl.adb (Do_Complete): Call Debug_Output with the name of the
	project, not the source file name.
	* prj.adb (Find_Sources.Look_For_Sources): If the source has been
	excluded, continue looking. This excluded source will only be returned
	if there is no other source with the same base name that is not locally
	removed.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Intrinsic_Operator): if the result type is
	private and one of the operands is a real literal, use a qualified
	expression rather than a conversion which is not meaningful to the
	back-end.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_ch13.adb (Aspect_Loop): when an aspect X and its classwise
	corresponding aspect X'Class are allowed, proceed with analysis of the
	aspect instead of skipping it.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* s-flocon.adb, s-flocon.ads: Add a body for s-flocon.ads
	This will allow to have an Ada implementation for the subprogram.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Full_Type_Declaration): If the declaration is a
	completion and aspects are present, apply them to the entity for the
	type which is currently the partial view, but which is the one that
	will be frozen.
	* sem_ch13.adb (Analyze_Aspect_Specifications): if the predicate
	applies to a partial view, indicate that the full view has predicates
	and delayed aspects.
	(Replace_Type_Reference): Handle properly predicates that apply to the
	full view of a private completion.

2011-08-04  Eric Botcazou  <ebotcazou@adacore.com>

	* layout.adb (Layout_Type): For composite types, do not set Esize.
	* freeze.adb (Set_Small_Size): Remove test on alignment and do not
	set Esize.
	(Size_Known): Look at the RM size of components instead of the Esize.
	(Freeze_Record_Type): Look at the RM size instead of the Esize to
	issue warning and activate Implicit_Packing.
	(Freeze_Entity): Likewise.  Do not issue a warning for alias/atomic
	if the Esize is not known.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Size>: Set Esize
	for elementary types only.
	(Analyze_Record_Representation_Clause): Look at the RM size instead
	of the Esize to issue errors.
	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not set Esize if it
	is not known.
	<E_Record_Type>: Look at the RM size instead of the Esize.  Remove
	obsolete block.
	Look at the RM size instead of the Esize for types if the latter is
	not known.
	(gnat_to_gnu_field): Use Known_Esize instead of Known_Static_Esize.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb: proper handling of equality not involving anonymous
	access types.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Create_Finalizer): Remove local variables Spec_Nod and
	Vis_Decls. When creating a library-level finalizer for a package spec,
	both the declaration and body of the finalizer are inserted either in
	the visible or private declarations of the package spec.

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Derive_Subprograms): Complete assertion to request the
	use of the full-view of a type when invoking Is_Ancestor.
	* sem_type.adb (Is_Ancestor): For consistency, when the traversal of
	the full-view of private parents is requested, then use also the
	full-view of the parent of the first derivation.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* s-taprop-vxworks.adb (Enter_Task): Use System.Float_Control.Reset
	instead of the locally imported procedure.
	* s-taprop-mingw.adb (Enter_Task): Ditto.
	* s-valrea.adb (Scan_Real): Ditto.
	* s-imgrea.adb (Set_Image_Real): Ditto.
	* s-flocon.ads: Make the package pure.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* sinfo.ads, sinfo.adb (Debug_Statement, Set_Debug_Statement): Remove.
	* tbuild.ads, tbuild.adb (Make_Pragma): Adjust accordingly.
	* sinfo-cn.ads, sinfo-cn.adb (Change_Name_To_Procedure_Call_Statement):
	New subprogram, moved here from...
	* par.adb, par-ch5.adb (P_Statement_Name): ... here.
	* par-prag.adb (Par.Prag, case Pragma_Debug): Do not perform any
	rewriting of the last argument into a procedure call statement here...
	* sem_prag.adb (Analyze_Pragma, case Pragma_Debug): ...do it there
	instead.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Minor reformatting.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* erroutc.adb: Minor reformatting.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* par_sco.adb: Comment update.

2011-08-04  Tristan Gingold  <gingold@adacore.com>

	* s-flocon.ads: New file.
	* g-flocon.ads: Now a renaming of s-flocon.
	* Makefile.rtl: Add s-flocon.o

2011-08-04  Javier Miranda  <miranda@adacore.com>

	* exp_strm.adb (Build_Array_Input_Function): if the array type is
	constrained, do not attempt to build a subtype of it.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* errout.ads Change comments: remove 'R'M as an example where quotes
	are needed; add ALFA as another case where quotes are not needed
	* erroutc.adb (Set_Msg_Insertion_Reserved_Word): add ALFA as another
	case where quotes are not needed.
	* sem_ch11.adb, sem_ch13.adb, sem_ch2.adb, sem_ch3.adb, sem_ch4.adb,
	sem_ch5.adb, sem_ch6.adb, sem_ch9.adb, sem_prag.adb, sem_res.adb:
	Remove all occurrences of 'A'L'F'A

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: check legality of invariant pragma.

2011-08-04  Eric Botcazou  <ebotcazou@adacore.com>

	* bindgen.adb: Add comments.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* einfo.adb, einfo.ads: Free Flag254 and make Formal_Proof_On a
	synthesized flag.
	* sem_prag.adb (Analyze_Pragma): record the pragma Annotate
	(Formal_Proof, On/Off) in the Rep_Item list of the current subprogram.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb, exp_ch6.adb, sem_ch3.adb, layout.adb, sem_ch5.adb,
	osint-c.ads, sem_util.ads, gnat1drv.adb, targparm.ads, sem_ch6.adb,
	sem_ch13.adb, s-pooloc.adb: Minor reformatting.

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* s-pooloc.ads, s-pooglo.ads: Minor reformatting

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	PR ada/47880
	* s-pooloc.adb (Deallocate): Fix the case of deallocating the only
	allocated object.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, exp_ch4.adb: Minor reformatting.

2011-08-04  Jerome Lambourg  <lambourg@adacore.com>

	* back_end.ads (Gen_Or_Update_Object_File): Add more comments.

2011-08-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Composite_Equality): code cleanup: use component
	type in all cases to compute list of primitive operations, because full
	view may be an itype that is not attached to the list of declarations.

2011-08-04  Eric Botcazou  <ebotcazou@adacore.com>

	* bindgen.adb (Gen_Adafinal_Ada): Generate an early return if the
	library has already been finalized.
	(Gen_Adafinal_C): Likewise.
	(Gen_Adainit_Ada): Generate an early return if the library has
	already been elaborated.
	(Gen_Adainit_C): Likewise.
	(Gen_Output_File_Ada): Generate an elaboration flag.
	(Gen_Output_File_C): Likewise.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Disable the generation of
	Set_Finalize_Address_Ptr for CodePeer because Finalize_Address was not
	built in the first place.
	(Expand_N_Allocator): Disable the generation of Set_Finalize_Address_Ptr
	for CodePeer because Finalize_Address was not built to begin with.
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Ditto.

2011-08-04  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_tmp_name): Use current process id to create temp
	filenames, this ensures unicity of filenames across processes.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindgen.adb (Gen_Finalize_Library_Ada): Rename generated routine
	Raise_Controlled to Raise_From_Controlled_Operation. Update the
	signature of Raise_From_Controlled_Operation by adding flag From_Abort.
	Add False as the actual to From_Abort in the generated call to
	Raise_From_Controlled_Operation.

2011-08-04  Jerome Lambourg  <lambourg@adacore.com>

	* osint-c.ads, osint-c.adb (Set_Library_Info_Name): Move to declaration
	so that the ali file name can be retrieved from outside of this package.
	* back_end.ads, back_end.adb (Gen_Or_Update_Object_File): New method
	doing nothing in the general case, but used to update the object file
	timestamp if directly generated by the backend.
	* gnat1drv.adb (Gnat1drv): Make sure the object file's timestamp is set
	to a later time than the ali file one.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* einfo.adb, einfo.ads (Formal_Proof_On): new flag set on subprogram
	entities whose body contains an Annotate pragma which forces formal
	proof on this body.
	* sem_ch11.adb, sem_ch2.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb,
	sem_ch6.adb, sem_ch9.adb, sem_res.adb: Adapt call to
	Mark_Non_ALFA_Subprogram to pass in a message and node.
	* sem_prag.adb (Analyze_Pragma): add treatment of pragma Annotate
	(Forma_Proof, On) which sets the flag Formal_Proof_On in the
	surrounding subprogram.
	* sem_util.adb, sem_util.ads (Mark_Non_ALFA_Subprogram,
	Mark_Non_ALFA_Subprogram_Unconditional): if the subprogram being marked
	as not in ALFA is annotated with Formal_Proof being On, then an error
	is issued based on the additional parameters for message and node.
	* snames.ads-tmpl (Name_Formal_Proof): new name for annotation.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_Freeze_Class_Wide_Type): Do not generate
	Finalize_Address when CodePeer is enabled.

2011-08-04  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_tmp_name): Use _tempnam() instead of tempnam() as
	the latter returns a pointer to a static buffer which is deallocated
	at the end of the routine.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Array_Type_Declaration): move test for type in ALFA
	after index creation; mark unconstrained base array type generated as
	being in/not in ALFA as well
	(Make_Index): mark subtype created as in/not in ALFA
	* sem_ch5.adb (Analyze_Iteration_Scheme): mark entity for iterating
	over a loop as in/not in ALFA, depending on its type and form of loop
	iteration.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Object_Declarations): Initialize flag Abort
	directly to False on .NET and JVM.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Constrain_Enumeration, Constrain_Integer): remove
	constraint that subtype must come from source code to be in ALFA, so
	that anonymous subtypes can be in ALFA too.

2011-08-04  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): remove obsolete addition of
	reference for ALFA mode.
	* lib-xref-alfa.adb, lib-xref.ads (Traverse_Compilation_Unit): make
	procedure public so as to use it from formal verification back-end.

2011-08-04  Jerome Lambourg  <lambourg@adacore.com>

	* g-comlin.adb (For_Each_Simple_Switch.Is_In_Config): Remove the
	invalid checks of the Parameter, making Remove_Switch not working
	correctly.

2011-08-04  Arnaud Charlet  <charlet@adacore.com>

	* targparm.ads: Update header: no run-time exception is needed on this
	file.

2011-08-04  Vincent Celier  <celier@adacore.com>

	* a-fihema.adb: Use System.IO instead of GNAT.IO

2011-08-04  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb (Access_Definition): Anonymous access to subprogram types
	are forbidden in Compiler_Unit mode.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb: Minor reformatting.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* bindgen.adb (Gen_Finalize_Library_Ada): Update the import string for
	library-level finalizers.
	(Gen_Finalize_Library_C): Update the import string for library-level
	finalizers.
	(Gen_Finalize_Library_Defs_C): Update the definition name of a
	library-level finalizer.
	* exp_ch7.adb: Remove with and use clauses for Stringt.
	(Create_Finalizer): Remove local variables Conv_Name, Prag_Decl,
	Spec_Decl. Add local variable Body_Id. The names of library-level
	finalizers are now manually fully qualified and are no longer external.
	A single name is now capable of servicing .NET, JVM and non-VM targets.
	Pragma Export is no longer required to provide visibility for the name.
	(Create_Finalizer_String): Removed.
	(New_Finalizer_Name): New routine which mimics New_..._Name.

2011-08-04  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_elab.adb (Check_Internal_Call_Continue): Change the type of the
	elaboration counter to Standard_Short_Integer.
	* sem_util.adb (Build_Elaboration_Entity): Likewise.
	* bindgen.adb (Gen_Elab_Externals_Ada): Adjust to above change.
	(Gen_Elab_Externals_C): Likewise.

2011-08-04  Ed Falis  <falis@adacore.com>

	* system-vxworks-arm.ads, system-vxworks-sparcv9.ads,
	system-vxworks-ppc.ads, system-vxworks-m68k.ads,
	system-vxworks-mips.ads, system-vxworks-x86.ads
	(Always_Compatible_Rep): set to False for all VxWorks targets.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* par_sco.adb, prj-proc.adb, make.adb, bindgen.adb, prj.adb, prj.ads,
	makeutl.adb, makeutl.ads, prj-nmsc.adb, exp_ch5.adb, exp_ch12.adb,
	exp_ch7.ads, exp_util.ads, sem_util.ads, g-comlin.ads, exp_ch6.adb,
	exp_ch6.ads, lib-xref.ads, exp_ch7.adb, exp_util.adb, exp_dist.adb,
	exp_strm.adb, gnatcmd.adb, freeze.adb, g-comlin.adb, lib-xref-alfa.adb,
	sem_attr.adb, sem_prag.adb, sem_util.adb, sem_elab.adb, sem_ch8.adb,
	sem_ch11.adb, sem_eval.adb, sem_ch13.adb, sem_disp.adb, a-fihema.adb:
	Minor reformatting and code reorganization.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* projects.texi: Added doc for aggregate projects.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb, prj-nmsc.adb, prj-env.adb (Process_Declarative_Items):
	Add support for overriding the Project_Path in aggregate projects.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* a-cofove.ads: Minor reformatting.

2011-08-04  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Update the comment
	on the generated code.
	(Build_Finalize_Statements): Update the comment on the generated code.
	(Build_Initialize_Statements): Update the comment on the generated code.
	(Build_Object_Declarations): Add local variable Result. The object
	declarations are now built in sequence.
	* rtsfind.ads: Add RE_Exception_Occurrence_Access to tables RE_Id and
	RE_Unit_Table.

2011-08-04  Robert Dewar  <dewar@adacore.com>

	* checks.adb, alfa.adb, alfa.ads: Minor reformatting.

2011-08-04  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Elaboration_Entity): Document new definition and use.
	(Elaboration_Entity_Required): Adjust to above change.
	* exp_attr.adb (Expand_N_Attribute_Reference): Likewise.
	* exp_ch12.adb: And with and use for Snames.
	(Expand_N_Generic_Instantiation): Test 'Elaborated attribute.
	* exp_util.adb (Set_Elaboration_Flag): Likewise.
	* sem_attr.adb (Analyze_Attribute) <Check_Library_Unit>: Delete.
	<Check_Unit_Name>: Deal with N_Expanded_Name.
	<Attribute_Elaborated>: Extend to all unit names.
	* sem_elab.adb: And with and use for Uintp.
	(Check_Internal_Call_Continue): Adjust to Elaboration_Entity change.
	* sem_util.ads (Build_Elaboration_Entity): Adjust comment.
	* sem_util.adb (Build_Elaboration_Entity): Change type to Integer.
	* bindgen.adb (Gen_Elab_Externals_Ada): New local subprogram taken
	from Gen_Adainit_Ada.
	(Gen_Elab_Externals_C): Likewise, but taken from Gen_Adainit_C.
	(Gen_Adafinal_Ada): Remove redundant test.  In the non-main program
	case, do not call System.Standard_Library.Adafinal; instead call
	finalize_library if needed.
	(Gen_Adafinal_C): Likewise.
	(Gen_Adainit_Ada): Do not set SSL.Finalize_Library_Objects in the
	non-main program case.
	(Gen_Adainit_C): Generate a couple of external declarations here.
	In the main program case, set SSL.Finalize_Library_Objects.
	(Gen_Elab_Calls_Ada): Adjust to Elaboration_Entity change.
	(Gen_Elab_Calls_C): Likewise.
	(Gen_Finalize_Library_Ada): Likewise.  Skip SAL interface units.
	(Gen_Finalize_Library_C): Likewise.  Generate a full function.
	(Gen_Main_C): Put back call to Ada_Final and don't finalize library
	objects here.
	(Gen_Output_File_Ada): Generate pragma Linker_Destructor for Ada_Final
	if -a is specified.  Call Gen_Elab_Externals_Ada.  Move around call to
	Gen_Adafinal_Ada.
	(Gen_Output_File_C): Generate __attribute__((destructor)) for Ada_Final
	if -a is specified.  Call Gen_Elab_Externals_C.  Remove useless couple
	of external declarations.  Call Gen_Finalize_Library_C.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj.adb, prj.ads, makeutl.adb, makeutl.ads (Complete_Mains,
	Compute_Compilation_Phases): new subprogram.
	(Builder_Data, Builder_Project_Tree_Data): new subprogram and type
	The number of mains as well as the various compilation phases that
	need to be run are now project tree specific, since various
	aggregated trees might have different requirements. In particular,
	they do not all require bind or link phases.

2011-08-04  Emmanuel Briot  <briot@adacore.com>

	* prj.adb, prj.ads, makeutl.adb, makeutl.ads, prj-env.adb
	(Project_Tree_Appdata): New type.
	It is now possible to associate application-specific data to a project
	tree. In particular, this is used in the gprbuild builder to avoid a
	number of global tables and htables, especially now that there can be
	several project trees loaded at once because of aggregate projects.
	(Debug_Name): new procedure.
	* projects.texi: Clarify syntax of "**" for Source_Dirs

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj.ads, makeutl.adb, makeutl.ads (Queue.Insert): now also inserts
	the "roots" for a main.
	(Fill_From_Project): add support for aggregate projects. Main units
	in aggregated projects are now automatically added in the list of
	files to build (although this fails later on in gprbuild, because
	these files are not using the root proejct tree, so this needs
	further cleanup)
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb (Analyze_Conditional_Expression): only allow boolean
	conditional expression in ALFA.
	* sem_res.adb (Resolve_Conditional_Expression): mark non-boolean
	expressions as not in ALFA.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* a-cofove.adb: Minor reformatting.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* make.adb, prj.adb, prj.ads, makeutl.adb, makeutl.ads
	(Insert_Project_Sources, Insert_withed_Sources_For): moved from the
	gprbuild sources.
	These packages are more logically placed in the Queue package, since
	they manipulate the queue. It is also likely that they can be adapted
	for gnatmake, thus sharing more code.
	(Finish_Program, Fail_Program): moved from the gprbuild sources, so
	that we could move the above.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* errutil.adb (Finalize): clean up the list of error messages on exit.
	Calling this subprogram multiple times will no longer show duplicate
	error messages on stderr.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb, g-comlin.ads (Set_Command_Line): ignore the parameter
	Getopt_Switches when we have already define a command line
	configuration.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* sem_ch11.adb (Analyze_Raise_xxx_Error): do not mark such nodes as not
	in ALFA. Instead, they are considered as assertions to prove.
	* sem_ch4.adb (Analyze_Conditional_Expression): do not always mark such
	nodes as not in ALFA. Instead, include conditional expressions in ALFA
	if they have no ELSE part, or if they occur in pre- and postconditions,
	where the Condition cannot have side-effects in ALFA
	(Analyze_Membership_Op): do not mark such nodes as not in ALFA
	(Analyze_Type_Conversion): do not always mark such nodes as not in ALFA.
	Instead, include type conversion between scalar types in ALFA.
	* sem_ch6.adb (Process_Formals): correctly mark a parameter in ALFA
	if-and-only-if its type is in ALFA.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* scos.adb, get_scos.adb, put_scos.adb
	New code letter for decisions: G (entry guard)
	* par_sco.adb
	(Traverse_Subprogram_Body): Rename to...
	(Traverse_Subprogram_Or_Task_Body): New subrpogram.
	(Traverse_Protected_Body): New subprogram
	(Traverse_Declarations_Or_Statements): Add traversal of task bodies,
	protected bodies and entry bodies.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* einfo.adb, einfo.ads (Is_Postcondition_Proc): new flag for procedure
	entities with get/set subprograms, which is set on procedure entities
	generated by the compiler for a postcondition.
	* sem_ch6.adb (Process_PPCs): set new flag on postcondition procedures
	* alfa.adb, alfa.ads (Get_Entity_For_Decl): new function returning the
	entity for a declaration
	(Get_Unique_Entity_For_Decl): new function returning an entity which
	represents a declaration, so that matching spec and body have the same
	entity.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* a-except-2005.adb, a-cfhama.adb, a-cfhase.adb, a-cfhase.ads,
	a-cforma.adb, a-cforse.ads, a-cforse.adb: Minor reformatting

2011-08-03  Yannick Moy  <moy@adacore.com>

	* lib-xref-alfa.adb (Detect_And_Add_ALFA_Scope): make the subprogram
	library-level because retriction No_Implicit_Dynamic_Code in the
	front-end prevents its definition as a local subprogram
	(Traverse_Compilation_Unit): extract new procedure from Add_ALFA_File,
	for reuse in other contexts
	(Traverse_Declarations_Or_Statements,
	Traverse_Handled_Statement_Sequence, Traverse_Package_Body,
	Traverse_Package_Declaration, Traverse_Subprogram_Body): make all these
	procedures take a callback parameter to be called on all declarations
	* lib-xref.ads
	(Traverse_All_Compilation_Units): new generic function to traverse a
	compilation unit and call a callback parameter on all declarations

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* sem_prag.adb (Process_Interface_Name): Allow duplicated export names
	in Java since they are always enclosed in a namespace that
	differentiates them, and overloaded entities are supported by the VM.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Determine_Range): If a computed bound of an operation is
	outside the range of the base type of the expression, and overflow
	checks are enabled, the result is unknown and cannot be used for any
	subsequent constant folding.
	* sem_eval.adb (Compile_Time_Compare): if the bounds of one operand are
	unknown, so is the result of the comparison.

2011-08-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-except-2005.adb (Raise_From_Controlled_Operation): Add new formal
	From_Abort. When finalization was triggered by an abort, propagate
	Standard'Abort_Signal rather than Program_Error.
	* a-except-2005.ads (Raise_From_Controlled_Operation): Add new formal
	From_Abort.
	* a-except.adb (Raise_From_Controlled_Operation): Add new formal
	From_Abort. When finalization was triggered by an abort, propagate
	Standard'Abort_Signal rather than Program_Error.
	* a-except.ads:(Raise_From_Controlled_Operation): Add new formal
	From_Abort.
	* exp_ch7.adb:(Build_Adjust_Or_Finalize_Statements): New local variable
	Abort_Id. Update the calls to Build_Object_Declarations and
	Build_Raise_Statement to include Abort_Id.
	(Build_Adjust_Statements): New local variable Abort_Id. Update the
	calls to Build_Object_Declarations and Build_Raise_Statement to include
	Abort_Id.
	(Build_Finalize_Statements): New local variable Abort_Id. Update the
	calls to Build_Object_Declarations and Build_Raise_Statement to include
	Abort_Id.
	(Build_Components): Create an entity for Abort_Id when exceptions are
	allowed on the target.
	(Build_Finalizer): New local variable Abort_Id.
	(Build_Initialize_Statements): New local variable Abort_Id. Update the
	calls to Build_Object_Declarations and Build_Raise_Statement to include
	Abort_Id.
	(Build_Object_Declarations): Add new formal Abort_Id. Create the
	declaration of flag Abort_Id to preserve the original abort status
	before finalization code is executed.
	(Build_Raise_Statement): Add new formal Abort_Id. Pass Abort_Id to
	runtime routine Raise_From_Controlled_Operation.
	(Create_Finalizer): Update the call to Build_Raise_Statement to include
	Abort_Id. Update the call to Build_Object_Declarations to include
	Abort_Id. Update the layout of the finalizer body.
	(Make_Handler_For_Ctrl_Operation): Add an actual for From_Abort.
	(Process_Transient_Objects): New local variable Abort_Id. Remove the
	clunky code to create all flags and objects related to
	exception propagation and replace it with a call to
	Build_Object_Declarations. Update the call to Build_Raise_Statement to
	include Abort_Id.
	* exp_ch7.ads (Build_Object_Declarations): Moved from body to spec.
	Add new formal Abort_Id and associated comment on its use.
	(Build_Raise_Statement): Add new formal Abort_Id and associated comment
	on its use.
	* exp_intr.adb (Expand_Unc_Deallocation): New local variable Abort_Id.
	Remove the clunky code to create all flags and objects related to
	exception propagation and replace it with a call to
	Build_Object_Declarations. Update the call to Build_Raise_Statement.

2011-08-03  Eric Botcazou  <ebotcazou@adacore.com>

	* s-tassta.adb: Fix minor typos.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* rtsfind.ads, makeutl.ads, prj.ads, prj.adb, make.adb,
	lib-writ.adb, makeutl.adb, s-soflin.ads, clean.adb: Minor reformatting.

2011-08-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb (Create_Finalizer): Treat freeze nodes in similar fashion
	to packages. This ensures that the finalizer body will not end up
	inside the freeze node.
	(Process_Declarations): Add code to detect whether a freeze node has a
	nested finalization collection.

2011-08-03  Pascal Obry  <obry@adacore.com>

	* g-awk.adb, g-awk.ads: Make GNAT.AWK API compatible with Ada 2005.
	(Current_Session): Return a not null access to Session_Type.
	(Default_Session): Likewise.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* a-cfdlli.adb, bindgen.adb, exp_ch4.adb, exp_ch13.adb, sem_warn.adb,
	exp_ch3.adb, exp_ch3.ads: Minor reformatting.

2011-08-03  Pascal Obry  <obry@adacore.com>

	* g-awk.ads: Minor comment fix.

2011-08-03  Sergey Rybin  <rybin@adacore.com>

	* tree_io.ads (ASIS_Version_Number): Update because of the changes in
	the tree structure related to discriminant constraints.
	Original_Discriminant cannot be used any more for computing the
	defining name for the reference to a discriminant.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Is_Tag_Indeterminate): If the return type of the
	function is not visibly tagged, this is not a dispatching call and
	therfore is not Tag_Indeterminate, even if the function is marked as
	dispatching on result.

2011-08-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch13.adb: Add with and use clauses for Restrict and Rident.
	(Expand_N_Free_Statement): Add a guard to protect against run-times
	which do not support controlled types.
	* exp_ch3.adb (Expand_Freeze_Class_Wide_Type): Add a guard to protect
	against run-times which do not support controlled types.
	* exp_ch4.adb (Complete_Controlled_Allocation): Add a guard to protect
	against run-times which do not support controlled types.
	* exp_ch7.adb (Build_Finalization_Collection): Add a guard to protect
	against run-times which do not support controlled types.
	* exp_util.adb (Needs_Finalization): Code reformatting. Add a guard to
	protect against run-times which do not support controlled types.

2011-08-03  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_intr.adb: Put back with and use clauses for Exp_Ch11.
	(Expand_Unc_Deallocation): Expand the AT_END handler at the very end.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): indicate that the cursor is
	modified in the source, to prevent spurious warnings when compiling
	with -gnatg.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* a-except-2005.adb: Minor reformatting.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Check_One_Unit): if the only mention of a withed unit
	is a renaming declaration in the private part of a package, do not emit
	a warning that the with_clause could be moved because the renaming may
	be used in the body or in a child unit.

2011-08-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
	Propagate the Comes_From_Source attribute from the original return
	object to the renaming.

2011-08-03  Jose Ruiz  <ruiz@adacore.com>

	* exp_ch7.adb (Build_Raise_Statement): Do not call
	Raise_From_Controlled_Operation when this routine is not present in
	the run-time library.
	(Cleanup_Protected_Object, Cleanup_Task): For restricted run-time
	libraries (Ravenscar), tasks are non-terminating, and protected objects
	and tasks can only appear at library level, so we do not want
	finalization of protected objects nor tasks.
	* exp_intr.adb: Minor clarification in comment.
	bindgen.adb (Gen_Adainit_Ada, Gen_Main_C, Gen_Output_File_Ada,
	Gen_Output_File_C): Remove references to finalization of library-level
	objects when using restricted run-time libraries.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Discriminant_Constraints): Set
	Original_Discriminant only if the parent type is a generic formal.

2011-08-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch13.adb: Add with and use clause for Targparm;
	(Expand_N_Free_Statement): Prevent the generation of a custom
	Deallocate on .NET/JVM targets since this requires pools and address
	arithmetic.
	* exp_ch4.adb (Expand_Allocator_Expression): When compiling for
	.NET/JVM targets, attach the newly allocated object to the access
	type's finalization collection. Do not generate a call to
	Set_Finalize_Address_Ptr on .NET/JVM because this routine does not
	exist in the runtime.
	(Expand_N_Allocator): When compiling for .NET/JVM targets, do not
	create a custom Allocate for object that do not require initialization.
	Attach a newly allocated object to the access type's finalization
	collection on .NET/JVM.
	* exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add special processing for
	assignment of controlled types on .NET/JVM. The two hidden pointers
	Prev and Next and stored and later restored after the assignment takes
	place.
	* exp_ch6.adb (Expand_Call): Add local constant Curr_S. Add specialized
	kludge for .NET/JVM to recognize a particular piece of code coming from
	Heap_Management and change the call to Finalize into Deep_Finalize.
	* exp_ch7.adb (Build_Finalization_Collection): Allow the creation of
	finalization collections on .NET/JVM only for types derived from
	Controlled. Separate the association of storage pools with a collection
	and only allow it on non-.NET/JVM targets.
	(Make_Attach_Call): New routine.
	(Make_Detach_Call): New routine.
	(Process_Object_Declarations): Suppress the generation of
	build-in-place return object clean up code on .NET/JVM since it uses
	pools.
	* exp_ch7.ads (Make_Attach_Call): New routine.
	(Make_Detach_Call): New routine.
	* exp_intr.adb Add with and use clause for Targparm.
	(Expand_Unc_Deallocation): Detach a controlled object from a collection
	on .NET/JVM targets.
	* rtsfind.ads: Add entries RE_Attach, RE_Detach and
	RE_Root_Controlled_Ptr to tables RE_Id and RE_Unit_Table.
	* snames.ads-tmpl: Add name Name_Prev. Move Name_Prev to the special
	names used in finalization.

2011-08-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-fihema.adb: Add with and use clauses for System.Soft_Links.
	(Attach, Detach): Lock the current task when chaining an object onto a
	collection.

2011-08-03  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-except.adb, a-except-2005.adb (Raise_From_Controlled_Operation):
	Rewritten to create the message strings when the exception is not
	raised by an abort during finalization.
	* a-except.ads, a-except-2005.ads: Add pragma Export for procedure
	Raise_From_Controlled_Operation and update its associated comment.
	* a-fihema.ads, a-fihema.adb: New GNAT unit.
	Ada.Finalization.Heap_Management provides key functionality
	associated with controlled objects on the heap, their creation,
	finalization and reclamation. Type Finalization_Collection is
	effectively a wrapper which sits ontop of a storage pool and performs
	all necessary bookkeeping for all the objects it contains. Each
	access-to-controlled or access-to-class-wide type receives a collection
	as part of its expansion. The compiler generates buffer code and
	invokes Allocate / Deallocate to create and destroy allocated
	controlled objects.
	* a-finali.adb ("="): Removed.
	* a-finali.ads ("="): Removed. Controlled types no longer carry hidden
	fields Prev and Next.
	* ali.adb (Scan_ALI): Add parsing code to process PF / Has_Finalizer.
	A library unit with at least one controlled object on the library level
	has a special finalizer which is invoked by the binder. To signal this,
	ali files carry field PF.
	* ali.ads: New field in type Unit_Record called Has_Finalizer. Add
	associated comment on field usage.
	* a-tags.adb (Get_RC_Offset): Removed.
	(Needs_Finalization): New routine.
	* a-tags.ads: Update the structure of the GNAT dispatch tables.
	Dispatch tables now carry field Needs_Finalization which provides
	runtime indication whether a type is controlled or has controlled
	components or both. Remove field RC_Offset.
	(Get_RC_Offset): Removed along with its associated pragma Export.
	Since tagged types with controlled components no longer carry hidden
	field _controller, the special mechanism to retrieve its location is no
	longer needed.
	(Needs_Finalization): New routine.
	* atree.ads, atree.adb (Elist24): New routine.
	(Set_Elist24): New routine.
	* atree.h: Add a define clause for Elist24.
	* bindgen.adb New library-level variable Lib_Final_Built.
	(Gen_Adafinal_Ada): Reimplemented. Depending on the restrictions or the
	presence of a VM target, the routine generates calls to the proper
	library finalization routine.
	(Gen_Adainit_Ada): Import Finalize_Library_Objects only on non-VM
	targets. Set the correct library finalization routine depending on
	whether the library has controlled objects or this is a VM compilation.
	(Gen_Finalize_Library_Ada): New routine. This procedure generates calls
	to library-level finalizers of compiled units in reverse order of
	elaboration. It also produces exception management code and reraises a
	potential exception after all units have been finalized.
	(Gen_Finalize_Library_C): New routine. This procedure generates calls to
	library-level finalizers of compiled units in reverse order of
	elaboration.
	(Gen_Finalize_Library_Defs_C): New routine. This procedure generates the
	definitions of all library-level finalizers available to the compilation
	(Gen_Main_Ada): Directly call Adafinal which now contails all target
	dependent code.
	(Gen_Main_C): Add new local constant Needs_Library_Finalization. Call
	System.Standard_Library.Adafinal directly. If the library needs
	finalization actions, create the sequence of finalization calls.
	(Gen_Output_File_Ada): Alphabetize local variables and constants.
	Generate a with clause for System.Soft_Links when compiling for a VM.
	Remove the code which imports System.Standard_Library.Adafinal as
	Do_Finalize. Generate the library finalization routine.
	(Gen_Output_File_C): Add new local constant Needs_Library_Finalization.
	If the library needs finalization actions, create all the definitions
	of library- level finalizers.
	(Has_Finalizer): New routine. Determines whether at least one compiled
	unit has a library-level finalizer.
	Add type Qualification_Mode.
	(Set_Unit_Name): Add a formal which controls the replacement of a dot.
	* einfo.adb: New usage of field 15 as Return_Flag.
	Remove Finalization_Chain_Entity from the usages of field 19.
	Remove Associated_Final_Chain from the usages of field 23.
	New usage of field 23 as Associated_Collection.
	New usage of field 24 as Finalizer.
	New usage of flag 252 as Is_Processed_Transient.
	(Associated_Final_Chain): Removed.
	(Associated_Collection): New routine.
	(Finalization_Chain_Entity): Removed.
	(Finalizer): New routine.
	(Is_Finalizer): New routine.
	(Is_Processed_Transient): New routine.
	(Return_Flag): New routine.
	(Set_Associated_Final_Chain): Removed.
	(Set_Associated_Collection): New routine.
	(Set_Finalization_Chain_Entity): Removed.
	(Set_Finalizer): New routine.
	(Set_Is_Processed_Transient): New routine.
	(Set_Return_Flag): New routine.
	(Write_Entity_Flags): Include Is_Processed_Transient to the list of
	displayed flags.
	(Write_Field8_Name): Alphabetize the output.
	(Write_Field11_Name): Alphabetize the output.
	(Write_Field12_Name): Alphabetize the output.
	(Write_Field13_Name): Alphabetize the output.
	(Write_Field14_Name): Alphabetize the output.
	(Write_Field15_Name): Alphabetize the output.
	(Write_Field16_Name): Alphabetize the output.
	(Write_Field17_Name): Alphabetize the output.
	(Write_Field18_Name): Alphabetize the output.
	(Write_Field19_Name): Alphabetize the output. Remove the output of
	Finalization_Chain_Entity.
	(Write_Field20_Name): Alphabetize the output.
	(Write_Field21_Name): Alphabetize the output.
	(Write_Field22_Name): Alphabetize the output.
	(Write_Field23_Name): Alphabetize the output. Remove the output of
	Associated_Final_Chain. Add output for Associated_Collection.
	(Write_Field24_Name): Alphabetize the output.
	(Write_Field25_Name): Add output for Finalizer.
	(Write_Field26_Name): Alphabetize the output.
	(Write_Field27_Name): Alphabetize the output.
	(Write_Field28_Name): Alphabetize the output.
	* einfo.ads: Add new field description for Associated_Collection and
	its uses in nodes.
	Remove Associated_Final_Chain and its uses in nodes.
	Remove Finalization_Chain_Entity and its uses in nodes.
	Add new field description for Finalizer and its uses in nodes.
	Add new synthesized attribute Is_Finalizer.
	Add new flag description for Is_Processed_Transient and its uses in
	nodes.
	Add new field description for Return_Flag and its uses in nodes.
	(Associated_Final_Chain): Removed along with its pragma Inline.
	(Associated_Collection): New routine and pragma Inline.
	(Finalization_Chain_Entity): Removed along with its pragma Inline.
	(Finalizer): New routine and pragma Inline.
	(Is_Finalizer): New routine and pragma Inline.
	(Is_Processed_Transient): New routine and pragma Inline.
	(Return_Flag): New routine and pragma Inline.
	(Set_Associated_Final_Chain): Removed along with its pragma Inline.
	(Set_Associated_Collection): New routine and pragma Inline.
	(Set_Finalization_Chain_Entity): Removed along with its pragma Inline.
	(Set_Finalizer): New routine and pragma Inline.
	(Set_Is_Processed_Transient): New routine and pragma Inline.
	(Set_Return_Flag): New routine and pragma Inline.
	* exp_aggr.adb: Alphabetize subprograms.
	(Build_Array_Aggr_Code): Remove formal Flist and its associated comment.
	(Build_Record_Aggr_Code): Remove formals Flist and Obj along with their
	associated comments. Remove local variables External_Final_List and
	Attach.
	Rename Ctrl_Stuff_Done to Finalization_Done. Rename local variable A to
	Ancestor. Remove the retrieval of finalization lists. Update the call to
	Make_Adjust_Call.
	(Convert_Aggr_In_Allocator): Remove the retrieval of finalization
	lists. Update the call to Late_Expansion.
	(Convert_Aggr_In_Assignment): Update the call to Late_Expansion.
	(Convert_Aggr_In_Object_Decl): Update the call to Late_Expansion.
	(Gen_Assign): Remove the retrieval of the finalization list used to
	build the assignment. Update the calls to Make_Init_Call and
	Make_Adjust_Call.
	(Gen_Ctrl_Actions_For_Aggr): Renamed to Generate_Finalization_Actions.
	Remove the mechanism to determine attachment levels and finalization
	list retrieval. Remove the processing for coextensions.
	(Init_Controller): Removed. Controllers no longer exist.
	(Late_Expansion): Remove formals Flist and Obj along with their
	associated comments. Update the calls to Build_Record_Aggr_Code and
	Build_Array_Aggr_Code.
	* exp_ch13.adb (Expand_N_Free_Statement): New routine.
	(Expand_N_Freeze_Entity): Add special processing for finalizers which
	appear in entry bodies, protected subprograms and task bodies.
	* exp_ch13.ads (Expand_N_Free_Statement): New routine.
	* exp_ch3.adb (Add_Final_Chain): Removed.
	(Build_Array_Init_Proc): Alphabetize local variables.
	(Build_Assignment): Alphabetize local variables. Update the call to
	Maked_Adjust_Call.
	(Build_Class_Wide_Master): Rename local variables to better reflect
	their role.
	(Build_Discriminant_Assignments): Code reformatting.
	(Build_Init_Call_Thru): Code reformatting.
	(Build_Init_Procedure): Code reformatting. Generate a special version
	of Deep_Finalize which is capable of finalizing all initialized
	components and ignore the rest.
	(Build_Init_Statements): Rename local variables to better reflect their
	role.
	Reimplement the mechanism to include the creation and update of an index
	variable called a "counter". It is used as a bookmark for tracing
	initialized and non-initialized components.
	(Build_Initialization_Call): Remove local variable Controller_Typ.
	Alphabetize all local variables. Remove the initialization of the
	record controller and update the call to Make_Init_Call.
	(Build_Record_Init_Proc): Rename formal Pe to Rec_Ent.
	New local variable Counter.
	(Constrain_Array): Alphabetize.
	(Expand_Freeze_Array_Type): Create a collection instead of a
	finalization list.
	(Expand_Freeze_Class_Wide_Type): New routine. Creates TSS primitive
	Finalize_Address which is used in conjunction with allocated controlled
	objects.
	(Expand_N_Object_Declaration): Remove the creation of a finalization
	list for anonymous access types. Update the calls to Make_Init_Call and
	Make_Adjust_Call.
	(Expand_Freeze_Record_Type): Remove local variable Flist. Remove the
	retrieval of finalization lists. Remove the expansion of the record
	controller. Create TSS primitive Finalize_Address used in conjunction
	with controlled objects on the heap. Create finalization collections
	for access-to-controlled record components.
	(Expand_Record_Controller): Removed.
	(Freeze_Type): Remove the freezing of record controllers. Freezing of
	class-wide types now requires additional processing. Create
	finalization collections for access-to-controlled types.
	(Increment_Counter): New routine.
	(Make_Counter): New routine.
	(Make_Eq_If): Remove the mention of Name_uController.
	(Make_Predefined_Primitive_Specs): There is no longer need to skip
	types coming from System.Finalization_Root.
	(Predef_Deep_Spec): Reimplemented to reflect the new parameter profiles.
	(Predefined_Primitive_Bodies): There is no longer need to skip types
	coming from System.Finalization_Root.
	(Stream_Operation_OK): Do not generate stream routines for
	type Ada.Finalization.Heap_Management.Finalization_Collection.
	* exp_ch3.ads: Alphabetize subprograms.
	* exp_ch4.adb: Remove with and use clause for Sem_Ch8.
	Add with and use clause for Lib.
	(Complete_Coextension_Finalization): Removed.
	(Complete_Controlled_Allocation): New routine. Create a finalization
	collection for anonymous access-to-controlled types. Create a custom
	Allocate which interfaces with the back end and the machinery in
	Heap_Management.
	(Expand_Allocator_Expression): Add necessary calls to
	Complete_Controlled_Allocation. Remove the retrieval of finalization
	lists. Update the calls to Make_Adjust_Call. Generate a call to
	Ada.Finalization.Heap_Management.Set_Finalize_Address_Ptr to decorate
	the associated collection.
	(Expand_N_Allocator): Remove the processing for dynamic coextensions.
	Code clean up. Remove the retrieval of finalization lists and
	attachment levels.
	Update the call to Make_Init_Call. Generate a call to
	Ada.Finalization.Heap_Management.Set_Finalize_Address_Ptr to decorate
	the associated collection.
	(Get_Allocator_Final_List): Removed. Finalization lists are not
	available.
	(Suitable_Element): Remove the mention of Name_uController.
	* exp_ch5.adb: Remove with and use clauses for Ttypes and Uintp.
	(Make_Tag_Ctrl_Assignment): Rewritten to simply do a finalization of
	the left hand side, carry out the assignment and adjust the left hand
	side.
	* exp_ch6.adb (Add_Final_List_Actual_To_Build_In_Place_Call): Removed.
	(Add_Collection_Actual_To_Build_In_Place_Call): New routine.
	(BIP_Formal_Suffix): Rename BIP_Final_List and BIPfinallist to
	BIP_Collection and BIPcollection.
	(Build_Heap_Allocator): New routine used to allocate the return object
	of a build-in-place function onto a collection.
	(Expand_Ctrl_Function_Call): Moved from Exp_Ch7.
	(Expand_Call): Do not replace direct calls to Deep routines with their
	aliases.
	(Expand_N_Extended_Return_Statement): Give all variables shorter names
	and update their occurrences. Add a special return flag to monitor the
	[ab]normal execution of the function. The flag is set right before the
	return statement.
	Rewrite the mechanism used to allocate a build-in-place return object
	on the heap or on a storage pool.
	(Is_Direct_Deep_Call): New routine.
	(Make_Build_In_Place_Call_In_Allocator): Add a collection to a
	build-in-place function call instead of a final list. Build a call to
	Set_Finalize_Address_Ptr to decorate the associated collection.
	(Make_Build_In_Place_Call_In_Anonymous_Context): Create a temporary in
	order to name the build-in-place function call's result for later
	finalization. Add a collection to a build-in-place function call
	instead of a final list.
	(Make_Build_In_Place_Call_In_Assignment): Add a collection to a
	build-in-place function call instead of a final list. Remove the code
	which moves one final list and transforms it into the actual in a
	nested build-in-place call.
	(Make_Build_In_Place_Call_In_Object_Declaration): Add a collection to a
	build-in-place function call instead of a final list.
	(Move_Final_List): Removed.
	(Needs_BIP_Collection): New routine.
	(Needs_BIP_Final_List): Removed.
	* exp_ch6.ads: Replace BIP_Final_List with BIP_Collection in
	enumeration type BIP_Formal_Kind.
	Update the related comment.
	(Needs_BIP_Collection): New routine.
	(Needs_BIP_Final_List): Removed.
	* exp_ch7.adb: Add with and use clauses for Elists, Exp_Ch6, Stringt
	and Ttypes. Remove with and use clauses for Sem_Type. Alphabetize the
	majority of subprograms in this unit. Add Name_Finalize_Address to
	array Name_Of and TSS_Finalize_Address to array Deep_Name_Of.
	(Build_Adjust_Or_Finalize_Statements): Create the adjust or finalization
	statements for an array type.
	(Build_Adjust_Statements): Create the adjust statements for a record
	type.
	(Build_Cleanup_Statements): New routine. A procedure which given any
	construct containing asynchronous calls, references to _master, or is a
	task body, a task allocation or a protected body produces the necessary
	runtime calls to clean up these constructs.
	(Build_Exception_Handler): New routine.
	(Build_Final_List): Removed.
	(Build_Finalization_Collection): New routine. A core procedure which
	creates a collection to service heap allocated controlled objects
	associated with an access-to-controlled type.
	(Build_Finalize_Statements): Create the finalization statements for a
	record types.
	(Build_Finalizer): New routine. A core procedure which given any
	construct with declarations and/or statements detects all objects which
	need any type of clean up (controlled objects, protected objects) and
	generates all necessary code to clean up the said objects in the proper
	order.
	(Build_Finalizer_Call): New routine.
	(Build_Initialize_Statements): Create the initialization statements for
	an array type. The generated routine contains code to finalize partially
	initialized arrays.
	(Build_Object_Declarations): New routine.
	(Build_Raise_Statement): New routine.
	(Clean_Simple_Protected_Objects): Removed.
	(Controller_Component): Removed.
	(Enclosing_Function): New routine.
	(Expand_Cleanup_Actions): Create a finalizer for a construct which has
	either declarations or statements or both.
	(Expand_N_Package_Body): Create a finalizer for a non-generic package.
	(Expand_N_Package_Declaration): Create a finalizer for a non-generic
	package.
	(Find_Final_List): Removed.
	(Global_Flist_Ref): Removed.
	(In_Finalization_Root): Removed.
	(Insert_Actions_In_Scope_Around): Determine the range of the transient
	scope in terms of tree nodes. Process all transient variables within
	that range.
	(Make_Adjust_Call): Rewritten. There is no longer an attach call
	generated after the adjust.
	(Make_Attach_Call): Removed.
	(Make_Call): New routine.
	(Make_Clean): Removed.
	(Make_Deep_Array_Body): Rewritten to simply invoke the appropriate
	build routines.
	(Make_Deep_Proc): Rewritten to generate the new profile signature used
	in Deep routines.
	(Make_Deep_Record_Body): Rewritten to simply invoke the appropriate
	build routines.
	(Make_Final_Call): Modified to simply create a call to either
	Deep_Finalize or Finalize.
	(Make_Finalize_Address_Body): New routine.
	(Make_Finalize_Address_Stmts): New routine. A function which produces
	TSS primitive Finalize_Address used in conjunction with heap allocated
	controlled objects.
	(Make_Handler_For_Ctrl_Operation): Add specialized code for .NET/JVM.
	(Make_Init_Call): Rewritten. There is no longer an attach call
	generated after initialization.
	(Make_Local_Deep_Finalize): New routine.
	(Make_Set_Finalize_Address_Ptr_Call): New routine.
	(Make_Transient_Block): Remove the finalization list retrieval and
	manipulation.
	(Needs_Finalization): Moved to Exp_Util.
	(Parent_Field_Type): New routine.
	(Preprocess_Components): New routine.
	(Process_Transient_Objects): New routine.
	(Wrap_HSS_In_Block): New routine.
	(Wrap_Transient_Declaration): Remove finalization list management and
	controller insertion.
	(Wrap_Transient_Expression): Code reformatting.
	(Wrap_Transient_Statement): Code reformatting.
	* exp_ch7.ads (Build_Final_List): Removed.
	(Build_Finalization_Collection): New routine.
	(Build_Raise_Statement): New routine.
	(Controller_Component): Removed.
	(Expand_Ctrl_Function_Call): Moved to Exp_Ch6.
	(Find_Final_List): Removed.
	(In_Finalization_Root): Removed.
	(Is_Simple_Protected_Type): Update related comment.
	(Make_Adjust_Call): New parameter profile and associated comments.
	(Make_Attach_Call): Removed.
	(Make_Final_Call): New parameter profile and associated comments.
	(Make_Finalize_Address_Body): New routine.
	(Make_Init_Call): New parameter profile and associated comments.
	(Make_Local_Deep_Finalize): New routine.
	(Make_Set_Finalize_Address_Ptr_Call): New routine.
	(Needs_Finalization): Moved to Exp_Util.
	* exp_ch9.adb (Add_Object_Pointer): Code reformatting.
	(Expand_N_Protected_Body): Remove the handling of finalization lists.
	(Find_Protection_Type): Moved to Exp_Util.
	* exp_disp.adb: Remove with and use clauses for Exp_Ch7.
	(Make_DT): Update sequence of dispatch table initialization. Remove the
	initialization of field RC_Offset. Add initialization of field Needs_
	Finalization.
	* exp_intr.adb (Expand_Unc_Deallocation): Code reformatting.
	Reimplement how an object is first finalized, then deallocated.
	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function):
	Code reformatting.
	* exp_tss.ads: Add special suffix for TSS primitive Finalize_Address.
	Register TSS_Finalize_Address with type TSS_Names.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): New routine. This core
	procedure provides the interface between an allocation / deallocation
	and the support machinery in Ada.Finalization.Heap_Management.
	(Find_Init_Call): Code reformatting.
	(Find_Init_Call_In_List): Code reformatting.
	(Find_Protection_Type): Moved from Exp_Ch9.
	(Find_Prim_Op): Reimplement to add preference of recovered primitive.
	(Has_Controlled_Coextensions): Removed.
	(Has_Controlled_Objects): New routine.
	(In_Library_Level_Package_Body): New routine.
	(Insert_Action_After): New routine.
	(Is_Finalizable_Transient): New routine. This predicate determines
	whether an object declaration is one of the many variants of controlled
	transients.
	(Is_Null_Access_BIP_Func_Call): New routine.
	(Is_Non_BIP_Func_Call): New routine.
	(Is_Related_To_Func_Return): New routine.
	(Needs_Finalization): Moved from Exp_Ch7.
	* exp_util.ads (Build_Allocate_Deallocate_Proc): New routine.
	(Find_Protection_Type): Moved from Exp_Ch9.
	(Has_Controlled_Coextensions): Removed.
	(Has_Controlled_Objects): New routine.
	(In_Library_Level_Package_Body): New routine.
	(Insert_Action_After): New routine.
	(Is_Finalizable_Transient): New routine.
	(Is_Null_Access_BIP_Func_Call): New routine.
	(Is_Non_BIP_Func_Call): New routine.
	(Is_Related_To_Func_Return): New routine.
	(Needs_Finalization): Moved from Exp_ch7.
	* expander.adb (Expand): Add a case for N_Free_Statement.
	* freeze.adb (Freeze_All): Replace the generation of a finalization
	list with a collection for access-to-controlled types.
	(Freeze_Entity): Code reformatting.
	(Freeze_Record_Type): Remove the freezing of a record controller
	component.
	(Freeze_Subprogram): Code reformatting.
	* inline.adb (Cleanup_Scopes): Remove the reset of the scope
	finalization list.
	* lib-writ.adb (Write_Unit_Information): Output "PF" when a package
	has a library-level finalizer.
	* lib-writ.ads: Add "PF" to the sequence of unit attributes.
	* a-filico.ads, a-filico.adb, s-finimp.ads, s-finimp.adb: Removed.
	* Makefile.rtl: Remove a-filico and s-finimp from the list of object
	files. Add a-fihema to the list of object files.
	* par-ch4.adb:
	Alphabetize the associations in type Is_Parameterless_Attribute.
	* rtsfind.ads: Ada.Finalization_List.Controller and
	System.Finalization_Implementation are no longer a GNAT unit.
	Update the range of type Ada_Finalization_Child. Remove the following
	recoverable entities:

	   RE_Attach_To_Final_List
	   RE_Deep_Tag_Attach
	   RE_Finalize_List
	   RE_Finalize_One
	   RE_Finalizable_Ptr_Ptr
	   RE_Global_Final_List
	   RE_Limited_Record_Controller
	   RE_List_Controller
	   RE_Move_Final_List
	   RE_Record_Controller
	   RE_Simple_List_Controller

	Add the following recoverable entities:

	   RE_Add_Offset_To_Address
	   RE_Allocate
	   RE_Base_Pool
	   RE_Deallocate
	   RE_Exception_Identity
	   RE_Finalization_Collection
	   RE_Finalization_Collection_Ptr
	   RE_Needs_Finalization
	   RE_Save_Library_Occurrence
	   RE_Set_Finalize_Address_Ptr
	   RE_Set_Storage_Pool_Ptr
	   RE_Storage_Count
	* sem_aggr.adb (Resolve_Record_Aggregate): Remove mention of
	Name_uController.
	* sem_aux.adb (First_Discriminant): Remove mention of Name_uController.
	(First_Stored_Discriminant): Remove the mention of Name_uController.
	* sem_aux.ads: Comment reformatting.
	* sem_ch10.adb (Build_Chain): Signal the class-wide creation machinery
	to redecorate an already existing class-wide type.
	(Decorate_Tagged_Type): New parameter profile and associated comment.
	Create a "shadow class-wide type" for a shadow entity.
	* sem_ch11.adb (Analyze_Exception_Handlers): Remove the dubious setting
	of the final chain along with the associated comment.
	* sem_ch3.adb (Access_Type_Declaration): Add new local variable
	Full_Desig and set it to the full view of the designated type.
	Initialize the finalization collection to empty.
	(Build_Derived_Record_Type): Alphabetize local variables. Code
	reformatting.
	(Collect_Fixed_Components): Remove the mention of Name_uController.
	(Create_Constrained_Components): Remove the mention of Name_uController.
	(Make_Class_Wide_Type): Add specialized code to redecorate an existing
	class-wide type of a shadow entity.
	(Process_Full_View): Update the machinery which marks type
	Limited_Controlled's entity as limited.
	* sem_ch4.adb (Analyze_One_Call): Code reformatting.
	* sem_ch6.adb (Create_Extra_Formals): Do not generate a finalization
	list, instead make a collection build-in-place formal.
	* sem_ch8.adb (Analyze_Object_Renaming): Look at the available view of
	a designated type in order to establish a match between the renaming
	and the renamed entity.
	(Find_Selected_Component): Add guard to prevent spurious exceptions
	from being raised on .NET/JVM.
	* sem_disp.adb (Check_Dispatching_Operation): Include Finalize_Address
	to the list of primitive that need special processing. Update arrays
	C_Names and D_Names.
	(Replace_Types): Handle class-wide types.
	* sem_elab.adb (Check_A_Call): Since Deep_Initialize now has a
	different parameter profile, look at the first formal.
	* sem_prag.adb: Remove with and use clauses for Exp_Ch7. Add with and
	use clauses for Exp_Util.
	* sem_res.adb: Remove with and use clauses for Elists.
	(Propagate_Coextensions): Removed.
	(Resolve_Allocator): Do not propagate the list of coextensions from one
	allocator to another.
	* sem_util.adb (Build_Actual_Subtype_Of_Component): Rename variable
	Deaccessed_T to Desig_Typ.
	(Enter_Name): Remove the mention of Name_uController.
	(Gather_Components): Remove the mention of Name_uController.
	(Incomplete_Or_Private_View): New routine.
	(Is_Coextension_Root): Removed.
	(Is_Fully_Initialized_Type): Remove the mention of Name_uController.
	* sem_util.ads (Incomplete_Or_Private_View): New routine.
	(Is_Coextension_Root): Removed.
	* s-finroo.ads: Remove with clause for Ada.Unchecked_Conversion.
	Controlled types are now derived from a null tagged record. Remove
	types Finalizable_Ptr, Finalizable and Empty_Root_Controlled.
	* sinfo.adb (Coextensions): Removed.
	(Set_Coextensions): Removed.
	* sinfo.ads: Remove Coextensions from the explanation of node fields
	and its uses in nodes.
	Update the field usage of N_Allocator.
	(Coextensions): Removed along with its pragma Inline.
	(Set_Coextensions): Removed along with its pragma Inline.
	* snames.ads-tmpl: Remove names

	  Name_uClean
	  Name_uController
	  Name_uFinal_List
	  Name_uLocal_Final_List
	  Name_Finalization_Root
	  Name_Next
	  Name_Prev

	Add names

	  Name_uFinalizer
	  Name_Finalize_Address
	* s-pooglo.adb (Allocate): Add overriding indicator.
	(Deallocate): Add overriding indicator.
	(Storage_Size): Add overriding indicator.
	* s-soflin.adb (Adafinal_NT): Invoke Finalize_Library_Objects rather
	than Finalize_Global_List.
	(Null_Finalize_Global_List): Removed.
	(Save_Library_Occurrence): New routine.
	* s-soflin.ads: Remove variable Finalize_Global_List along with its
	initialization. Add variable Finalize_Library_Objects along with its
	pragma Export. Add variables Library_Exception and
	Library_Exception_Set along with their pragma Export.
	(Null_Finalize_Global_List): Removed.
	(Save_Library_Occurrence): New routine.
	* s-tassta.adb (Finalize_Global_Tasks): Call Finalize_Library_Objects
	rather than Finalize_Global_List.
	* tbuild.adb (Unchecked_Convert_To): Capture and set the parent field
	of the constructed node.

2011-08-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* link.c: Include "auto-host.h" before system headers.

2011-08-03  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Add to table Library_Projs only library projects
	that are not extended. Do not check if a library project that is
	extended should be regenerated. Do not add to table Library_Paths the
	libraries that are in extended projects. Link only with libraries that
	are in libray projects that are not extended.
	* prj-nmsc.adb (Check_Library_Attributes): Do not reset flag Library
	for a library project that is extended.

2011-08-03  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Find_Corresponding_Spec): When in an instance, skip
	conforming subprogram renamings that appear to be completions if they
	are not fully conformant.
	Such renamings are homographs but not completions.
	* sem_type.adb (Disambiguate): Handle disambiguation of overloaded
	names in a subprogram renaming that appears in an instance.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb (Expand_Subtype_From_Expr): if the type is limited but
	not immutably limited, build actual subtype from expression to provide
	proper bounds to caller.

2011-08-03  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch8.adb: Minor comment correction.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* exp_strm.adb (Build_Array_Input_Function): In Ada 2005 mode, when
	returning a limited array, use an extended return statement.

2011-08-03  Vincent Celier  <celier@adacore.com>

	* make.adb (Initialize): If --subdirs= is used, but no project file is
	specified, attempt to create the specify subdir if it does not already
	exist and use it as the object directory as if -D had been specified.

2011-08-03  Arnaud Charlet  <charlet@adacore.com>

	* s-tpopsp-vms.adb: New file.
	* s-taprop-vms.adb: Put back ATCB_Key, since needed by this file on VMS.
	* gcc-interfaces/Makefile.in: Use s-taprop-vms.adb on VMS.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* make.adb, makeutl.adb, makeutl.ads, clean.adb (Makeutl.Queue): new
	package.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* cstand.adb (Create_Standard): select Universal_Integer as an ALFA type
	* sem_ch3.adb (Array_Type_Declaration): detect array types in ALFA
	* sem_util.adb, sem_util.ads (Has_Static_Array_Bounds): new function to
	detect that an array has static bounds.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb: Minor reformatting.

2011-08-03  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-irix.adb, s-taprop-hpux-dce.adb, s-taprop-vms.adb
	(ATCB_Key): Removed, not always used.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* gnatcmd.adb, make.adb, prj.adb, prj.ads, makeutl.adb, makeutl.ads,
	clean.adb, prj-conf.adb, prj-env.adb, prj-env.ads (Makeutl): remove
	most remaining global variables.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb, prj-proc.adb, mlib-prj.adb, prj.adb, makeutl.ads,
	prj-util.adb, prj-util.ads, prj-conf.adb, prj-env.adb: Minor
	reformatting.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Is_VM_By_Copy_Actual): Include N_Slide nodes as actuals
	that must be passed by copy in VM targets.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj.ads, prj-nmsc.adb (Files_Htable): removed this htable, which
	duplicates a similar htable now in the project tree.

2011-08-03  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfhama.adb, a-cfhase.adb, a-cforma.adb, a-cforse.adb,
	a-cofove.adb ("=", Length, Is_Empty, Clear, Assign, Copy, Element,
	Replace_Element, Query_Element, Update_Element, Move, Insert, Prepend,
	Append, Delete, Delete_First, Delete_Last, Reverse_Element, Swap,
	Splice, First, First_Element, Last, Last_Element, Next, Previous, Find,
	Reverse_Find, Contains, Has_Element, Iterate, Reverse_Iterate, Capacity,
	Reserve_Length, Length, Strict_Equal, Left, Right): Data-structure
	update.

2011-08-03  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop-posix.adb, s-taprop-linux.adb, s-taprop-tru64.adb
	(ATCB_Key): Removed, not always used.
	* s-tpopsp-posix.adb, s-tpopsp-posix-foreign.adb (ATCB_Key): Moved from
	s-taprop-posix.adb.
	* s-tpopsp-tls.adb: New file.
	* gcc-interface/Makefile.in: Use TLS implementation of s-tpopsp.adb on
	x86/x64/ia64/powerpc/sparc Linux.

2011-08-03  Arnaud Charlet  <charlet@adacore.com>

	* system-aix.ads, system-aix64.ads: Set ZCX_By_Default to True.
	* gcc-interface/Makefile.in: Switch to ZCX by default on AIX ports.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* rtsfind.ads, exp_dist.adb, exp_dist.ads
	(Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call):
	Fix type selection for mapping integer types to PolyORB types.

2011-08-03  Bob Duff  <duff@adacore.com>

	* sem_ch7.adb: Minor comment clarification.

2011-08-03  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Analyze_Enumeration_Representation_Clause): If we get
	an error analyzing a choice, skip further processing. Further
	processing could cause a crash or cascade errors.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* gnatcmd.adb, prj-proc.adb, prj-proc.ads, make.adb, mlib-prj.adb,
	prj.adb, prj.ads, makeutl.adb, makeutl.ads, clean.adb, prj-nmsc.adb,
	prj-util.adb, prj-util.ads, prj-conf.adb, prj-conf.ads, prj-env.adb,
	prj-env.ads (Shared_Project_Tree_Data): new type
	An aggregate project and its aggregated trees need to share the common
	data structures used for lists of strings, packages,... This makes the
	code simpler since otherwise we have to pass the root tree (also used
	for the configuration file data) in addition to the current project
	tree. This also avoids ambiguities as to which tree should be used.
	And finally this saves a bit of memory.
	(For_Every_Project_Imported): new parameter Tree.
	Since aggregated projects are using a different tree, we need to let
	the caller know which tree to use to manipulate the returned project.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* prj-proc.adb, exp_util.ads, exp_ch9.adb, make.adb, prj-ext.adb,
	prj-ext.ads, alfa.ads, sem_ch4.adb, makeutl.adb, makeutl.ads,
	lib-xref-alfa.adb, sem_cat.adb, exp_dist.adb, get_alfa.adb,
	prj-env.adb, prj-env.ads, prj-tree.adb, alfa.ads: Minor reformatting.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb, sem_aux.adb, exp_util.ads, sem_aux.ads:
	Move routine Is_VM_By_Copy_Actual from sem_aux to exp_util.

2011-08-03  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb (Is_Primitive_Operator_In_Use): Always check In_Use on
	the Base_Type.

2011-08-03  Joel Brobecker  <brobecker@adacore.com brobecker>

	* g-sha256.ads, g-sha512.ads, g-sha1.ads, g-sha224.ads, g-sha384.ads,
	g-sehash.ads: Fix typo. Update header.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* exp_ch6.adb (Expand_Actuals): Remove Ada_2005 guard on build-in-place
	expansion.

2011-08-03  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch4.adb (Analyze_Overloaded_Selected_Component): Consider
	prefixes of private types along with records, since the selector may be
	a discriminant.
	* sem_res.adb (Resolve_Selected_Component): Consider prefixes of
	private types along with records, since the selector may be a
	discriminant.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-pp.adb (Pretty_Print): Remove trailing blank line.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* sem_aux.adb (Is_VM_By_Copy_Actual): Fix wrong use of
	Tagged_Type_Expansion.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Op_Concat_Arg): Do not issue a SPARK
	violation when the argument of concatenation is the name of a
	constant.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb, prj-ext.adb, prj-ext.ads, prj-env.adb, prj-env.ads,
	prj-tree.adb, prj-tree.ads (Initialize_And_Copy, Copy): new subprograms
	(Process_Declarative_Items): new parameter Child_Env.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* alfa.ads: Update format of ALFA section in ALI file in order to
	add a mapping from bodies to specs when both are present.
	(ALFA_Scope_Record): Add components for spec file/scope.
	* get_alfa.adb (Get_ALFA): Read the new file/scope for spec when
	present.
	* lib-xref-alfa.adb (Collect_ALFA): After all scopes have been
	collected, fill in the spec information when relevant.
	* put_alfa.adb (Put_ALFA): Write the new file/scope for spec when
	present.

2011-08-03  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Add_Inlined_Subprogram): Do not consider the enclosing
	code unit to decide whether to add internally generated subprograms.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* sem_aux.ads, sem_aux.adb (Is_VM_By_Copy_Actual): New subprogram.
	* exp_ch9.adb (Build_Simple_Entry_Call): Handle actuals that must
	be handled by copy in VM targets.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* make.adb, makeutl.adb, makeutl.ads (Make.Switches_Of): Share
	code with Makeutl.Get_Switches.
	* prj-tree.adb: Update comment.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb (Validate_RCI_Subprogram_Declaration): Reject a remote
	subprogram with a limited formal that does not support external
	streaming.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* get_alfa.adb (Get_ALFA): add missing Skip_Spaces at start of
	continuation line
	* lib-xref-alfa.adb (Add_ALFA_File): split removal of scopes that are
	not from current unit in two phases, because it is not possible to
	change the table while iterating over its content.
	* put_alfa.adb (Put_ALFA): reset current file/scope at each new entity

2011-08-03  Sergey Rybin  <rybin@adacore.com>

	* vms_data.ads: Add qualifier for gnatmetric --no-static-loop option
	* gnat_ugn.texi: Update description of complexity metrics (gnatmetric)

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Op_Concat_Arg): if the argument is an aggregate
	and the component type is composite, this is ambiguous for predefined
	concatenation, but if the node is not overloaded and the entity is a use
	-defined function its profile can be used to resolve that aggregate.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor code cleanup.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb: Do not generate distribution stubs if serious errors
	have been diagnosed.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Try_Primitive_Operation): when checking the validity of
	the first formal of a primitive operation, go to the base type to
	handle properly an access to a derived type with constrained
	discriminants.
	* sem_type.adb (Disambiguate): an immediately visible operator hides a
	user-defined function that is only use-visible.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb, sem_ch3.adb, lib.ads, gnatcmd.adb, prj-proc.adb,
	make.adb, lib-writ.adb, prj-part.adb, prj-part.ads, prj-ext.adb,
	fname-uf.adb, prj-ext.ads, prj.adb, prj.ads, sem_attr.adb, alfa.adb,
	prj-makr.adb, errout.adb, makeutl.adb, makeutl.ads, restrict.ads,
	sem_ch6.adb, g-pehage.adb, clean.adb, put_alfa.adb, lib-xref-alfa.adb,
	prj-nmsc.adb, prj-nmsc.ads, sem_ch8.adb, prj-pars.ads, exp_aggr.adb,
	prj-attr.ads, sem_ch13.adb, get_alfa.adb, prj-env.adb, prj-env.ads,
	alfa_test.adb, prj-tree.adb, prj-tree.ads, einfo.ads: Minor reformatting

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* repinfo.adb (List_Mechanism): Add handling of
	Convention_Ada_Pass_By_XXX.
	* sem_mech.adb (Set_Mechanism): Ditto.
	* sem_prag.adb (Process_Convention): Add entries for
	Convention_Ada_Pass_By_XXX.
	* snames.adb-tmpl, snames.ads-tmpl: Ditto.

2011-08-03  Pascal Obry  <obry@adacore.com>

	* makeutl.adb: Minor reformatting.

2011-08-03  Vincent Celier  <celier@adacore.com>

	* fname-uf.adb
	(Get_File_Name) If the file cannot be found when there are no config
	pragmas file and May_Fail is True, return No_File instead of the file
	name, to be consistent.

2011-08-03  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_is_executable_file_attr): Avoid access
	to null pointer.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* sem_ch13.adb
	(Same_Representation): In VM targets the representation of arrays with
	aliased components differs from arrays with non-aliased components.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb, prj-attr.adb, prj-attr.ads (Get_Attribute_Index): do
	not systematically lower case attribute indexes that contain no "."
	Fix definition of several Naming attributes, which take
	a unit name as index and therefore should be case insensitive.
	Minor refactoring (reduce length of variable names).

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* makeutl.adb, makeutl.ads (Get_Switches): new subprogram.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* gnatcmd.adb, prj-proc.adb, prj-proc.ads, make.adb, prj-part.adb,
	prj-part.ads, switch-m.adb, switch-m.ads, prj-makr.adb, clean.adb,
	prj-pars.adb, prj-pars.ads, prj-conf.adb, prj-conf.ads, prj-tree.adb,
	prj-tree.ads (Prj.Tree.Environment): new type.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb, prj.ads, makeutl.adb, makeutl.ads, prj-conf.adb,
	prj-tree.adb, prj-tree.ads (Environment): new type.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-tree.ads: Remove unused variable.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* restrict.adb (Restriction_Msg): set "SPARK" all in upper case for
	issuing messages related to SPARK restriction violation.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb: guard against error nodes in return statements.

2011-08-03  Arnaud Charlet  <charlet@adacore.com>

	* errout.adb (Error_Msg_Internal): the main unit has not been read yet,
	a warning can only appear on a configuration file, so emit warning
	without further checks.

2011-08-03  Arnaud Charlet  <charlet@adacore.com>

	* s-interr.ads: add overriding keyword.

2011-08-03  Geert Bosch  <bosch@adacore.com>

	* exp_attr.adb: Fix minor typo.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* par-ch4.adb: improve error recovery.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-part.adb, prj-part.ads, prj-makr.adb, prj-pars.adb, prj-conf.adb,
	prj-env.adb (Prj.Part.Parse): change parameter Always_Errout_Finalize
	to Errout_Handling.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-dect.adb (Parse_Attribute_Declaration): make sure we can use
	"external" as an attribute name in aggregate projects.

2011-08-03  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-vxworks.adb: (Create_Task, Initialize): Ada 2012 pragma CPU
	uses CPU numbers starting 1, while VxWorks uses CPU numbers starting
	from 0, so we need to adjust.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb, prj-ext.adb, prj-ext.ads, makeutl.adb, prj-tree.adb,
	prj-tree.ads, gnatcmd.adb, clean.adb (External_References): new type.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* sem_ch6.adb (New_Overloaded_Entity): only issue error for SPARK
	restriction on overloaded entity if the entity is not an operator.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* sem_ch7.adb, sem_res.adb, sem_attr.adb, restrict.adb,
	restrict.ads: Rename remaining Check_Formal_Restriction* into
	Check_SPARK_Restriction*.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-proc.adb, prj-part.adb, prj.adb, prj.ads, prj-nmsc.adb,
	prj-nmsc.ads, prj-err.adb (Project_Data): now discriminated on its
	qualifier.
	(Project_Empty): removed
	(Empty_Project): new parameter Qualifier
	This is used to have fields specific to aggregate projects, cleaner
	New field to store the list of aggregated projects.
	(Check_Aggregate_Project): removed
	(Process_Aggregated_Projects, Free): new subprograms.

2011-08-03  Olivier Hainque  <hainque@adacore.com>

	* tracebak.c (STOP_FRAME ppc AIX): Stop at null return address as well.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Object_Renaming): if the renamed object is an
	explicit dereference of an unconstrained type, create a constrained
	subtype for it, as is done for function calls that return an
	unconstrained type.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* g-pehage.adb (Finalize): Avoid possible double-free.

2011-08-03  Steve Baird  <baird@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Don't expand
	Elab_Spec/Body attrs in CodePeer_Mode.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Flatten): Convert to positional form aggregates whose
	low bound is not known at compile time but they have no others choice.
	Done because in this case the bounds can be obtained directly from the
	aggregate.

2011-08-03  Ed Falis  <falis@adacore.com>

	* s-tasinf-vxworks.ads: Update comment to reflect 0 indexing of CPUs
	on VxWorks SMP. Remove unusable constant ANY_CPU.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* gnatcmd.adb, make.adb, prj-part.adb, prj-part.ads, prj-makr.adb,
	clean.adb, prj-nmsc.adb, prj-pars.adb, prj-conf.adb, prj-env.adb,
	prj-env.ads (Prj.Env.Initialize_Default_Project_Path,
	Prj.Env.Initialize_Empty): new subprograms
	(Get_Env, Find_Project): remove parameter Target_Name.

2011-08-03  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): Test the Derive_Subps formal
	as a condition for the delayed call to Derived_Subprograms done for the
	case of the rewriting of a derived type that constrains the
	discriminants of its parent type.
	Avoids redundant subprogram derivations for private subtype derivations.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb (Init_Hidden_Discriminants): New subprogram of
	Build_Record_Aggr_Code.
	(Build_Record_Aggr_Code): Add missing support to initialize hidden
	discriminants in extension aggregates.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-pp.adb (Print): also output project qualifiers, since in
	particular "aggregate" is mandatory in an aggregate project.

2011-08-03  Emmanuel Briot  <briot@adacore.com>

	* prj-part.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-env.adb:
	(Debug_Output): new function.

2011-08-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi: Document -Wstack-usage.
	* gcc-interface/misc.c (enumerate_modes): Add guard for ghost FP modes.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* sem_prag.adb Issue an error (not a warning) when a C++ type does not
	have keyword LIMITED.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* alfa.adb, alfa.ads, alfa_test.adb: New files.
	* ali.adb (Known_ALI_Lines): add 'C' lines (SCO) and 'F' lines (ALFA)
	(Scan_ALI): do not issue a fatal error if parsing known lines after Xref
	section (does not happen in compiler, only if code directly calls
	Scan_ALI).
	* get_alfa.adb, get_alfa.ads: New files.
	* lib-writ.adb, lib-writ.ads (Write_ALI): output ALFA information if
	needed.
	* lib-xref-alfa.adb: New file.
	* lib-xref.adb, lib-xref.ads
	(Xref_Entry): redefine information needed in cross-references for ALFA.
	Push ALFA treatments in separated local package.
	(Enclosing_Subpragram_Or_Package): treat specially subprogram
	identifiers. Return entity of package body instead of spec. Return
	Empty for a scope with no location.
	(Generate_Reference): adapt to new components for ALFA information.
	Remove the need for D references on definitions.
	(Is_Local_Reference): moved to ALFA local package
	(Output_References): extract subfunction as Extract_Source_Name
	(Output_Local_References): remove procedure, replaced by filtering of
	cross-references in package ALFA and printing in Put_ALFA.
	(Write_Entity_Name): remove procedure
	* lib.adb, lib.ads (Extract_Source_Name): extract here function to
	print exact name of entity as it appears in source file
	(Unit_Ref_Table): make type public for use in Lib.Xref.ALFA
	* put_alfa.adb, put_alfa.ads: New files.
	* xref_lib.adb (Search_Xref): protect read of cross-references against
	reading other sections of the ALI file, in gnatxref
	(Search): protect read of cross-references against reading other
	sections of the ALI file, in gnatfind.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2011-08-03  Jose Ruiz  <ruiz@adacore.com>

	* s-inmaop-vxworks.adb (Setup_Interrupt_Mask): Do nothing instead of
	raising an exception.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Set_String_Literal_Subtype): if index type is an integer
	type, always use 1 as the lower bound or string, even if lower bound of
	context is not static, to handle properly null strings in a non-static
	context.

2011-08-03  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Resolve_Aggregate): An array aggregate with 'others' is
	always legal on the right-hand side of an assignment statement; there
	is always an applicable index constraint in this case. Therefore, the
	check for Pkind = N_Assignment_Statement is now unconditional -- it
	doesn't depend on whether Is_Constrained (Typ).

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* exp_ch5.adb, sem_prag.adb, exp_ch4.adb: Minor reformatting.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Itype_Reference): do not create an itype reference
	for an itype created within a generic unit.

2011-08-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_ugn.texi (Switches for gcc): Make it clearer that -fno-inline
	suppresses all inlining.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_res.adb, exp_ch13.adb, exp_disp.adb,
	exp_aggr.adb: Minor reformatting.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not force inlining of
	tagged assignment when discriminant checks are suppressed. This is
	useless and extremely costly in terms of static stack usage.

2011-08-03  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Get_Base_Subprogram): Do not follow Alias for instances
	of generics, because this leads to the wrong entity in the wrong scope,
	causing (e.g.) pragma Export_Procedure to get an error if the entity is
	an instance.
	(Process_Interface_Name): Follow Alias for instances of generics, to
	correct for the above change.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_N_Selected_Component): If the discriminant value
	is an integer literal it is always safe to replace the reference. In
	addition, if the reference appears in the generated code for an object
	declaration it is necessary to copy because otherwise the reference
	might be to the uninitilized value of the discriminant of the object
	itself.

2011-08-03  Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_is_executable_file_attr): Fix Win32 circuitry when no
	ACL used, in this case we want to check for ending .exe, not .exe
	anywhere in the path.

2011-08-03  Sergey Rybin  <rybin@adacore.com>

	* tree_io.ads (ASIS_Version_Number): Update because of the changes in
	the tree structure (semantic decoration of references to record
	discriminants).

2011-08-03  Gary Dismukes  <dismukes@adacore.com>

	* sem_aggr.adb (Analyze_Array_Aggregate): When checking the discrete
	choices of a named array aggregate, bail out when any choices are
	marked as Errors_Posted.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch13.adb (Expand_N_Freeze_Entity): cleanup determination of scope
	in which entity is frozen, to handle properly loop variables in
	iterators.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Set_String_Literal_Subtype): if the lower bound of the
	subtype is not static, compute the upper bound using attributes, to
	handle properly index types that are not integer types.

2011-08-03  Bob Duff  <duff@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Fix some dangling URLs.
	Update copyright notice.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Discriminant_Constraints): Only use
	Original_Discriminant if within an instance.
	* sem_ch4.adb (Analyze_Selected_Component): Ditto.

2011-08-03  Thomas Quinot  <quinot@adacore.com>

	* einfo.ads: Minor reformatting.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Check_Premature_Freezing): diagnose the presence of a
	composite type with an unfrozen subcomponent, in the profile of a
	primitive operation.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, exp_aggr.adb, exp_ch3.adb: Minor reformatting.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): if a constant object of an
	unconstrained type with discriminants is initialized with an aggregate,
	use the constrained subtype of the aggregate as the type of the object,
	because it is immutable, and this allows the back-end to generate no
	code for the object declaration.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Optimize_Length_Check): Fix bad handling of case where
	comparison operand is variable, and turns out to be zero or negative.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* exp_intr.adb
	(Expand_Dispatching_Constructor_Call): Disable expansion of
	code required for native targets. Done to avoid generating
	references to unavailable runtime entities in VM targets.
	* exp_ch3.adb
	(Expand_N_Object_Declaration): Add missing support to handle
	the explicit initialization of class-wide interface objects.
	Fix documentation.

2011-08-03  Matthew Heaney  <heaney@adacore.com>

	* a-cobove.adb (Merge): Move source onto target, instead of using
	Assign.

2011-08-03  Matthew Heaney  <heaney@adacore.com>

	* a-cbdlli.adb (Splice): Move source items from first to last.

2011-08-03  Yannick Moy  <moy@adacore.com>

	* sem_util.ads: Add comment.

2011-08-03  Javier Miranda  <miranda@adacore.com>

	* exp_aggr.adb
	(Expand_Record_Aggregate): In VM targets disable the expansion into
	assignments of aggregates whose type is not known at compile time.

2011-08-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Build_Renamed_Formal_Declaration): common procedure for
	protected entries and task entries, to build the proper renaming
	declaration for entry formals, used in debugging.
	* exp_ch2.adb (Expand_Entry_Parameter): handle task and entry
	parameters in the same way.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* a-direct.adb, sinfo.ads, exp_ch9.adb, scng.adb, sem_util.adb,
	sem_util.ads, restrict.ads, par-prag.adb: Minor reformatting and/or
	code reorganization.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* debug.adb: Debug flag d.P to suppress length comparison optimization
	* exp_ch4.adb (Optimize_Length_Comparison): New routine to optimize
	comparison of Length by comparing First/Last instead.

2011-08-02  Matthew Heaney  <heaney@adacore.com>

	* a-cobove.ads: Code clean up.

2011-08-02  Vincent Celier  <celier@adacore.com>

	* adaint.c (file_names_case_sensitive_cache): New static int.
	(__gnat_get_file_names_case_sensitive): Cache the return value in
	file_names_case_sensitive_cache at the first invocation, to avoid
	multiple calls to getenv.

2011-08-02  Bob Duff  <duff@adacore.com>

	* sem_ch12.adb (Validate_Derived_Type_Instance): Implement AI05-0218-1.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb, sem_ch5.adb, sem_ch9.adb, sem_prag.adb, sem.ads,
	sem_util.adb, sem_util.ads, sem_res.adb, sem_ch2.adb, sem_ch4.adb,
	sem_ch6.adb, sem_ch11.adb: Add semantic flag In_Pre_Post_Expression to
	indicate that we are in a precondition or postcondition. This is used in
	Mark_Non_ALFA_Subprogram (renaming of Mark_Non_ALFA_Subprogram_Body) to
	decide whether to flag the spec or body of the current subprogram as
	not in ALFA.

2011-08-02  Fabien Chouteau  <chouteau@adacore.com>

	* impunit.adb: Add Ada.Execution_Time.Interrupts in the Ada2012 package
	list.
	* a-extiin.ads: New file.

2011-08-02  Bob Duff  <duff@adacore.com>

	* a-direct.adb (Rename): Implement AI05-0231-1. In particular, Rename
	now raises Name_Error instead of Use_Error in certain cases. The other
	parts of this AI were already implemented properly.

2011-08-02  Vincent Celier  <celier@adacore.com>

	* link.c: Only import "auto-host.h" when building the gnattools.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_util.adb: Inter-unit inlining does not work for a subprogram
	which calls a local subprogram, so extract subprogram
	from Mark_Non_ALFA_Subprogram_Body.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch9.adb
	(Extract_Dispatching_Call): If the type of the dispatching object is an
	access type then return an explicit dereference in the Object out-mode
	parameter.

2011-08-02  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Analyze_Subtype_Declaration): Generate range
	compatibility checks for all indexes of an array subtype, not just the
	first. Reset Has_Dynamic_Range_Check on the subtype before each
	potential check to ensure that Insert_Range_Checks will not elide any
	of the dynamic checks.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* par-prag.ad (Process_Restrictions_Or_Restriction_Warnings): recognize
	SPARK restriction at parsing time.
	* scng.adb (Scan): Generate a token Tok_SPARK_Hide for a SPARK HIDE
	directive only if the SPARK restriction is set for this unit.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb, sem_ch5.adb, sem_ch9.adb, sem_util.adb, sem_util.ads,
	sem_res.adb, sem_ch2.adb, sem_ch4.adb, sem_ch6.adb,
	sem_ch11.adb: Protect call to Current_Subprogram which might be costly
	when repeated. Rename Current_Subprogram_Is_Not_In_ALFA into
	Mark_Non_ALFA_Subprogram_Body.
	Split body of Mark_Non_ALFA_Subprogram_Body to get body small and
	inlined.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_res.adb: Protect calls to Matching_Static_Array_Bounds which
	might be costly.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch9.adb, exp_sel.adb, restrict.ads, exp_disp.adb, erroutc.ads,
	exp_ch3.adb: Minor reformatting.

2011-08-02  Emmanuel Briot  <briot@adacore.com>

	* adaint.c (__gnat_locate_exec_on_path): only returns executable
	files, not any regular file.
	(__gnat_locate_file_with_predicate): new subprogram.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sinfo.adb, sinfo.ads: Restrict the use of flags
	Has_Dynamic_Length_Check and Has_Dynamic_Range_Check to expression
	nodes, plus N_Subtype_Declaration for the 2nd one.

2011-08-02  Sergey Rybin  <rybin@adacore.com>

	* gnat_rm.texi: Ramification of pragma Eliminate documentation
	 - fix bugs in the description of Source_Trace;
	 - get rid of UNIT_NAME;

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch9.adb
	(Build_Dispatching_Requeue): Adding support for VM targets
	since we cannot directly reference the Tag entity.
	* exp_sel.adb (Build_K): Adding support for VM targets.
	(Build_S_Assignment): Adding support for VM targets.
	* exp_disp.adb
	(Default_Prim_Op_Position): In VM targets do not restrict availability
	of predefined interface primitives to compiling in Ada 2005 mode.
	(Is_Predefined_Interface_Primitive): In VM targets this service is not
	restricted to compiling in Ada 2005 mode.
	(Make_VM_TSD): Generate code that declares and initializes the OSD
	record. Needed to support dispatching calls through synchronized
	interfaces.
	* exp_ch3.adb
	(Make_Predefined_Primitive_Specs): Enable generation of predefined
	primitives associated with synchronized interfaces.
	(Make_Predefined_Primitive_Bodies): Enable generation of predefined
	primitives associated with synchronized interfaces.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* par-ch11.adb (P_Handled_Sequence_Of_Statements): mark a sequence of
	statements hidden in SPARK if preceded by the HIDE directive
	(Parse_Exception_Handlers): mark each exception handler in a sequence of
	exception handlers as hidden in SPARK if preceded by the HIDE directive
	* par-ch6.adb (P_Subprogram): mark a subprogram body hidden in SPARK
	if starting with the HIDE directive
	* par-ch7.adb (P_Package): mark a package body hidden in SPARK if
	starting with the HIDE directive; mark the declarations in a private
	part as hidden in SPARK if the private part starts with the HIDE
	directive
	* restrict.adb, restrict.ads
	(Set_Hidden_Part_In_SPARK): record a range of slocs as hidden in SPARK
	(Is_In_Hidden_Part_In_SPARK): new function which returns whether its
	argument node belongs to a part which is hidden in SPARK
	(Check_SPARK_Restriction): do not issue violations on nodes in hidden
	parts in SPARK; protect the possibly costly call to
	Is_In_Hidden_Part_In_SPARK by a check that the SPARK restriction is on
	* scans.ads (Token_Type): new value Tok_SPARK_Hide in enumeration
	* scng.adb (Accumulate_Token_Checksum_GNAT_6_3,
	Accumulate_Token_Checksum_GNAT_5_03): add case for new token
	Tok_SPARK_Hide.
	(Scan): recognize special comment starting with '#' and followed by
	SPARK keyword "hide" as a HIDE directive.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* types.ads, erroutc.ads: Minor reformatting.

2011-08-02  Vincent Celier  <celier@adacore.com>

	* link.c: Add response file support for cross platforms.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Array_Aggregate): when copying the expression
	in an association, set parent field of copy before partial analysis.
	* sem_res.adb (Resolve_Slice): create reference to itype only when
	expansion is enabled.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* einfo.adb, einfo.ads (Body_Is_In_ALFA, Set_Body_Is_In_ALFA): get/set
	for new flag denoting which subprogram bodies are in ALFA
	* restrict.adb, sem_ch7.adb: Update comment
	* sem_ch11.adb, sem_ch2.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb,
	sem_ch9.adb, sem_res.adb: Add calls to
	Current_Subprogram_Body_Is_Not_In_ALFA on unsupported constructs.
	* sem_ch6.adb (Analyze_Function_Return): add calls to
	Current_Subprogram_Body_Is_Not_In_ALFA on return statement in the
	middle of the body, and extended return.
	(Check_Missing_Return): add calls to Set_Body_Is_In_ALFA with argument
	False when missing return.
	(Analyze_Subprogram_Body_Helper): initialize the flag Body_Is_In_ALFA
	to True for subprograms whose spec is in ALFA. Remove later on the flag
	on the entity used for a subprogram body when there exists a separate
	declaration.
	* sem_util.adb, sem_util.ads (Current_Subprogram_Body_Is_Not_In_ALFA):
	if Current_Subprogram is not Empty, set its flag Body_Is_In_ALFA to
	False, otherwise do nothing.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* inline.adb, stand.ads, sem_ch6.adb, sem_ch8.adb: Minor reformatting.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_ch4.ads: minor formatting.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_aggr.adb, err_vars.ads, sem_ch3.adb, sem_ch5.adb, sem_ch9.adb,
	debug.adb, sem_util.adb, sem_res.adb, sem_attr.adb, gnat1drv.adb,
	errout.adb, errout.ads, exp_ch6.adb, sem_ch4.adb, restrict.adb,
	restrict.ads, sem_ch6.adb, sem_ch8.adb, sem_ch11.adb,
	opt.ads: cleanup of SPARK mode

2011-08-02  Yannick Moy  <moy@adacore.com>

	* cstand.adb (Create_Standard): sets Is_In_ALFA component of standard
	types.
	* einfo.adb, einfo.ads (Is_In_ALFA): add flag for all entities
	(Is_In_ALFA, Set_Is_In_ALFA): new subprograms to access flag Is_In_ALFA
	* sem_ch3.adb
	(Analyze_Object_Declaration): set Is_In_ALFA flag for objects
	(Constrain_Enumeration): set Is_In_ALFA flag for enumeration subtypes
	(Constrain_Integer): set Is_In_ALFA flag for integer subtypes
	(Enumeration_Type_Declaration): set Is_In_ALFA flag for enumeration
	types.
	(Set_Scalar_Range_For_Subtype): unset Is_In_ALFA flag for subtypes with
	non-static range.
	* sem_ch6.adb (Analyze_Return_Type): unset Is_In_ALFA flag for
	functions whose return type is not in ALFA.
	(Analyze_Subprogram_Specification): set Is_In_ALFA flag for subprogram
	specifications.
	(Process_Formals): unset Is_In_ALFA flag for subprograms if a
	parameter's type is not in ALFA.
	* stand.ads (Standard_Type_Is_In_ALFA): array defines which standard
	types are in ALFA.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6 (Analyze_Expression_Function): treat the function as
	Inline_Always, and introduce a subprogram declaration for it when it is
	not a completion.
	* inline.adb (Add_Inlined_Body): recognize bodies that come from
	expression functions, so that the back-end can determine whether they
	can in fact be inlined.
	* sem_util.adb (Is_Expression_Function): predicate to determine whether
	a function body comes from an expression function.

2011-08-02  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.adb (Check_Conformance): Revise the check for nonconforming
	null exclusions to test Can_Never_Be_Null on the anonymous access types
	of the formals rather than testing the formals themselves. Exclude this
	check in cases where the Old_Formal is marked as a controlling formal,
	to avoid issuing spurious errors for bodies completing dispatching
	operations (due to the flag not getting set on controlling access
	formals in body specs).
	(Find_Corresponding_Spec): When checking full and subtype conformance of
	subprogram bodies in instances, pass Designated and E in that order, for
	consistency with the expected order of the formals (New_Id followed by
	Old_Id).

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb: Minor reformatting.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): new procedure
	Check_Class_Wide_Actual, to implement AI05-0071, on defaulted
	primitive operations of class-wide actuals.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_atag.ads, exp_atag.adb
	(Build_Common_Dispatching_Select_Statements): Remove argument Loc
	since its value is implicitly passed in argument Typ.
	* exp_disp.adb (Make_Disp_Conditional_Select_Body,
	Make_Disp_Timed_Select_Body): Remove Loc in calls to routine
	Build_Common_Dispatching_Select_Statements.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, exp_atag.ads, get_scos.adb, get_scos.ads,
	exp_disp.adb, lib-xref.adb, lib-xref.ads: Update comments.
	Minor reformatting.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor reformatting.
	* sem_prag.adb: Minor reformatting.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_atag.adb, exp_atags.ads
	(Build_Common_Dispatching_Select_Statement): Replace argument DT_Ptr
	by the tagged type Entity. Required to use this routine in the VM
	targets since we do not have available the Tag entity in the VM
	platforms.
	* exp_ch6.adb
	(Expand_N_Subprogram_Body): Do not invoke Build_VM_TSDs if package
	Ada.Tags has not been previously loaded.
	* exp_ch7.adb
	(Expand_N_Package_Declaration, Expand_N_Package_Body): Do not invoke
	Build_VM_TSDs if package Ada.Tags has not been previously loaded.
	* sem_aux.adb
	(Enclosing_Dynamic_Scope): Add missing support to handle the full
	view of enclosing scopes. Required to handle enclosing scopes that
	are synchronized types whose full view is a task type.
	* exp_disp.adb
	(Build_VM_TSDs): Minor code improvement to avoid generating and
	analyzing lists with empty nodes.
	(Make_Disp_Asynchronous_Select_Body): Add support for VM targets.
	(Make_Disp_Conditional_Select_Body): Add support for VM targets.
	(Make_Disp_Get_Prim_Op_Kind): Add support for VM targets.
	(Make_Disp_Timed_Select_Body): Add support for VM targets.
	(Make_Select_Specific_Data_Table): Add support for VM targets.
	(Make_VM_TSD): Generate code to initialize the SSD structure of
	the TSD.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* lib-writ.adb (Write_ALI): when ALFA mode is set, write local
	cross-references section in ALI.
	* lib-xref.adb, lib-xref.ads (Xref_Entry): add components Sub
	(enclosing subprogram), Slc (location of Sub) and Sun (unit number of
	Sub).
	(Enclosing_Subprogram_Or_Package): new function to return the enclosing
	subprogram or package entity of a node
	(Is_Local_Reference_Type): new function returns True for references
	selected in local cross-references.
	(Lt): function extracted from Lt in Output_References
	(Write_Entity_Name): function extracted from Output_References
	(Generate_Definition): generate reference with type 'D' for definition
	of objects (object declaration and parameter specification), with
	appropriate locations and units, for use in local cross-references.
	(Generate_Reference): update fields Sub, Slc and Sun. Keep newly created
	references of type 'I' for initialization in object definition.
	(Output_References): move part of function Lt and procedure
	Write_Entity_Name outside of the body. Ignore references of types 'D'
	and 'I' introduced for local cross-references.
	(Output_Local_References): new procedure to output the local
	cross-references sections.
	(Lref_Entity_Status): new array defining whether an entity is a local
	* sem_ch3.adb (Analyze_Object_Declaration): call Generate_Reference
	with 'I' type when initialization expression is present.
	* get_scos.adb, get_scos.ads: Correct comments and typos

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Body): Enable generation of TSDs in
	the JVM target.
	* exp_ch7.adb (Expand_N_Package_Body): Enable generation of TSDs in
	the JVM target.
	* exp_disp.adb (Build_VM_TSDs): No action needed if the runtime has no
	TSD support.

2011-08-02  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (File_Found): New components Excl_File and Excl_Line
	(No_Space_Img): New function
	(Find_Excluded_Sources): When reading from a file, record the file name
	and the line number for each excluded source.
	(Mark_Excluded_Sources): When reporting an error, if the excluded
	sources were read from a file, include file name and line number in
	the error message.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Call): implement rule in RM 12.5.1 (23.3/2).

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb exp_ch6.adb, exp_disp.adb: Minor reformatting

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Body): Temporarily restrict the
	generation of TSDs to the DOTNET compiler.
	* exp_ch7.adb (Expand_N_Package_Body): Temporarily restrict the
	generation of TSDs to the DOTNET compiler.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_disp.ads (Build_VM_TSDs): Build the runtime Type Specific Data
	record of all the tagged types declared inside library level package
	declarations, library level package bodies or library level subprograms.
	* exp_disp.adb (Make_VM_TSD): New subprogram that builds the TSD
	associated with a given tagged type.
	(Build_VM_TSDs): New subprogram.
	* exp_ch6.adb (Expand_N_Subprogram_Body): Generate TSDs records of main
	compilation units that are subprograms.
	* exp_ch7.adb (Expand_N_Package_Body): Generate TSDs of main
	compilation units that are package bodies.
	(Expand_N_Package_Declaration): Generate TSDs of the main compilation
	units that are a package declaration or a package instantiation.
	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Minor code
	reorganization to improve the error generated by the frontend when the
	function Ada.Tags.Secondary_Tag is not available.
	* rtsfind.ads (RE_Register_TSD): New runtime entity.
	* exp_ch4.adb (Expand_N_Type_Conversion): Minor code cleanup.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_disp.adb (Make_DT): Generate call to Check_TSD in Ada 2005 mode.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* s-imenne.ads: Minor reformatting.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* a-stunau.ads: Add pragma Suppress_Initialization for Big_String
	* freeze.adb (Warn_Overlay): Don't warn if initialization suppressed
	* s-stalib.ads: Add pragma Suppress_Initialization for Big_String

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* einfo.ads (Materialize_Entity): Document this is only for renamings
	* exp_ch3.adb (Expand_N_Object_Declaration): Make sure we generate
	required debug information in the case where we transform the object
	declaration into a renaming declaration.
	* exp_ch4.adb (Expand_Concatenate): Generate debug info for result
	object
	* exp_dbug.ads (Debug_Renaming_Declaration): Document setting of
	Materialize_Entity.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* einfo.ads, einfo.adb (Suppress_Initialization): Replaces
	Suppress_Init_Procs.
	* exp_ch3.adb, exp_disp.adb, freeze.adb: Use
	Suppress_Initialization/Initialization_Suppressed.
	* gnat_rm.texi: New documentation for pragma Suppress_Initialization
	* sem_aux.ads, sem_aux.adb (Initialization_Suppressed): New function
	* sem_dist.adb: Use Suppress_Initialization/Initialization_Suppressed
	* sem_prag.adb: New processing for pragma Suppress_Initialization.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, a-tags.ads, sem_prag.adb, sem_ch12.adb, exp_disp.adb:
	Minor reformatting.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Chain_PPC): Implement AI04-0230: null procedures can
	only have inheritable classwide pre/postconditions.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads, a-tags.adb (Check_TSD): New subprogram.
	* rtsfind.ads (RE_Check_TSD): New runtime entity.
	* exp_disp.adb (Make_DT): Generate call to the new runtime routine that
	checks if the external tag of a type is the same as the external tag
	of some other declaration.

2011-08-02  Thomas Quinot  <quinot@adacore.com>

	* s-taskin.ads: Minor reformatting.

2011-08-02  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Display_Help): swap the order in which it prints the
	short help and the general usage.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): copy properly
	the aspect declarations and attach them to the generic copy for
	subsequent analysis.
	(Analyze_Subprogram_Instantiation): copy explicitly the aspect
	declarations of the generic tree to the new subprogram declarations.
	* sem_attr.adb (Check_Precondition_Postcondition): recognize
	conditions that apply to a subprogram instance.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Clarify doc on pragma Source_File_Name[_Project].

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Derived_Type_Declaration): When checking that a untagged
	private type with a tagged full view is not derived in the immediate
	scope of the partial view, (RM 7.3 (7)) use the scope of the base type.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb: Minor reformatting.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Loop_Statement):  If the iteration scheme is an
	Ada2012 iterator, the loop will be rewritten during expansion into a
	while loop with a cursor and an element declaration. Do not analyze the
	body in this case, because if the container is for indefinite types the
	actual subtype of the elements will only be determined when the cursor
	declaration is analyzed.

2011-08-02  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Ignore
	size/alignment related attributes in CodePeer_Mode.

2011-08-02  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Check_Ops_From_Incomplete_Type): Remove call to
	Prepend_Element, since this can result in the operation getting the
	wrong slot in the full type's dispatch table if the full type has
	inherited operations. The incomplete type's operation will get added
	to the proper position in the full type's primitives
	list later in Sem_Disp.Check_Operation_From_Incomplete_Type.
	(Process_Incomplete_Dependents): Add Is_Primitive test when checking for
	dispatching operations, since there are cases where nonprimitive
	subprograms can get added to the list of incomplete dependents (such
	as subprograms in nested packages).
	* sem_ch6.adb (Process_Formals): First, remove test for being in a
	private part when determining whether to add a primitive with a
	parameter of a tagged incomplete type to the Private_Dependents list.
	Such primitives can also occur in the visible part, and should not have
	been excluded from being private dependents.
	* sem_ch7.adb (Uninstall_Declarations): When checking the rule of
	RM05-3.10.1(9.3/2), test that a subprogram in the Private_Dependents
	list of a Taft-amendment incomplete type is a primitive before issuing
	an error that the full type must appear in the same unit. There are
	cases where nonprimitives can be in the list (such as subprograms in
	nested packages).
	* sem_disp.adb (Derives_From): Use correct condition for checking that
	a formal's type is derived from the type of the corresponding formal in
	the parent subprogram (the condition was completely wrong). Add
	checking that was missing for controlling result types being derived
	from the result type of the parent operation.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* errout.adb (First_Node): minor renaming
	* restrict.adb (Check_Formal_Restriction): put restriction warning on
	first node.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Logical_Op): ensure N is a binary operator
	before accessing operands.
	* sem_util.adb (Is_SPARK_Initialization_Expr): follow original nodes to
	decide whether an initialization expression respects SPARK rules, as
	the plain node is the expanded one. This allows for more valid warnings
	to be issued.
	* gnat_rm.texi: Minor update.

2011-08-02  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Revert
	previous change.

2011-08-02  Robert Dewar  <dewar@adacore.com>

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

2011-08-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): Reformatting. Wrap the original
	loop statements and the element renaming declaration with a block when
	the element type is controlled.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sinfo.ads: Minor formatting.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Add_Association): if the association has a box and no
	expression, use the Sloc of the aggregate itself for the new
	association.
	* errout.adb (First_Node): Exclude nodes with no Sloc, and always use
	the Original_Node.

2011-08-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): Code cleanup and refactoring.
	When a container is provided via a function call, generate a renaming
	of the function result. This avoids the creation of a transient scope
	and the premature finalization of the container.
	* exp_ch7.adb (Is_Container_Cursor): Removed.
	(Wrap_Transient_Declaration): Remove the supression of the finalization
	of the list controller when the declaration denotes a container cursor,
	it is not needed.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* restrict.adb (Check_Formal_Restriction): only issue a warning if the
	node is from source, instead of the original node being from source.
	* sem_aggr.adb
	(Resolve_Array_Aggregate): refine the check for a static expression, to
	recognize also static ranges
	* sem_ch3.adb, sem_ch3.ads (Analyze_Component_Declaration,
	Array_Type_Declaration): postpone the test for the type being a subtype
	mark after the type has been resolved, so that component-selection and
	expanded-name are discriminated.
	(Make_Index, Process_Range_Expr_In_Decl): add a parameter In_Iter_Schm
	to distinguish the case of an iteration scheme, so that an error is
	issed on a non-static range in SPARK except in an iteration scheme.
	* sem_ch5.adb (Analyze_Iteration_Scheme): call Make_Index with
	In_Iter_Schm = True.
	* sem_ch6.adb (Analyze_Subprogram_Specification): refine the check for
	user-defined operators so that they are allowed in renaming
	* sem_ch8.adb
	(Find_Selected_Component): refine the check for prefixing of operators
	so that they are allowed in renaming. Move the checks for restrictions
	on selector name after analysis discriminated between
	component-selection and expanded-name.
	* sem_res.adb (Resolve_Op_Concat_Arg): do not issue a warning on
	concatenation argument of string type if it is static.
	* sem_util.adb, sem_util.ads
	(Check_Later_Vs_Basic_Declarations): add a new function
	Is_Later_Declarative_Item to decice which declarations are allowed as
	later items, in the two different modes Ada 83 and SPARK. In the SPARK
	mode, add that renamings are considered as later items.
	(Enclosing_Package): new function to return the enclosing package
	(Enter_Name): correct the rule for homonyms in SPARK
	(Is_SPARK_Initialization_Expr): default to returning True on nodes not
	from source (result of expansion) to avoid issuing wrong warnings.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* errout.adb: On anything but an expression First_Node returns its
	argument.

2011-08-02  Pascal Obry  <obry@adacore.com>

	* prj-proc.adb, make.adb, makeutl.adb: Minor reformatting.

2011-08-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop): Code cleanup and reorganization.
	Set the associated loop as the related expression of internally
	generated cursors.
	* exp_ch7.adb (Is_Container_Cursor): New routine.
	(Wrap_Transient_Declaration): Supress the finalization of the list
	controller when the declaration denotes a container cursor.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* opt.ads (SPARK_Mode): update comment, SPARK_Mode only set through
	command line now.
	* par-ch3.adb (P_Delta_Constraint): remove check in SPARK mode that the
	expression is a simple expression. This check cannot be performed in
	the semantics, so just drop it.
	(P_Index_Or_Discriminant_Constraint): move check that the index or
	discriminant is a subtype mark to Analyze_Subtype_Declaration in the
	semantics. Other cases were previously checked in the semantics.
	* par-ch4.adb (P_Name): move checks that a selector name is not
	character literal or an operator symbol to Find_Selected_Component in
	the semantics
	* par-ch5.adb (Parse_Decls_Begin_End): move check that basic
	declarations are not placed after later declarations in a separate
	procedure in Sem_Util (possibly not the best choice?), to be used both
	during parsing, for Ada 83 mode, and during semantic analysis, for
	SPARK mode.
	* par-endh.adb (Check_End): move check that end label is not missing
	to Process_End_Label in the semantics
	* par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): remove
	the special case for SPARK restriction
	* par.adb: use and with Sem_Util, for use in Parse_Decls_Begin_End
	* restrict.adb, restrict.ads (Check_Formal_Restriction): add a
	parameter Force to issue the error message even on internal node (used
	for generated end label). Call Check_Restriction to check when an error
	must be issued. In SPARK mode, issue an error message even if the
	restriction is not set.
	(Check_Restriction): new procedure with an additional out parameter to
	inform the caller that a message has been issued
	* sem_aggr.adb: Minor modification of message
	* sem_attr.adb (Analyze_Attribute): call Check_Formal_Restriction
	instead of issuing an error message directly
	* sem_ch3.adb (Analyze_Declarations): move here the check that basic
	declarations are not placed after later declarations, by calling
	Check_Later_Vs_Basic_Declarations
	(Analyze_Subtype_Declaration): move here the check that an index or
	discriminant constraint must be a subtype mark. Change the check that
	a subtype of String must start at one so that it works on subtype marks.
	* sem_ch4.adb (Analyze_Call): move here the check that a named
	association cannot follow a positional one in a call
	* sem_ch5.adb (Check_Unreachable_Code): call Check_Formal_Restriction
	instead of issuing an error message directly
	* sem_ch8.adb (Find_Selected_Component): move here the check that a
	selector name is not a character literal or an operator symbol. Move
	here the check that the prefix of an expanded name cannot be a
	subprogram or a loop statement.
	* sem_util.adb, sem_util.ads (Check_Later_Vs_Basic_Declarations): new
	procedure called from parsing and semantics to check that basic
	declarations are not placed after later declarations
	(Process_End_Label): move here the check that end label is not missing

2011-08-02  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Ignore enum
	representation clause in codepeer mode, since it confuses CodePeer and
	does not bring useful info.

2011-08-02  Ed Falis  <falis@adacore.com>

	* init.c: initialize fp hw on MILS.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* errout.adb (First_Node): for bodies, return the node itself (small
	optimization). For other nodes, do not check source_unit if the node
	comes from Standard.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb: Minor comment additions.
	* sem_ch13.adb: Minor reformatting.

2011-08-02  Pascal Obry  <obry@adacore.com>

	* make.adb, makeutl.adb: Removes some superfluous directory separator.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb: Minor reformatting.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Has_Default_Aspect): Replaces Has_Default_Value
	(Has_Default_Component_Value): Removed
	* einfo.ads Comment updates
	(Has_Default_Aspect): Replaces Has_Default_Value
	(Has_Default_Component_Value): Removed
	* exp_ch13.adb
	(Expand_N_Freeze_Entity): Handle Default[_Component]_Value aspects
	* exp_ch3.adb
	(Build_Array_Init_Proc): Handle Default_[Component_]Value aspects
	(Get_Simple_Init_Val): Handle Default_Value aspect
	(Needs_Simple_Initialization): Handle Default_Value aspect
	* exp_ch3.ads: Needs_Simple_Initialization
	* freeze.adb (Freeze_Entity): Handle Default_[Component_]Value aspect
	* par-prag.adb (Pragma_Default[_Component]Value) Removed
	* sem_ch13.adb
	(Analyze_Aspect_Specifications): Fix Default[_Component]_Value aspects
	* sem_prag.adb (Pragma_Default[_Component]Value) Removed
	* snames.ads-tmpl (Pragma_Default[_Component]Value) Removed

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Specification): use base type to locate
	package containing iteration primitives.
	exp_ch5.adb (Expand_Iterator_Loop): ditto.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iteration_Scheme): For an Ada2012 iterator with
	"of", pre-analyze expression in case it is a function call with
	finalization actions that must be placed ahead of the loop.
	* exp_ch5.adb (Expand_Iterator_Loop): If condition_actions are present
	on an Ada2012 iterator, insert them ahead of the rewritten loop.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* cstand.adb (Create_Float_Types): Only consider C's long double for
	Long_Long_Float, in addition to double.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_ch5.adb, sem_type.adb, switch-c.adb, switch-c.ads,
	sem_prag.adb, sem_util.adb, sem_util.ads, sem_res.adb, warnsw.ads,
	prepcomp.ads, cstand.adb, stand.ads, a-calfor.adb, s-stusta.adb:
	Minor reformatting.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: handle properly 'Result when it is a prefix of an
	indexed component.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb
	(Original_Access_Type): Move this attribute to Node26 since there was
	an undocumented use of Node21 in E_Access_Subprogram_Type entities
	which causes conflicts and breaks the generation of the .NET compiler.
	(Interface_Name): Add missing documentation on JGNAT only uses of
	this attribute.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* cstand.adb (Back_End_Float_Types): Use Elist instead of Nlist
	(Find_Back_End_Float_Type): Likewise
	(Create_Back_End_Float_Types): Likewise
	(Create_Float_Types): Likewise
	(Register_Float_Type): Likewise
	* sem_ch3.adb (Floating_Point_Type_Declaration): Use Elist instead of
	Nlist and split out type selection in new local Find_Base_Type function.
	* sem_prag.adb (Process_Import_Predefined_Type): Use Elist instead of
	Nlist
	* stand.ads (Predefined_Float_Types): Use Elist instead of Nlist

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* inline.adb: Minor code reorganization (put Get_Code_Unit_Entity in
	alpha order).
	* opt.ads: Minor comment change.
	* sem_ch12.adb: Minor code reorganization.

2011-08-02  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch3.adb (Complete_Private_Subtype): Don't append the private
	subtype's list of rep items to the list on the full subtype in the case
	where the lists are the same.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* switch-c.adb (Free): New deallocation procedure to avoid implicitly
	using the one from System.Strings, which also deallocates all strings.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* gcc-interface/gigi.h, gcc-interface/misc.c (enumerate_modes): New
	function.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-02  Olivier Hainque  <hainque@adacore.com>

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Set the function
	end_locus.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Check_Anonymous_Access_Components): Create extra formals
	associated with anonymous access to subprograms.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* opt.ads
	(Preprocessing_Symbol_Defs): Move from Prepcomp.Symbol_Definitions.
	(Preprocessing_Symbol_Last): Move from Prepcomp.Last_Definition.
	* prepcomp.adb (Symbol_Definitions, Last_Definition): Move to opt.ads
	(Add_Symbol_Definition): Move to switch-c.adb
	(Process_Command_Line_Symbol_Definitions): Adjust references to above.
	* prepcomp.ads: Remove dependency on Ada.Unchecked_Deallocation.
	(Add_Symbol_Definition): Move to switch-c.adb.
	* sem_ch13.adb, sem_prag.adb: Add dependency on Warnsw.
	* sem_warn.adb
	(Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
	Move to warnsw.adb.
	* sem_warn.ads (Warn_On_Record_Holes, Warn_On_Overridden_Size,
	Set_Dot_Warning_Switch, Set_GNAT_Mode_Warnings, Set_Warning_Switch):
	Move to warnsw.adb.
	* switch-c.adb: Replace dependency on Prepcomp and Sem_Warn by Warnsw.
	(Add_Symbol_Definition): Moved from Prepcomp.
	* switch-c.ads: Update copyright notice. Use String_List instead of
	Argument_List, removing dependency on System.OS_Lib.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_ch3.adb (Analyze_Object_Declaration): issue an error in formal
	mode on initialization expression which does not respect SPARK
	restrictions.
	* sem_util.adb, sem_util.ads (Is_SPARK_Initialization_Expr): determines
	if the tree referenced by its argument represents an initialization
	expression in SPARK, suitable for initializing an object in an object
	declaration.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch9.adb (Expand_Access_Protected_Subprogram_Type): Link the
	internally generated access to subprogram with its associated protected
	subprogram type.
	* einfo.ads, einfo.adb (Original_Access_Type): New attribute.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* cstand.adb (Register_Float_Type): Print information about type to
	register, if the Debug_Flag_Dot_B is set.
	* debug.adb (Debug_Flag_Dot_B): Document d.b debug option.
	* rtsfind.ads (RE_Max_Base_Digits): New run time entity.
	* sem_ch3.adb (Floating_Point_Type_Declaration): Allow declarations
	with a requested precision of more than Max_Digits digits and no more
	than Max_Base_Digits digits, if a range specification is present and the
	Predefined_Float_Types list has a suitable type to derive from.
	* sem_ch3.adb (Rep_Item_Too_Early): Avoid generating error in the
	case of type completion with pragma Import
	* sem_prag.adb
	(Process_Import_Predefined_Type): Processing to complete a type
	with pragma Import. Currently supports floating point types only.
	(Set_Convention_From_Pragma): Do nothing without underlying type.
	(Process_Convention): Guard against absence of underlying type,
	which may happen when importing incomplete types.
	(Process_Import_Or_Interface): Handle case of importing predefined
	types. Tweak error message.

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

	* inline.adb (Add_Inlined_Body): Adjust check for library-level inlined
	functions to previous change.  Reorganize code slightly.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* back_end.ads (Register_Type_Proc): New call back procedure type for
	allowing the back end to provide information about available types.
	(Register_Back_End_Types): New procedure to register back end types.
	* back_end.adb (Register_Back_End_Types): Call the back end to enumerate
	available types.
	* cstand.adb (Back_End_Float_Types): New list for floating point types
	supported by the back end.
	(Build_Float_Type): Add extra parameter for Float_Rep_Kind.
	(Copy_Float_Type): New procedure to make new copies of predefined types.
	(Register_Float_Type): New call back procedure to populate the BEFT list
	(Find_Back_End_Float_Type): New procedure to find a BEFT by name
	(Create_Back_End_Float_Types): New procedure to populate the BEFT list.
	(Create_Float_Types): New procedure to create entities for floating
	point types predefined in Standard, and put these and any remaining
	BEFTs on the Predefined_Float_Types list.
	* stand.ads (Predefined_Float_Types): New list for predefined floating
	point types that do not have declarations in package Standard.

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

	* inline.adb (Get_Code_Unit_Entity): New local function.  Returns the
	entity node for the unit containing the parameter.
	(Add_Inlined_Body): Use it to find the unit containing the subprogram.
	(Add_Inlined_Subprogram): Likewise.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-02  Thomas Quinot  <quinot@adacore.com>

	* s-stusta.adb (Print): Make sure Pos is always initialized to a
	suitable value.

2011-08-02  Geert Bosch  <bosch@adacore.com>

	* a-calfor.adb (Image): Simplify, removing unnecessary uses of 'Image.

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

	* sem_type.adb (Covers): Move trivial case to the top and reuse the
	computed value of Base_Type.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* restrict.adb (Check_Restriction): issue an error for any use of
	class-wide, even if the No_Dispatch restriction is not set.
	* sem_aggr.adb: Correct typos in comments and messages in formal mode
	* sem_ch3.adb (Process_Full_View): issue an error in formal mode is,
	when completing a private extension, the type named in the private part
	is not the same as that named in the visible part.
	* sem_res.adb (Resolve_Call): issue an error in formal mode on the use
	of an inherited primitive operations of a tagged type or type extension
	that returns the tagged type.
	* sem_util.adb, sem_util.ads (Is_Inherited_Operation_For_Type): new
	function which returns True for an implicit operation inherited by the
	derived type declaration for the argument type.
	(Is_SPARK_Object_Reference): move to appropriate place in alphabetic
	order.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Pre_Analyze_Range): new procedure extracted from
	Process_Bounds, to perform analysis with expansion of a range or an
	expression that is the iteration scheme for a loop.
	(Analyze_Iterator_Specification): If domain of iteration is given by a
	function call with a controlled result, as is the case if call returns
	a predefined container, ensure that finalization actions are properly
	generated.
	* par-ch3.adb: accept Ada2012 iterator form in P_Discrete_Range.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch5.adb (Analyze_Iteration_Scheme): Fix typo.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* sem_util.ads, sem_util.adb (Is_Variable): Add a new formal to
	determine if the analysis is performed using N or Original_Node (N).
	* exp_util.adb (Side_Effect_Free): Code cleanup since the new
	functionality of routine Is_Variable avoids code duplication.
	* checks.adb (Determine_Range): Handle temporaries generated by
	Remove_Side_Effects.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Quantified_Expression): Force reanalysis and
	expansion of the condition. Required since the previous analysis was
	done with expansion disabled (see Resolve_Quantified_Expression) and
	hence checks were not inserted and record comparisons have not been
	expanded.

2011-08-02  Ed Falis  <falis@adacore.com>

	* s-taprop-vxworks.adb, s-intman-vxworks.adb, s-intman-vxworks.ads:
	Update header.

2011-08-02  Bob Duff  <duff@adacore.com>

	* opt.ads: Minor comment fix.

2011-08-02  Bob Duff  <duff@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation,
	Analyze_Subprogram_Instantiation): Turn off style checking while
	analyzing an instance. Whatever style checks that apply to the generic
	unit should apply, so it makes no sense to apply them in an instance.
	This was causing trouble when compiling an instance of a runtime
	unit that violates the -gnatyO switch.
	* stylesw.adb (Set_Style_Check_Options): "when 'O' =>" was missing from
	one of the two case statements, causing spurious errors.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* uname.adb: Minor reformatting.
	* gnatcmd.adb: Minor reformatting.
	* exp_attr.adb: Minor reformatting.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): under restriction
	No_Dispatching_Calls, do not look for the Assign primitive, because
	predefined primitives are not created in this case.

2011-08-02  Bob Duff  <duff@adacore.com>

	* stylesw.ads: Minor comment fixes.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Add_To_Result): New procedure.

2011-08-02  Jose Ruiz  <ruiz@adacore.com>

	* exp_attr.adb (Find_Stream_Subprogram): When using a configurable run
	time, if the specific run-time routines for handling streams of strings
	are not available, use the default mechanism.

2011-08-02  Arnaud Charlet  <charlet@adacore.com>

	* s-regpat.ads: Fix typo.

2011-08-02  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Get_Or_Create_Configuration_File): If On_Load_Config is
	not null, call it to create the in memory config project file without
	parsing an existing default config project file.

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

	* atree.adb (Allocate_Initialize_Node): Remove useless temporaries.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_elim.adb: an abstract subprogram does not need an eliminate
	pragma for its descendant to be eliminable.

2011-08-02  Ed Falis  <falis@adacore.com>

	* init.c: revert to handling before previous checkin for VxWorks
	* s-intman-vxworks.adb: delete unnecessary declarations related to
	using Ada interrupt facilities for handling signals.
	Delete Initialize_Interrupts. Use __gnat_install_handler instead.
	* s-intman-vxworks.ads: Import __gnat_install_handler as
	Initialize_Interrupts.
	* s-taprop-vxworks.adb: Delete Signal_Mask.
	(Abort_Handler): change construction of mask to unblock exception
	signals.

2011-08-02  Jerome Guitton  <guitton@adacore.com>

	* a-except-2005.adb (Raise_From_Signal_Handler): Call
	Debug_Raise_Exception before propagation starts.

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

	* exp_ch6.adb (Expand_Call): Guard restriction checks with a call
	to Restriction_Check_Required.
	* sem_ch3.adb (Analyze_Object_Declaration): Likewise.
	* sem_res.adb (Resolve_Call): Likewise.
	* sem_attr.adb (Check_Stream_Attribute): Likewise.

2011-08-02  Bob Duff  <duff@adacore.com>

	* stylesw.ads: Update comment.
	* style.adb: Minor: Use Error_Msg_NE instead of Error_Msg_N.
	* errout.ads: Remove obsolete comment.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Is_Safe_To_Reevaluate): new function.
	(Set_Is_Safe_To_Reevaluate): new procedure.
	* sem_ch5.adb (Analyze_Assignment): Add one assertion to ensure that no
	assignment is allowed on safe-to-reevaluate variables.
	(Analyze_Iteration_Schine.Process_Bounds.One_Bound): Decorate the
	temporary created to remove side effects in expressions that use
	the secondary stack as safe-to-reevaluate.
	* exp_util.adb (Side_Effect_Free): Add missing code to handle well
	variables that are not true constants.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch5.adb, sem_ch7.adb, einfo.ads, sem_util.adb, sem_util.ads,
	sem_res.adb, sem_ch6.adb: Minor reformatting.

2011-08-02  Jerome Guitton  <guitton@adacore.com>

	* a-except-2005.adb (Raise_Current_Excep): Remove obsolete dead code.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (New_Overloaded_Entity, Check_Overriding_Indicator): Do
	not set Overridden_Operation if subprogram is an initialization
	procedure.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* par-ch6.adb: Correct obsolete name in comments
	* restrict.adb, restrict.ads (Check_Formal_Restriction): new function
	which takes two message arguments (existing function takes one), with
	second message used for continuation.
	* sem_ch5.adb (Analyze_Block_Statement): in formal mode, only reject
	block statements that originate from a source block statement, not
	generated block statements
	* sem_ch6.adb (Analyze_Function_Call): rename L into Actuals, for
	symmetry with procedure case
	* sem_ch7.adb (Check_One_Tagged_Type_Or_Extension_At_Most): new
	function to issue an error in formal mode if a package specification
	contains more than one tagged type or type extension.
	* sem_res.adb (Resolve_Actuals): in formal mode, check that actual
	parameters matching formals of tagged types are objects (or ancestor
	type conversions of objects), not general expressions. Issue an error
	on view conversions that are not involving ancestor conversion of an
	extended type.
	(Resolve_Type_Conversion): in formal mode, issue an error on the
	operand of an ancestor type conversion which is not an object
	* sem_util.adb, sem_util.ads (Find_Actual): extend the behavior of the
	procedure so that it works also for actuals of function calls
	(Is_Actual_Tagged_Parameter): new function which determines if its
	argument is an actual parameter of a formal of tagged type in a
	subprogram call
	(Is_SPARK_Object_Reference): new function which determines if the tree
	referenced by its argument represents an object in SPARK

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb: Minor reformatting
	Minor comment addition
	Minor error msg text change

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch5.adb (Analyze_Iteration_Scheme.Uses_Secondary_Stack): New
	function. Used to be more precise when we generate a variable plus one
	assignment to remove side effects in the evaluation of the Bound
	expressions.
	(Analyze_Iteration_Scheme): Clean attribute analyzed in all the nodes
	of the bound expression to force its re-analysis and thus expand the
	associated transient scope (if required). Code cleanup replacing the
	previous code that declared the constant entity by an invocation to
	routine Force_Evaluation which centralizes this work in the frontend.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* einfo.adb (Is_Base_Type): Improve efficiency by using a flag table
	(Base_Type): Now uses improved Is_Base_Type function
	* einfo.ads (Base_Type): Inline this function

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb (Analyze_Pragma): Defend against infinite recursion
	(Analyze_Aspect_Specifications): Fix Sloc values for constructed pragmas

2011-08-02  Arnaud Charlet  <charlet@adacore.com>

	* gcc-interface/Make-lang.in: Update dependencies.
	* gcc-interface/Makefile.in: Use s-inmapop-vxworks.adb for all VxWorks
	targets.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* par-ch3.adb (P_Delta_Constraint): issue an error in formal mode on
	non-simple expression used in delta constraint
	(P_Index_Or_Discriminant_Constraint): issue an error in formal mode on
	index constraint which is not a subtype mark
	* par.adb: With and use Restrict
	* sem_ch3.adb (Analyze_Component_Declaration): issue an error in formal
	mode on component type which is not a subtype mark and default
	expression on component
	(Analyze_Subtype_Declaration): issue an error in formal mode on subtype
	of string which does not have a lower index bound equal to 1
	(Array_Type_Declaration): issue an error in formal mode on index or
	component type which is not a subtype mark, and on aliased keyword on
	component
	(Derived_Type_Declaration): issue an error in formal mode on interface,
	limited or abstract type
	(Record_Type_Declaration): issue an error in formal mode on interface
	(Record_Type_Definition): issue an error in formal mode on tagged types
	and type extensions not declared in the specification of a library unit
	package; on null non-tagged record; on variant part

2011-08-02  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Library_Attributes): Do not report Library_Dir
	not declared for qualified library project when Library_Name is not
	declared, but Library_Dir is.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specification): Fix slocs on generated
	pragmas (affects aspects [Component_]Default_Value
	(Check_Aspect_At_Freeze_Point): For Component_Default_Value, use
	component type for the resolution

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

	* einfo.adb (Base_Type): Tune implementation for speed.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* freeze.adb: Minor reformatting.

2011-08-02  Thomas Quinot  <quinot@adacore.com>

	* scos.ads: Update comments.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Derived_Type): Inherit the convention from the
	base type, because the parent may be a subtype of a private type whose
	convention is established in a private part.

2011-08-02  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Wrap the return
	statement in a block when the expansion of the return expression has
	created a finalization chain.
	* freeze.adb (Freeze_Expression): Alphabetize all choices associated
	with the parent node.
	Add N_Extended_Return_Statement to handle the case where a transient
	object declaration appears in the Return_Object_Declarations list of
	an extended return statement.

2011-08-02  Matthew Gingell  <gingell@adacore.com>

	* adaint.c (__gnat_is_symbolic_link_attr): Supress warning on possibly
	unused parameter 'name'.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_elim.adb (Set_Eliminated): If the overridden operation is an
	inherited operation, check whether its alias, which is the source
	operastion that it renames, has been marked eliminated.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* exp_util.adb (Safe_Prefixed_Reference): Do not consider safe an
	in-mode parameter whose type is an access type since it can be used to
	modify its designated object. Enforce code that handles as safe an
	access type that is not access-to-constant but it is the result of a
	previous removal of side-effects.
	(Remove_Side_Effects): Minor code reorganization of cases which require
	no action. Done to incorporate documentation on new cases uncovered
	working in this ticket: no action needed if this routine was invoked
	too early and the nodes are not yet decorated.
	* sem_res.adb (Resolve_Slice): Minor code cleanup replacling two calls
	to routine Remove_Side_Effects by calls to Force_Evaluation since they
	were issued with actuals that are implicitly provided by
	Force_Evaluation.

2011-08-02  Robert Dewar  <dewar@adacore.com>

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

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_attr.adb (Check_Formal_Restriction_On_Attribute): new procedure
	to issue an error in formal mode on attribute not supported in this mode
	(Analyze_Attribute): issue errors on standard attributes not supported
	in formal mode.
	* sem_ch3.adb (Modular_Type_Declaration): remove obsolete part of
	comment, and issue error in formal mode on modulus which is not a power
	of 2.
	(Process_Range_Expr_In_Decl): issue error in formal mode on non-static
	range.
	* sem_ch8.adb (Find_Type): issue error in formal mode on 'Base in
	subtype mark.
	* sem_res.adb (Resolve_Unary_Op): issue error in formal mode on unary
	operator on modular type (except 'not').

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor reformatting.

2011-08-02  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-linux.ads: Minor comment update and reformatting.
	* i-cexten.ads: Make this unit pure, as for its parent.
	Will allow its usage in more contexts if needed.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* s-utf_32.ads: Minor comment fix.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Actuals): if the subprogram is a primitive
	operation of a tagged synchronized type, handle the case where the
	controlling argument is overloaded.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi, opt.ads, sem_prag.adb, snames.ads-tmpl:
	Replace pragma SPARK_95 with pragma Restrictions (SPARK)
	* par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): set
	SPARK mode and formal verification mode on processing SPARK restriction
	* s-rident.ads (Restriction_Id): add SPARK restriction in those not
	requiring consistency checking.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb: Minor reformatting.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
	a-cforse.ads: Remove unneeded with of Ada.Containers
	Remove commented out pragma Inline's
	Move specifications of new subprograms to the actual specs

2011-08-02  Yannick Moy  <moy@adacore.com>

	* a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads,
	a-cforse.ads: Update comments.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: add attribute name when 'Result has the wrong prefix.

2011-08-02  Robert Dewar  <dewar@adacore.com>

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

2011-08-02  Claire Dross  <dross@adacore.com>

	* a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, a-cforse.ads,
	a-cofove.ads: Add comments.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* gnat_rm.texi: Document formal containers.

2011-08-02  Emmanuel Briot  <briot@adacore.com>

	* g-comlin.adb (Goto_Section, Getopt): fix handling of "*" when there
	are empty sections.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* mlib-prj.adb, restrict.ads, sem_aggr.adb, sem_ch12.adb: Minor
	reformatting.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* aspects.adb: New aspects Default_Value and Default_Component_Value
	New format of Aspect_Names table checks for omitted entries
	* aspects.ads: Remove mention of Aspect_Cancel and add documentation on
	handling of boolean aspects for derived types.
	New aspects Default_Value and Default_Component_Value
	New format of Aspect_Names table checks for omitted entries
	* einfo.ads, einfo.adb (Has_Default_Component_Value): New flag
	(Has_Default_Value): New flag
	(Has_Default_Component_Value): New flag
	(Has_Default_Value): New flag
	* par-ch13.adb (P_Aspect_Specifications): New format of Aspect_Names
	table.
	* par-prag.adb: New pragmas Default_Value and Default_Component_Value
	* sem_ch13.adb (Analyze_Aspect_Specifications): New aspects
	Default_Value and Default_Component_Value
	* sem_prag.adb: New pragmas Default_Value and Default_Component_Value
	New aspects Default_Value and Default_Component_Value
	* snames.ads-tmpl: New pragmas Default_Value and Default_Component_Value
	* sprint.adb: Print N_Aspect_Specification node when called from gdb

2011-08-02  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Library_Attributes): For virtual library project,
	inherit library kind.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb: Add guards in calls to Matching_Static_Array_Bounds.
	Minor reformatting.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* i-cstrin.ads: Updates to make Interfaces.C.Strings match RM

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): Fix thinko.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* impunit.adb: Add comment.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_aggr.adb (Check_Qualified_Aggregate): new procedure which checks
	qualification of aggregates in formal mode
	(Is_Top_Level_Aggregate): returns True for an aggregate not contained in
	another aggregate
	(Resolve_Aggregate): complete the test that an aggregate is adequately
	qualified in formal mode

2011-08-02  Pascal Obry  <obry@adacore.com>

	* make.adb, bindgen.adb, gnatbind.adb: Minor reformatting.
	* mlib-prj.adb: Supress warning when compiling binder generated file.
	(Build_Library): Supress all warnings when compiling the binder
	generated file.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* errout.adb, errout.ads (Check_Formal_Restriction): move procedure
	from here...
	* restrict.adb, restrict.ads (Check_Formal_Restriction): ...to here
	* sem_aggr.adb, sem_ch5.adb, sem_util.adb:
	Add with/use clauses to make Check_Formal_Restriction visible

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Check_Generic_Actuals): handle properly actual
	in-parameters when type of the generic formal is private in the generic
	spec and non-private in the body.

2011-08-02  Claire Dross  <dross@adacore.com>

	* a-cfdlli.adb, a-cfdlli.ads, a-cfhase.adb, a-cfhase.ads, a-cfhama.adb,
	a-cfhama.ads, a-cforse.adb, a-cforse.ads, a-cforma.adb, a-cforma.ads,
	a-cofove.adb, a-cofove.ads: New files implementing formal containers.
	* impunit.adb, Makefile.rtl: Take new files into account.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_aggr.adb, sem_ch3.adb, sem_ch5.adb, make.adb, sem_res.adb,
	sem_attr.adb, sem_ch6.adb, sem_ch8.adb: Minor reformatting.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): disable incorrectly placed check in
	formal mode
	* sem_util.adb (Matching_Static_Array_Bounds): proper detection of
	matching static array bounds, taking into account the special case of
	string literals
	* sem_ch3.adb: Typo in comment.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* errout.adb, errout.ads (Check_Formal_Restriction): new procedure
	which issues an error in formal mode if its argument node is originally
	from source
	* sem_ch3.adb (Analyze_Full_Type_Declaration): move test that a type
	has a discriminant specification so that it does not include the case
	of derived types
	(Derived_Type_Declaration): move here the test that a derived type has a
	discriminant specification
	* sem_aggr.adb (Resolve_Record_Aggregate): test the presence of the
	first element of a component association before accessing its choices
	(presence of component association is not enough)
	* exp_ch6.adb (Expand_N_Subprogram_Declaration): test if a subprogram
	declaration is a library item before accessing the next element in a
	list, as library items are not member of lists
	* sem_attr.adb, sem_ch11.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb,
	sem_ch8.adb, sem_ch9.adb, sem_res.adb, sem_util.adb: use
	Check_Formal_Restriction whenever possible.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Find_Type_Of_Object): In ASIS mode, create an itype
	reference when needed.

2011-08-02  Bob Duff  <duff@adacore.com>

	* gnat_ugn.texi: Fix typo.

2011-08-02  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Use MLib.Tgt.Archive_Ext as the extension of
	archive file name. Do not use the full path name of archives for Open
	VMS.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb, sem_ch11.adb: New calling sequence for
	Analyze_Aspect_Specifications
	* sem_ch13.adb
	(Analyze_Aspect_Specifications): New handling for boolean aspects
	* sem_ch13.ads (Analyze_Aspect_Specifications): New calling sequence
	* sem_ch3.adb, sem_ch6.adb, sem_ch7.adb, sem_ch9.adb: New calling
	sequence for Analyze_Aspect_Specifications
	* sem_prag.adb (Analyze_Pragma): Remove use of Aspect_Cancel entirely
	* sinfo.ads, sinfo.adb (Aspect_Cancel): Remove, no longer used

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Remove handling of delayed boolean
	aspects, since these no longer exist.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* par-ch13.adb (Aspect_Specifications_Present): Always return false on
	semicolon, do not try to see if there are aspects following it.
	* par-ch3.adb (P_Declarative_Items): Better message for unexpected
	aspect spec.

2011-08-02  Robert Dewar  <dewar@adacore.com>

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

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

	* sem_ch13.ads (Analyze_Aspect_Specification): Add pragma Inline.
	* sem_ch13.adb (Analyze_Non_Null_Aspect_Specifications): New procedure
	extracted from...
	(Analyze_Aspect_Specifications): ...here.  Call above procedure.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* exp_ch6.adb (Expand_N_Subprogram_Declaration): issue error in formal
	mode on subprogram declaration outside of package specification, unless
	it is followed by a pragma Import
	* sem_ch3.adb (Access_Definition, Access_Subprogram_Declaration,
	Access_Type_Declaration): issue error in formal mode on access type
	(Analyze_Incomplete_Type_Decl): issue error in formal mode on
	incomplete type
	(Analyze_Object_Declaration): issue error in formal mode on object
	declaration which does not respect SPARK restrictions
	(Analyze_Subtype_Declaration): issue error in formal mode on subtype
	declaration which does not respect SPARK restrictions
	(Constrain_Decimal, Constrain_Float, Constrain_Ordinary_Fixed): issue
	error in formal mode on digits or delta constraint
	(Decimal_Fixed_Point_Type_Declaration): issue error in formal mode on
	decimal fixed point type
	(Derived_Type_Declaration): issue error in formal mode on derived type
	other than type extensions of tagged record types
	* sem_ch6.adb (Process_Formals): remove check in formal mode, redundant
	with check on access definition
	* sem_ch9.adb (Analyze_Protected_Definition): issue error in formal
	mode on protected definition.
	(Analyze_Task_Definition): issue error in formal mode on task definition

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* make.adb, sem_ch8.adb, s-inmaop-vxworks.adb: Minor reformatting.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* sem_ch6.adb (Can_Override_Operator): New function.
	(Verify_Overriding_Indicator): Add missing code to check overriding
	indicator in operators. Fixes regression.
	(Check_Overriding_Indicator): Minor reformating after replacing the
	code that evaluates if the subprogram can override an operator by
	invocations to the above new function.
	* einfo.adb
	(Write_Field26_Name): Add missing code to ensure that, following
	the documentation in einfo.ads, this field is not shown as attribute
	"Static_Initialization" on non-dispatching functions.

2011-08-02  Jose Ruiz  <ruiz@adacore.com>

	* sem_res.adb (Resolve_Call): A call to
	Ada.Real_Time.Timing_Events.Set_Handler violates restriction
	No_Relative_Delay (AI-0211) only when it sets a relative timing event,
	i.e., when the second parameter is of type Time_Span.

2011-08-02  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): use <library dir>/lib<library name>.a to link
	with an archive instead of -L<library dir> -l<library name>.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Use_Type): If the clause is being re-analyzed,
	mark the base types In_Use in addition to making the operations
	use_visible.

2011-08-02  Ed Falis  <falis@adacore.com>

	* init.c: add and setup __gnat_signal_mask for the exception signals
	* s-inmaop-vxworks.adb: new file.
	* s-intman-vxworks.adb: remove unnecessary initializations and
	simplify remaining
	* s-intman-vxworks.ads: remove unnecessary variable
	* s-taprop-vxworks.adb: simplify signal initialization

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_ch8.adb: Minor code reorganization, comment updates.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Matching_Static_Array_Bounds): Moved to Sem_Util
	* sem_util.ads, sem_util.adb (Matching_Static_Array_Bounds): Moved
	here from Sem_Res.
	(Matching_Static_Array_Bounds): Use Is_Ok_Static_Expression
	(Matching_Static_Array_Bounds): Moved here from Sem_Res

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* atree.h, atree.ads, atree.adb: New subprograms to manipulate Elist5.
	* par_ch8.adb (P_Use_Type): initialize Used_Operations for node.
	* sinfo.ads, sinfo.adb (Used_Operations): new attribute of
	use_type_clauses, to handle more efficiently use_type and use_all_type
	constructs.
	* sem_ch8.adb: Rewrite Use_One_Type and End_Use_Type to handle the
	Ada2012 Use_All_Type clause.
	(Use_Class_Wide_Operations): new procedure.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb, par-ch10.adb, par-ch6.adb, sem.adb, sem_ch6.adb,
	sem_ch6.ads, sinfo.adb, sinfo.ads, sprint.adb: Change parameterized
	expression to expression function.

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb: transform simple Ada2012 membership into equality only
	if types are compatible.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Matching_Static_Array_Bounds): new function which
	returns True if its argument array types have same dimension and same
	static bounds at each index.
	(Resolve_Actuals): issue an error in formal mode on actuals passed as
	OUT or IN OUT paramaters which are not view conversions in SPARK.
	(Resolve_Arithmetic_Op): issue an error in formal mode on
	multiplication or division with operands of fixed point types which are
	not qualified or explicitly converted.
	(Resolve_Comparison_Op): issue an error in formal mode on comparisons of
	Boolean or array type (except String) operands.
	(Resolve_Equality_Op): issue an error in formal mode on equality
	operators for array types other than String with non-matching static
	bounds.
	(Resolve_Logical_Op): issue an error in formal mode on logical operators
	for array types with non-matching static bounds. Factorize the code in
	Matching_Static_Array_Bounds.
	(Resolve_Qualified_Expression): issue an error in formal mode on
	qualified expressions for array types with non-matching static bounds.
	(Resolve_Type_Conversion): issue an error in formal mode on type
	conversion for array types with non-matching static bounds

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* par-ch10.adb: Minor code reorganization (use Nkind_In).

2011-08-02  Ed Schonberg  <schonberg@adacore.com>

	* par-ch9.adb: save location of entry for proper error message.

2011-08-02  Javier Miranda  <miranda@adacore.com>

	* sem_type.ads, sem_type.adb (Is_Ancestor): Addition of a new formal
	(Use_Full_View) which permits this routine to climb through the
	ancestors using the full-view of private parents.
	* sem_util.adb (Collect_Interfaces_Info, Implements_Interface): Set
	Use_Full_View to true in calls to Is_Ancestor.
	* sem_disp.adb (Override_Dispatching_Operation): Set Use_Full_View to
	true in call to Is_Ancestor.
	* exp_ch3.adb (Build_Offset_To_Top_Functions, Initialize_Tag): Set
	Use_Full_View to true in call to Is_Ancestor.
	* exp_ch7.adb (Controller_Component): Set Use_Full_View to true in
	call to Is_Ancestor.
	* exp_ch4.adb (Expand_N_Type_Conversion, Tagged_Membership): Set
	Use_Full_View to true in calls to Is_Ancestor.
	* exp_disp.adb (Expand_Interface_Actuals, Make_Secondary_DT, Make_DT,
	Make_Select_Specific_Data_Table, Register_Primitive,
	Set_All_DT_Position): Set Use_Full_View to true in calls to Is_Ancestor.
	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Set Use_Full_View
	to true in call to Is_Ancestor.
	* exp_util.adb (Find_Interface_ADT, Find_Interface_Tag): Set
	Use_Full_View to true in calls to Is_Ancestor.
	* exp_cg.adb
	(Write_Call_Info): Set Use_Full_View to true in call to Is_Ancestor.
	(Write_Type_Info): Set Use_Full_View to true in call to Is_Ancestor.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi: Minor reformatting.
	* sem_prag.adb: Minor reformatting.

2011-08-02  Tristan Gingold  <gingold@adacore.com>

	* vms_data.ads: Add VMS qualifier for -gnateP.

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* par-ch13.adb (P_Aspect_Specification): New meaning of Decl = Empty
	* par-ch7.adb (P_Package): Proper placement of aspects for package
	decl/instantiation.
	* par-endh.adb (Check_End): Ad Is_Sloc parameter
	(End_Statements): Add Is_Sloc parameterr
	* par.adb (P_Aspect_Specification): New meaning of Decl = Empty
	(Check_End): Ad Is_Sloc parameter
	(End_Statements): Add Is_Sloc parameterr

2011-08-02  Vincent Celier  <celier@adacore.com>

	* ug_words: Add VMS qualifier equivalent to -gnateP:
	/SYMBOL_PREPROCESSING.

2011-08-02  Jose Ruiz  <ruiz@adacore.com>

	* gnat-style.texi: For hexadecimal numeric literals the typical
	grouping of digits is 4 to represent 2 bytes.
	A procedure spec which is split into several lines is indented two
	characters.

2011-08-02  Yannick Moy  <moy@adacore.com>

	* exp_aggr.adb (Is_Others_Aggregate): move function to other unit.
	* sem_aggr.adb, sem_aggr.ads (Is_Others_Aggregate): move function here
	(Resolve_Aggregate): issue errors in formal modes when aggregate is not
	properly qualified
	(Resolve_Array_Aggregate): issue errors in formal modes on non-static
	choice in array aggregate
	(Resolve_Extension_Aggregate): issue errors in formal modes on subtype
	mark as ancestor
	(Resolve_Record_Aggregate): issue errors in formal modes on mixed
	positional and named aggregate for record, or others in record
	aggregate, or multiple choice in record aggregate
	* sem_res.adb (Resolve_Logical_Op): issue errors in formal mode when
	array operands to logical operations AND, OR and XOR do not have the
	same static lower and higher bounds
	* sem_ch5.adb, sinfo.ads: Correct typos in comments

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, sem_util.adb, sem_ch6.adb (Last_Source_Statement):
	Replaces Last_Source_Node_In_Sequence.
	* err_vars.ads (Error_Msg_Lang): 16 is OK, don't need 4K
	* errout.adb (Set_Error_Msg_Lang): Takes arg with no parens, but stores
	parens and blank in string (this was inconsistently implemented).
	* errout.ads
	(Set_Error_Msg_Lang): Takes arg with no parens, but stores parens and
	blank in string (this was inconsistently implemented).
	* gnat1drv.adb
	(Set_Global_Switches): Set formal mode switches appropriately
	* opt.ads, opt.adb: Formal mode is now global switches, more consistent
	* par-prag.adb
	(Analyze_Pragma, case SPARK_95): Set opt switches appropriately and
	call Set_Error_Msg_Lang to set "spark" as language name.
	* par.adb: Remove unnecessary call to set formal language for errout
	* sem_prag.adb (P_Pragma, case SPARK_95): Set opt switches
	appropriately and call Set_Error_Msg_Lang to set "spark" as language
	name.
	* sem_ch4.adb (Analyze_Concatenation_Operand): remove procedure and
	calls to it, moved after resolution so that types are known
	* sem_res.adb (Resolve_Op_Concat): issue an error in formal mode if
	result of concatenation is not of type String
	(Resolve_Op_Concat_Arg): issue an error in formal mode if an operand of
	concatenation is not properly restricted
	* gnat_rm.texi: Add doc on pragma Spark_95.
	* gcc-interface/Makefile.in: Remove obsolete target pairs for
	Interfaces.C.* on VMS. Remove s-parame-vms-restrict.ads.
	* gcc-interface/Make-lang.in: Update dependencies.

2011-08-01  Javier Miranda  <miranda@adacore.com>

	* sem_disp.adb (Override_Dispatching_Operation): Enforce strictness of
	condition that detects if the overridden operation must replace an
	existing entity.

2011-08-01  Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_Case_Expression): Propagate to the expanded
	code declarations inserted by Insert_Actions in each alternative of the
	N_Case_Expression node.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb: Minor code reorganization.
	* sem_util.adb: Minor reformatting.

2011-08-01  Pascal Obry  <obry@adacore.com>

	* prj-env.adb: Remove <prefix>/lib/gpr/<target> project search path.
	* gnat_ugn.texi: Add documentation for VERSIONINFO Windows resource.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* par-ch4.adb (P_Name): issue a syntax error in SPARK mode on character
	literal or operator symbol which is prefixed
	* sem_attr.adb (Analyze_Access_Attribute): issue an error in formal
	mode on access attributes.
	* sem_ch4.adb (Analyze_Concatenation_Operand): new procedure to check
	that concatenation operands are properly restricted in formal mode
	(Analyze_Concatenation, Analyze_Concatenation_Rest): call new procedure
	Analyze_Concatenation_Operand. Issue an error in formal mode if the
	result of the concatenation has a type different from String.
	(Analyze_Conditional_Expression, Analyze_Explicit_Dereference,
	Analyze_Quantified_Expression, Analyze_Slice,
	Analyze_Null): issue an error in formal mode on unsupported constructs
	* sem_ch5.adb
	(Analyze_Block_Statement): only issue error on source block statement
	* sem_util.ads, sem_util.adb (Last_Source_Node_In_Sequence): new
	function which returns the last node in a list of nodes for which
	Comes_From_Source returns True, if any
	* sem_ch6.adb (Check_Missing_Return): minor refactoring to use
	Last_Source_Node_In_Sequence
	* sem_ch8.adb (Analyze_Exception_Renaming, Analyze_Generic_Renaming,
	Analyze_Object_Renaming, Analyze_Use_Package): issue an error in formal
	mode on unsupported constructs
	* sem_ch9.adb Do not return after issuing error in formal mode, as the
	rest of the actions may be needed later on since the error is marked as
	not serious.
	* sinfo.ads: Typos in comments.

2011-08-01  Pascal Obry  <obry@adacore.com>

	* projects.texi: Minor editing.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* err_vars.ads (Error_Msg_Lang, Error_Msg_Langlen): new variables for
	insertion character ~~
	* errout.ads, errout.adb (Formal_Error_Msg_...): remove procedures
	(Set_Error_Msg_Lang): new procedure which fixes the language for use
	with insertion character ~~
	(Set_Msg_Text): treat insertion character ~~
	* par-ch4.adb, par-ch5.adb, par-endh.adb, sem_attr.adb, sem_ch11.adb,
	sem_ch3.adb, sem_ch5.adb, sem_ch9.adb, sem_util.adb: Replace calls to
	Formal_Error_Msg_... procedures by equivalent Error_Msg_...
	procedures. Favor calls to Error_Msg_F(E) over Error_Msg_N(E). Make
	errors related to the formal language restriction not serious
	(insertion character |).
	* par.adb (Par): set formal language for error messages if needed
	* sem_ch6.adb (Check_Missing_Return): take into account possible
	generated statements at the end of the function
	* snames.ads-tmpl (Name_SPARK_95, Pragma_SPARK_95): new variable and
	enumeration value to define a new pragma SPARK_95
	* opt.ads, opt.adb (SPARK_Version_Type, SPARK_Version_Default,
	SPARK_Version): new type and variables to store the SPARK version
	(none by default).
	(SPARK_Mode): return True when SPARK_Version is set
	* par-prag.adb: Correct indentation
	(Prag): take Pragma_SPARK_95 into account
	* sem_prag.adb (Set_Mechanism_Value, Sig_Flags): take Pragma_SPARK_95
	into account.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* sem_ch3.adb, sem_ch3.ads, sem_ch5.adb, prj-part.adb, par-ch4.adb,
	sem_util.adb, sem_ch4.adb, sem_ch6.adb, sem_ch6.ads, sem_ch8.adb,
	sem_ch8.ads, sem_ch13.ads, par-ch5.adb, prj-env.ads: Minor reformatting

2011-08-01  Pascal Obry  <obry@adacore.com>

	* prj-part.ads, prj-part.adb (Parse): Add Target_Name parameter. Pass
	Target_Name to Get_Path call.
	(Parse_Single_Project): Likewise.
	(Post_Parse_Context_Clause): Likewise.
	* prj-env.ads, prj-env.adb (Find_Project): Add Target_Name parameter.
	Call Initialise_Project_Path with the proper Target_Name.
	(Initialize_Project_Path): Add <gnat_root>/<target_name>/lib/gnat
	search path.
	(Get_Path): Add Target_Name parameter. Call Initialise_Project_Path
	with the proper Target_Name.
	* prj-conf.adb (Get_Or_Create_Configuration_File): Pass Target_Name to
	Part.Parse routine.
	(Parse_Project_And_Apply_Config): Likewise.
	* prj-makr.adb (Initialize): Pass empty Target_Name to Parse routine.
	This is fine as this part of the code is supporting only native
	compilation.
	* prj-pars.adb (Parse): Pass empty Target_Name to Parse routine. This
	is fine as this part of the code is supporting only native compilation.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* sem_util.adb (Enter_Name): issue error in formal mode on declaration
	of homonym, unless the homonym is one of the cases allowed in SPARK
	* par-ch5.adb (Parse_Decls_Begin_End): issue error in SPARK mode for
	package declaration occurring after a body.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb, exp_ch4.adb: Minor reformatting.

2011-08-01  Javier Miranda  <miranda@adacore.com>

	* einfo.ads (Access_Disp_Table): Fix documentation.
	(Dispatch_Table_Wrappers): Fix documentation.

2011-08-01  Pascal Obry  <obry@adacore.com>

	* prj-env.adb, prj-env.ads: Minor reformatting.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* sem_util.ads, sem_util.adb, par.adb, par_util.adb
	(Formal_Error_Msg, Formal_Error_Msg_N, Formal_Error_Msg_SP): move
	procedures out of these packages.
	* errout.ads, errout.adb
	(Formal_Error_Msg, Formal_Error_Msg_N, Formal_Error_Msg_SP): move
	procedures in of this package
	(Formal_Error_Msg_NE): new procedure for wrapper on Error_Msg_NE
	* par-ch5.adb (Parse_Decls_Begin_End): issue syntax error in SPARK mode
	on misplaced later vs initial declarations, like in Ada 83
	* sem_attr.adb (Processing for Analyze_Attribute): issue error in
	formal mode on attribute of private type whose full type declaration
	is not visible
	* sem_ch3.adb (Analyze_Declarations): issue error in formal mode on a
	package declaration inside a package specification
	(Analyze_Full_Type_Declaration): issue error in formal mode on
	controlled type or discriminant type
	* sem_ch6.adb (Analyze_Subprogram_Specification): only issue error on
	user-defined operator means that it should come from the source
	(New_Overloaded_Entity): issue error in formal mode on overloaded
	entity.
	* sem_ch6.ads, sem_ch13.ads: typos in comments.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* atree.adb: Minor reformatting.
	* checks.adb: Minor reformatting.

2011-08-01  Vincent Celier  <celier@adacore.com>

	* s-parame-vms-ia64.ads: Fix typo in comment
	Minor reformatting
	* s-parame-vms-restrict.ads: Removed, unused.

2011-08-01  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb
	(Is_Variable_Size_Array): Remove local subprogram Is_Constant_Bound.
	* sem_ch3.adb
	(Constrain_Index): Remove side effects in the evaluation of the bounds.
	* sem_ch3.ads, sem_ch3.adb
	(Is_Constant_Bound): New extended version of the subprogram that was
	previously located inside function Exp_Ch3.Is_Variable_Size_Array.
	Moved here since it is shared by routines of sem_ch3 and exp_ch3.
	* sem_aux.ads (Constant_Value): Fix typo in comment.
	* checks.adb (Generate_Index_Checks): New implementation which, for
	array objects with constant bounds, generates the runtime check
	referencing the bounds of the array type. For other cases this routine
	provides its previous behavior obtaining such values from the array
	object.
	* sem_res.adb (Set_Slice_Subtype): Link a copied range subtree with its
	parent type.
	* atree.adb (New_Copy): Reset flag Is_Overloaded in the new copy since
	we cannot have semantic interpretations of the new node.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Fully_Conformant_Expressions): handle quantified
	expressions.

2011-08-01  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch8.adb: Minor code editing.
	* s-vxwext.adb: Remove trailing space.
	* freeze.adb, freeze.ads, errout.ads, erroutc.adb: Fix GPLv3 header for
	consistency with other files.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* s-auxdec.ads, s-auxdec-vms_64.ads: Minor reformatting.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* par-ch10.adb: reject parameterized expressions as compilation unit.
	* sem_ch4.adb: handle properly conditional expression with overloaded
	then_clause and no else_clause.

2011-08-01  Tristan Gingold  <gingold@adacore.com>

	* s-parame-vms-alpha.ads, s-parame-vms-ia64.ads: Redeclare C_Address
	like done by System.Aux_DEC.
	* env.c (__gnat_setenv) [VMS]: Put logicals into LNM$PROCESS table.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* par-endh.adb (Check_End): issue a syntax error in SPARK mode for
	missing label at end of declaration (subprogram or package)
	* par-ch4.adb (P_Name): issue a syntax error in SPARK mode for mixing
	of positional and named parameter association
	* par.adb, par-util.adb (Formal_Error_Msg_SP): new wrapper on
	Error_Msg_SP which adds a prefix to the error message giving the name
	of the formal language analyzed
	* sem_ch6.adb (Analyze_Return_Type): issue an error in formal mode for
	access result type in subprogram, unconstrained array as result type,.
	(Analyze_Subprogram_Declaration): issue an error in formal mode for null
	procedure
	* sem_ch8.adb: Code clean up.

2011-08-01  Javier Miranda  <miranda@adacore.com>

	* sem_ch7.adb (Uninstall_Declarations): Remove useless code.
	* einfo.ads (Access_Disp_Table): Fix documentation.
	(Dispatch_Table_Wrappers): Fix documentation.
	* einfo.adb (Access_Disp_Table, Dispatch_Table_Wrappers,
	Set_Access_Disp_Table, Set_Dispatch_Table_Wrappers): Fix the assertions
	to enforce the documentation of this attribute.
	(Set_Is_Interface): Cleanup the assertion.
	* exp_ch4.adb (Expand_Allocator_Expression, Tagged_Membership): Locate
	the Underlying_Type entity before reading attribute Access_Disp_Table.
	* exp_disp.adb (Expand_Dispatching_Call, Expand_Interface_Conversion):
	Locate the Underlying_Type before reading attribute Access_Disp_Table.
	* exp_aggr.adb (Build_Array_Aggr_Code, Build_Record_Aggr_Code): Locate
	the Underlying_Type entity before reading attribute Access_Disp_Table.
	* exp_ch3.adb (Build_Record_Init_Proc, Expand_N_Object_Declaration):
	Locate the Underlying_Type entity before reading attribute
	Access_Disp_Table.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* s-poosiz.ads: Additional overriding indicators.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* sem_ch5.adb (Analyze_Exit_Statement): add return after error in
	formal mode.
	(Analyze_Iteration_Scheme): issue error in formal mode when loop
	parameter specification does not include a subtype mark.
	* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): issue error in
	formal mode on abstract subprogram.
	(Analyze_Subprogram_Specification): issue error in formal mode on
	user-defined operator.
	(Process_Formals): issue error in formal mode on access parameter and
	default expression.
	* sem_ch9.adb (Analyze_Abort_Statement,
	Analyze_Accept_Statement, Analyze_Asynchronous_Select,
	Analyze_Conditional_Entry_Call, Analyze_Delay_Relative,
	Analyze_Delay_Until, Analyze_Entry_Call_Alternative,
	Analyze_Requeue, Analyze_Selective_Accept,
	Analyze_Timed_Entry_Call): issue error in formal mode on such constructs
	* sem_ch11.adb (Analyze_Raise_Statement, Analyze_Raise_xxx_Error):
	issue error in formal mode on user-defined raise statement.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* sem_ch6.adb (Enter_Overloaded_Entity): Do not warn about a
	declaration being hidden when overriding an implicit inherited
	subprogram.
	* par-ch10.adb (P_Compilation_Unit): In syntax check only mode
	(-gnats), do not complain about a source file that contains only a
	pragma No_Body.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Iterator_Scheme): Do not overwrite type of loop
	variable if already set.

2011-08-01  Arnaud Charlet  <charlet@adacore.com>

	* g-socket-dummy.adb, s-osinte-linux.ads, g-socket-dummy.ads,
	g-debuti.adb, g-tasloc.adb, g-debuti.ads, g-tasloc.ads,
	s-osinte-hpux.ads, g-sercom.adb, g-soliop-solaris.ads, g-sercom.ads,
	g-sptain.ads, g-curexc.ads, s-tasloc.adb, s-tasloc.ads, s-tataat.adb,
	g-ctrl_c.adb, a-reatim.adb, s-tataat.ads, g-dirope.adb, g-ctrl_c.ads,
	g-dirope.ads, g-boubuf.adb, g-calend.adb, g-boubuf.ads, g-souinf.ads,
	g-table.adb, g-bytswa-x86.adb, g-wispch.adb, g-io.adb, g-table.ads,
	g-wispch.ads, g-io.ads, g-memdum.adb, g-memdum.ads, g-busorg.adb,
	g-busorg.ads, g-regpat.adb, g-sothco-dummy.adb, g-encstr.adb,
	g-regpat.ads, g-sothco-dummy.ads, s-osinte-aix.ads, g-encstr.ads,
	g-sercom-mingw.adb, s-mastop-vms.adb, g-diopit.adb, g-diopit.ads,
	s-vxwext.adb, g-dyntab.adb, g-dyntab.ads, g-crc32.adb,
	g-sercom-linux.adb, g-crc32.ads, s-regpat.adb, g-flocon.ads,
	s-regpat.ads, g-stheme.adb, g-sestin.ads, s-taspri-posix-noaltstack.ads,
	g-soliop.ads, s-inmaop-posix.adb, g-locfil.ads, g-enblsp-vms-alpha.adb,
	g-socthi-dummy.adb, g-socthi-dummy.ads, gnat.ads, g-moreex.adb,
	g-moreex.ads, g-dynhta.adb, g-dynhta.ads, g-deutst.ads, g-htable.adb,
	g-cgicoo.adb, g-htable.ads, g-cgicoo.ads, a-interr.adb,
	g-socthi-vms.adb, g-socthi-vms.ads, g-hesora.adb, g-bubsor.adb,
	g-hesora.ads, g-bubsor.ads, g-md5.adb, g-md5.ads, s-intman-irix.adb,
	s-htable.adb, s-osinte-vms.adb, s-htable.ads, s-osinte-vms.ads,
	s-taprob.adb, g-bytswa.adb, g-bytswa.ads, s-osinte-solaris-posix.ads,
	a-suenco.adb, g-comver.adb, g-comver.ads, g-exctra.adb,
	s-osinte-solaris.adb, g-exctra.ads, s-osinte-irix.ads,
	s-osinte-solaris.ads, a-caldel-vms.adb, g-socthi-vxworks.adb,
	g-expect.adb, g-socthi-vxworks.ads, g-expect.ads, g-comlin.ads,
	g-heasor.adb, g-heasor.ads, g-traceb.adb, g-traceb.ads, g-decstr.adb,
	g-spipat.adb, g-decstr.ads, g-spipat.ads, s-mastop-tru64.adb,
	g-except.ads, g-thread.adb, g-hesorg.adb, g-thread.ads, g-hesorg.ads,
	g-expect-vms.adb, a-stuten.ads, g-spchge.adb, g-spchge.ads,
	g-u3spch.adb, g-u3spch.ads, g-spitbo.adb, g-spitbo.ads,
	s-osinte-dummy.ads, s-osinte-posix.adb, g-pehage.adb, g-pehage.ads,
	s-gloloc-mingw.adb, g-sha1.ads, s-traceb-hpux.adb,
	g-trasym-unimplemented.adb, g-trasym-unimplemented.ads, g-io_aux.adb,
	g-regexp.adb, g-io_aux.ads, g-socthi-mingw.adb, g-regexp.ads,
	s-osinte-hpux-dce.adb, g-socthi-mingw.ads, g-cgi.adb,
	s-osinte-hpux-dce.ads, g-cgi.ads, g-byorma.adb, g-boumai.ads,
	g-byorma.ads, a-caldel.adb, s-regexp.adb, s-regexp.ads,
	g-soliop-mingw.ads, g-sptavs.ads, s-osinte-tru64.ads, g-speche.adb,
	g-speche.ads, g-socthi.adb, g-stsifd-sockets.adb, g-socthi.ads,
	s-osinte-darwin.ads, i-vxwork-x86.ads, g-awk.adb, i-vxwork.ads,
	g-awk.ads, g-zspche.adb, g-zspche.ads, g-socket.adb, g-sptabo.ads,
	g-socket.ads, g-semaph.adb, g-semaph.ads, s-taspri-posix.ads,
	g-enblsp-vms-ia64.adb, g-cgideb.adb, g-cgideb.ads, g-sothco.adb,
	s-osinte-freebsd.ads, g-sothco.ads, g-catiio.adb, g-casuti.adb,
	g-catiio.ads, g-casuti.ads, g-trasym.adb, g-trasym.ads, s-casuti.adb,
	g-os_lib.adb, s-traceb-mastop.adb, g-busora.adb, s-interr-dummy.adb,
	g-busora.ads, g-enutst.ads, s-os_lib.adb, a-tasatt.adb,
	s-osinte-mingw.ads: Update to GPLv3 run-time license.
	Use GNAT instead of GNARL.

2011-08-01  Bob Duff  <duff@adacore.com>

	* a-cdlili.ads, a-cihama.ads, a-coinve.ads, a-ciorse.ads, a-coorma.ads,
	a-cidlli.ads, a-ciormu.ads, a-cihase.ads, a-cohama.ads, a-coorse.ads,
	a-ciorma.ads, a-coormu.ads, a-convec.ads, a-cohase.ads: Minor
	reformatting.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* debug.adb (d.D) reverve flag for the SPARK mode
	(d.E) reverve flag for SPARK generation mode
	(d.F) reverve flag for Why generation mode
	* opt.ads, opt.adb (ALFA_Mode, ALFA_Through_SPARK_Mode,
	ALFA_Through_Why_Mode, Formal_Verification_Mode, SPARK_Mode):  New
	functions which return True when the corresponding modes are set
	(Formal_Language): return "spark" or "alfa" when in formal verification
	mode.
	* sem_util.ads, sem_util.adb (Formal_Error_Msg): new wrapper on
	Error_Msg to prefix the error message with a tag giving the formal
	language
	(Formal_Error_Msg_N): new wrapper on Error_Msg_N to prefix the error
	message with a tag giving the formal language
	* sem_ch5.adb (Analyze_Block_Statement): issue error in formal mode on
	block statement
	(Analyze_Case_Statement): issue error in formal mode on case statement
	with a single "others" case alternative
	(Analyze_Exit_Statement): issue errors in formal mode on exit
	statements which do not respect SPARK restrictions
	(Analyze_Goto_Statement): issue error in formal mode on goto statement
	(Check_Unreachable_Code): always issue an error (not a warning) in
	formal mode on unreachable code (concerns both code after an infinite
	loop and after an unconditional jump, both not allowed in SPARK)
	* sem_ch6.adb (Analyze_Return_Statement): add call to
	Set_Return_Present for a procedure containing a return statement
	(already done for functions in Analyze_Function_Return)
	(Analyze_Function_Return): issue error in formal mode on extended
	return or if return is not last statement in function
	(Check_Missing_Return): issue error in formal mode if function does
	not end with return or if procedure contains a return
	* sem_ch8.ads, sem_ch8.adb (Has_Loop_In_Inner_Open_Scopes): new
	function to detect if there is an inner scope of its parameter S which
	is a loop.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* sem_ch6.ads: Minor reformatting.

2011-08-01  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (Abstract_Interface_List): Complete condition when
	processing private type declarations to avoid reading unavailable
	attribute.
	(Is_Synchronized_Tagged_Type): Complete condition when processing
	private extension declaration nodes to avoid reading unavailable
	attribute.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* s-parame-ae653.ads, s-parame-vms-alpha.ads, s-parame-hpux.ads,
	i-cpoint.adb, i-cstrin.adb, i-cpoint.ads, i-cstrin.ads,
	s-parame-vms-ia64.ads, s-parame.ads, i-c.ads, s-parame-vxworks.ads,
	s-parame-vms-restrict.ads: Remove duplicated Interfaces.C.* packages
	for VMS, instead parametrize the common implementation with
	System.Parameters declarations.

2011-08-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat_rm.texi: Document limitation of Pragma No_Strict_Aliasing.

2011-08-01  Tristan Gingold  <gingold@adacore.com>

	* seh_init.c: Fix SEH handler installation on win64.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Access_Subprogram_Declaration): in Asis mode, prevent
	double analysis of an anonymous access to subprogram, because it can
	lead to improper sharing of profiles and a back-end crash.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* make.adb, sem_ch4.adb: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies.
	* sem_util.adb, exp_ch5.adb: Minor reformatting.

2011-08-01  Arnaud Charlet  <charlet@adacore.com>

	* gnat_rm.texi: Fix definition of Long_Integer.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb: check limit size of static aggregate unconditionally,
	to prevent storage exhaustion.
	* exp_ch7.adb (Clean_Simple_Protected_Objects): if the scope being
	finalized is a function body, insert the cleanup code before the final
	return statement, to prevent spurious warnings.
	* s-pooglo.ads: add overriding indicator.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Operator_Check): improve error message when both a
	with_clause and a use_clause are needed to make operator usage legal.
	* sem_util.ads, sem_util.adb (Unit_Is_Visible): new predicate to
	determine whether a compilation unit is visible within an other,
	either through a with_clause in the current unit, or a with_clause in
	its library unit or one one of its parents.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Iterator_Loop): handle properly an iterator
	over an arbitrary expression of an array or container type.
	* lib-xref.adb: clarify comment.

2011-08-01  Bob Duff  <duff@adacore.com>

	* einfo.ads: Minor reformatting.
	* debug.adb: Minor comment improvement.

2011-08-01  Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Try_Object_Operation): For class-wide subprograms do not
	consider hidden subprograms as valid candidates.

2011-08-01  Arnaud Charlet  <charlet@adacore.com>

	* make.adb (Compile): Strip -mxxx switches in CodePeer mode.

2011-08-01  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnat_ugn.texi: Fix typo.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* i-cstrin.adb, sem_util.adb, exp_ch11.adb, sem_ch8.adb,
	lib-xref.adb: Minor reformatting

2011-08-01  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Replace test of
	when to generate a call to Move_Final_List.
	(Has_Controlled_Parts): Remove this function.

2011-08-01  Geert Bosch  <bosch@adacore.com>

	* par-ch3.adb (P_Discrete_Choice_List): Improve error message for extra
	"," in choice list.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* exp_ch11.adb (Expand_N_Raise_Statement): Mark N_Raise_xxx_Error for
	explicit raise of a predefined exception as Comes_From_Source if the
	original N_Raise_Statement comes from source.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* sinfo.ads: Add comment.
	* sem_ch6.adb: Minor reformatting.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Refine check for bad component size
	clause to avoid rejecting confirming clause when atomic/aliased present.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Direct_Name, Analyze_Expanded_Name): use Is_LHS to
	better determine whether an entity reference is a write.
	* sem_util.adb (Is_LHS): refine predicate to handle assignment to a
	subcomponent.
	* lib-xref.adb (Output_References): Do no suppress a read reference at
	the same location as an immediately preceeding modify-reference, to
	handle properly in-out actuals.

2011-08-01  Tristan Gingold  <gingold@adacore.com>

	* env.c (__gnat_setenv) [VMS]: Refine previous change.

2011-08-01  Quentin Ochem  <ochem@adacore.com>

	* i-cstrin.adb (New_String): Changed implementation, now uses only the
	heap to compute the result.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* atree.ads: Minor reformatting.

2011-08-01  Emmanuel Briot  <briot@adacore.com>

	* g-expect.adb (Get_Command_Output): Fix memory leak.

2011-08-01  Geert Bosch  <bosch@adacore.com>

	* cstand.adb (P_Float_Type): New procedure to print the definition of
	predefined fpt types.
	(P_Mixed_Name): New procedure to print a name using mixed case
	(Print_Standard): Use P_Float_Type for printing floating point types
	* einfo.adb (Machine_Emax_Value): Add preliminary support for quad
	precision IEEE float.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb: Minor reformatting.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Analyze_Parameterized_Expression): If the expression is
	the completion of a generic function, insert the new body rather than
	rewriting the original.

2011-08-01  Yannick Moy  <moy@adacore.com>

	* sinfo.ads, errout.ads: Typos in comments.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* par-endh.adb: Minor reformatting.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Add aspects for library unit pragmas
	(Pre_Post_Aspects): New subtype.
	* par-ch12.adb (P_Generic): New syntax for aspects in packages
	* par-ch13.adb (P_Aspect_Specifications): Add Semicolon parameter
	* par-ch7.adb (P_Package): Remove Decl parameter
	(P_Package): Handle new syntax for aspects (before IS)
	* par-ch9.adb (P_Protected_Definition): Remove Decl parameter, handle
	new aspect syntax
	(P_Task_Definition): Remove Decl parameter, handle new aspect syntax
	* par.adb (P_Aspect_Specifications): Add Semicolon parameter
	(P_Package): Remove Decl parameter
	* sem_ch13.adb (Analyze_Aspect_Specifications): Handle library unit
	aspects
	* sem_ch7.adb (Analyze_Package_Declaration): Analyze new format aspect
	specs
	* sem_util.ads, sem_util.adb (Static_Boolean): New function
	* sinfo.ads: Document new syntax for aspects in packages etc.
	* sprint.adb: Handle new syntax of aspects before IS in package

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* atree.ads: Minor reformatting.
	* sem_prag.adb: Minor reformatting.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb (Insert_Actions): Fix error in handling Actions for
	case expr alternative.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb: Fix typo.

2011-08-01  Geert Bosch  <bosch@adacore.com>

	* sem_prag.adb (Check_No_Link_Name): New procedure.
	(Process_Import_Or_Interface): Use Check_No_Link_Name.
	* cstand.adb (Create_Standard): Use Esize (Standard_Long_Long_Float)
	instead of Standard_Long_Long_Float_Size global. Preparation for
	eventual removal of per type constants.
	* exp_util.ads (Get_Stream_Size): New function returning the stream
	size value of subtype E.
	* exp_util.adb (Get_Stream_Size): Implement new function.
	* exp_strm.adb (Build_Elementary_Input_Call): Use Get_Stream_Size
	function.
	* exp_attr.adb (Attribute_Stream_Size): Use Get_Stream_Size
	* einfo.adb:
	(Machine_Mantissa_Value): Handle 128-bit quad precision IEEE floats

2011-08-01  Geert Bosch  <bosch@adacore.com>

	* cstand.adb: Fix comments.
	* sem_prag.adb (Analyze_Pragma): Use List_Length instead of explicit
	count of arguments.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb, sem_cat.adb: Minor reformatting.

2011-08-01  Geert Bosch  <bosch@adacore.com>

	* atree.ads: Fix comment.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb (Aspect_Names): Moved from body to spec.
	* par-ch13.adb (P_Aspect_Specifications): Check misspelled aspect name.
	* par.adb: Add with for Namet.Sp.
	* par-tchk.adb: Minor reformatting.

2011-08-01  Vincent Celier  <celier@adacore.com>

	* mlib-tgt-specific-vms-alpha.adb, mlib-tgt-specific-vms-ia64.adb
	(Build_Dynamic_Library): Use new function Init_Proc_Name to get the name
	of the init procedure of a SAL.
	* mlib-tgt-vms_common.ads, mlib-tgt-vms_common.adb (Init_Proc_Name):
	New procedure.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* exp_ch4.adb, s-tasini.ads, sem_attr.adb, s-soflin.ads: Minor
	reformatting.

2011-08-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* adaint.c (__gnat_file_time_name_attr): Get rid of warning.

2011-08-01  Thomas Quinot  <quinot@adacore.com>

	* sem_util.adb, sem_util.ads (Has_Overriding_Initialize): Make function
	conformant with its spec (return True only for types that have
	an overriding Initialize primitive operation that prevents them from
	having preelaborable initialization).
	* sem_cat.adb (Validate_Object_Declaration): Fix test for preelaborable
	initialization for controlled types in Ada 2005 or later mode.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Add aspect Type_Invariant, Precondition,
	Postcondition.
	(Same_Aspect): New function.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Add aspect
	Type_Invariant, Precondition, Postcondition.
	* snames.ads-tmpl: Add Name_Type_Invariant.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Don't call Check_Aspect_At_Freeze_Point
	here.
	(Freeze_All_Ent): Fix error in handling inherited aspects.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Skip aspect that is
	already analyzed, but don't skip entire processing of a declaration,
	that's wrong in some cases of declarations being rewritten.
	(Analyze_Aspect_Specification): Set Is_Delayed_Aspect in aspects.
	Don't delay for integer, string literals
	Treat predicates in usual manner for delay, remove special case code,
	not needed.
	(Analyze_Freeze_Entity): Make call to Check_Aspect_At_Freeze_Point
	(Build_Predicate_Function): Update saved expression in aspect
	(Build_Invariant_Procedure): Update saved expression in aspect
	* exp_ch4.adb (Expand_N_Selected_Component): Only do the optimization
	of replacement of discriminant references if the reference is simple.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* aspects.ads, aspects.adb: Add Static_Predicate and Dynamic_Predicate.
	* sem_ch13.adb (Analyze_Aspect_Specification): Add processing for
	Static_Predicate and Dynamic_Predicate.
	(Build_Predicate_Function): Add processing for Static_Predicate
	and Dynamic_Predicate.
	* sinfo.ads, sinfo.adb (From_Dynamic_Predicate): New flag
	(From_Static_Predicate): New flag
	* snames.ads-tmpl: Add Name_Static_Predicate and Name_Dynamic_Predicate

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Documentation cleanup for Ada version modes in usage.
	* expander.adb: Minor reformatting.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* atree.ads: Minor comment fix.
	* a-stwifi.adb, a-stzfix.adb, a-strfix.adb, a-ztexio.ads, a-textio.ads,
	a-witeio.ads, sem_prag.adb: Minor reformatting.

2011-08-01  Doug Rupp  <rupp@adacore.com>

	* env.c (__gnat_setenv) [VMS]: Force 32bit on item list structure
	pointers. Use descrip.h header file for convenience. Add some
	comments.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Entity): Call Check_Aspect_At_Freeze_Point
	(Freeze_All): Call Check_Aspect_At_End_Of_Declarations
	* sem_ch13.ads, sem_ch13.adb (Check_Aspect_At_Freeze_Point):
	New procedure.
	(Check_Aspect_At_End_Of_Declarations): New procedure
	(Analye_Aspect_Specification): Minor changes for above procedures
	* sinfo.ads, sinfo.adb (Is_Delayed_Aspect): Now set in aspect
	specification node as well.

2011-08-01  Pascal Obry  <obry@adacore.com>

	* adaint.c (_gnat_stat): GetFilesAttributesEx() would fail on special
	Windows files. Use GetFilesAttributes() in this case to check for file
	existence instead of returning with an error code.

2011-08-01  Vincent Celier  <celier@adacore.com>

	* a-stzfix.adb, a-stwifi.adb (Replace_Slice): Fixed computation when
	High is above Source length.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* a-ztexio.ads, a-textio.ads, a-witeio.ads: Fix comment.

2011-08-01  Robert Dewar  <dewar@adacore.com>

	* aspects.ads (Boolean_Aspects): New subtype.
	* exp_ch13.adb (Expand_Freeze_Entity): Fix errors in handling aspects
	for derived types in cases where the parent type and derived type have
	aspects.
	* freeze.adb (Freeze_Entity): Fix problems in handling derived type
	with aspects when parent type also has aspects.
	(Freeze_Entity): Deal with delay of boolean aspects (must evaluate
	boolean expression at this point).
	* sem_ch13.adb (Analyze_Aspect_Specifications): Delay all aspects in
	accordance with final decision on the Ada 2012 feature.
	* sinfo.ads, sinfo.adb (Is_Boolean_Aspect): New flag.

2011-08-01  Matthew Heaney  <heaney@adacore.com>

	* a-chtgbo.adb (Delete_Node_Sans_Free): Replace iterator with selector.

2011-08-01  Pascal Obry  <obry@adacore.com>

	* a-stzunb-shared.adb, a-strunb-shared.adb, a-stwiun-shared.adb:
	Fix Replace_Slice when High is above current string size.
	(Replace_Slice): Fix DL computation when High is above current
	string length.

2011-08-01  Gary Dismukes  <dismukes@adacore.com>

	* gnat_rm.texi: Add documentation for pragma Static_Elaboration_Desired.

2011-08-01  Matthew Heaney  <heaney@adacore.com>

	* a-rbtgbo.adb (Delete_Node_Sans_Free): Fixed assignment to left child
	of node.

2011-08-01  Pascal Obry  <obry@adacore.com>

	* a-stzunb-shared.adb, a-strunb-shared.adb, a-stwiun-shared.adb: Minor
	reformatting.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Access): Handle properly named
	access to protected subprograms in generic bodies.
	* sem_ch6.adb (Analyze_Subprogram_Declaration): If the context is a
	protected type, indicate that the convention of the subprogram is
	Convention_Protected, because it may be used in subsequent declarations
	within the protected declaration.

2011-08-01  Vincent Celier  <celier@adacore.com>

	* mlib-prj.adb (Build_Library): Use "ada_" as the prefix for the "init"
	and "final" procedures when the name of the library is "ada", to avoid
	duplicate symbols "adainit" and "adafinal" in executables.

2011-08-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Result): Handle properly a
	quantified expression that appears within a postcondition and uses the
	Ada2012 'Result attribute.

2011-07-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* init.c (__gnat_error_handler): Cast reason to int.
	(__gnat_install_handler): Explain sa_sigaction use.

2011-07-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: If the
	subprogram has copy-in copy-out parameters, try to promote the mode of
	the return type if it is passed in registers.

2011-07-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (build_binary_op) <ARRAY_REF>: Do not mark the
	left operand as addressable.

2011-07-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (build_function_stub): Remove.
	(build_return_expr): Likewise.
	(convert_vms_descriptor): Declare.
	* gcc-interface/utils.c (convert_vms_descriptor): Make global.
	(build_function_stub): Move to...
	* gcc-interface/utils2.c (build_return_expr): Move to...
	* gcc-interface/trans.c (build_function_stub): ...here.
	(build_return_expr): ...here.
	(Subprogram_Body_to_gnu): Add local variable for language_function.
	Disconnect the parameter attributes cache, if any, once done with it.
	Call end_subprog_body only after setting the end_locus.
	Build the stub associated with the function, if any, at the very end.
	(gnat_to_gnu) <N_Return_Statement>: Remove couple of useless local
	variables and streamline control flow.

2011-07-23  Arnaud Charlet  <charlet@adacore.com>

	PR ada/49819
	* gcc-interface/Makefile.in (powerpc-linux): Remove reference to
	g-trasym-dwarf.adb.

2011-07-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR bootstrap/49794
	* init.c [sun && __SVR4 && !__vxworks] (__gnat_install_handler):
	Assign to act.sa_sigaction.
	* tracebak.c [USE_GENERIC_UNWINDER] (__gnat_backtrace): Cast
	current->return_address to char * before arithmetic.

2011-07-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* init.c [sgi] (__gnat_error_handler): Update sigaction(2) citation.
	Correct argument types.
	Extract code from reason.
	(__gnat_install_handler): Assign to act.sa_sigaction.

2011-07-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (GNAT1_ADA_OBJS): Move ada/b_gnat1.o to...
	(GNAT1_OBJS): ...here.

2011-07-15  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/48711
	* g-socthi-mingw.adb (Fill): Fix formatting.

	* gcc-interface/gigi.h: Move around comment.

2011-07-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR ada/46350
	* s-taprop-hpux-dce.adb (Abort_Task): Remove unnecessary cast.

2011-07-14  Florian Weimer  <fw@deneb.enyo.de>

	PR ada/48711
	* g-socthi-mingw.adb (Fill): Guard against invalid MSG_WAITALL.

2011-07-13  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (build_vms_descriptor32): Skip the 32-bit
	range comparison if Pmode is SImode.

2011-07-12  Laurent GUERBY  <laurent@guerby.net>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* adadecode.c: Wrap up in extern "C" block.
	* adadecode.h: Likewise.
	* adaint.c: Likewise.  Remove 'const' keyword.
	* adaint.h: Likewise.
	* argv.c: Likewise.
	* atree.h: Likewise.
	* cio.c: Likewise.
	* cstreams.c: Likewise.
	* env.c: Likewise.
	* exit.c: Likewise.
	* fe.h: Likewise.
	* final.c: Likewise.
	* init.c: Likewise.
	* initialize.c: Likewise.
	* link.c: Likewise.
	* namet.h: Likewise.
	* nlists.h: Likewise.
	* raise.c: Likewise.
	* raise.h: Likewise.
	* repinfo.h: Likewise.
	* seh_init.c: Likewise.
	* targext.c: Likewise.
	* tracebak.c: Likewise.
	* uintp.h: Likewise.
	* urealp.h: Likewise.
	* xeinfo.adb: Wrap up generated C code in extern "C" block.
	* xsinfo.adb: Likewise.
	* xsnamest.adb: Likewise.
	* gcc-interface/gadaint.h: Wrap up in extern "C" block.
	* gcc-interface/gigi.h: Wrap up some prototypes in extern "C" block.
	* gcc-interface/misc.c: Likewise.
	* gcc-interface/Make-lang.in (GCC_LINK): Use LINKER.
	(GNAT1_C_OBJS): Remove ada/b_gnat1.o.  List ada/seh_init.o and
	ada/targext.o here...
	(GNAT_ADA_OBJS): ...and not here.
	(GNAT1_ADA_OBJS): Add ada/b_gnat1.o.
	(GNATBIND_OBJS): Reorder.

2011-07-07  Richard Henderson  <rth@redhat.com>

	* gcc-interface/misc.c (gnat_init_gcc_eh): Don't call
	dwarf2out_frame_init.

2011-07-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_init): Tweak previous change.

2011-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	PR target/39150
	* gcc-interface/Makefile.in: Handle x86_64-solaris2.

2011-07-06  Richard Guenther  <rguenther@suse.de>

	* gcc-interface/misc.c (gnat_init): Merge calls to
	build_common_tree_nodes and build_common_tree_nodes_2.
	Re-initialize boolean_false_node.

2011-07-02  Eric Botcazou  <ebotcazou@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>
	    Nicolas Setton  <setton@adacore.com>

	* gcc-interface/utils.c (record_builtin_type): Set TYPE_ARTIFICIAL on
	the type according to the ARTIFICIAL_P parameter.
	(create_type_decl): Likewise.
	(create_type_stub_decl): Set TYPE_ARTIFICIAL on the type to 1.

2011-07-01  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (gnat1): Prepend '+' to the command.
	(gnatbind): Likewise.

2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc-interface/Makefile.in (TOOLS_LIBS): Add $(LIBINTL).

2011-06-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_component_type): Use GNAT_TYPE
	local variable throughout.  Remove useless call to Base_Type.
	(gnat_to_gnu_field): Use GNAT_FIELD_TYPE local variable throughout.
	Take it also into account for the volatileness of the field.  Set the
	TREE_SIDE_EFFECTS flag as well in this case.  Reorder some warnings.

2011-06-18  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Identifier_to_gnu): Don't set TREE_THIS_NOTRAP
	on a dereference built for a by-ref object if it has an address clause.

2011-06-18  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Address_Taken): Document use for the second argument of
	Asm_Input and Asm_Output attributes.
	* sem_attr.adb (Analyze_Attribute) <Attribute_Asm_Input>: If the second
	argument is an entity name, then set Address_Taken on it.
	<Attribute_Asm_Output>: Likewise.
	* gcc-interface/trans.c (lvalue_required_for_attribute_p): Handle the
	Attr_Asm_Input and Attr_Asm_Output attributes explicitly.
	(gnat_to_gnu) <N_Code_Statement>: If an operand is going to end up in
	memory and is a CONST_DECL, retrieve its corresponding VAR_DECL.

2011-06-16  Joern Rennecke  <joern.rennecke@embecosm.com>

	PR middle-end/46500
	* gcc-interface/decl.c (gnat_to_gnu_param): Use pack_cumulative_args.

2011-06-14  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/Make-lang.in (gnatbind$(exeext)): Use ggc-none.o.
	(ada/utils.o): Update dependencies.
	* gcc-interface/Makefile.in (EXTRA_GNATTOOLS_OBJS): Add
	../../../libcpp/libcpp.a.
	* gcc-interface/utils.c: Include common/common-target.h.
	(process_attributes): Use targetm_common.have_named_sections.

2011-06-07  Richard Guenther  <rguenther@suse.de>

	* gcc-interface/misc.c (gnat_init): Do not set size_type_node or call
	set_sizetype.

2011-06-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (gnat_stabilize_reference): Propagate the
	TREE_THIS_NOTRAP flag.

2011-06-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils2.c (gnat_stabilize_reference) <COMPOUND_EXPR>:
	Fix thinko.

2011-06-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Identifier_to_gnu): Also handle deferred
	constants whose full view has discriminants specially.

2011-06-06  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c: Include diagnostic.h.
	(gnat_write_global_declarations): Output debug information for all
	global type declarations before finalizing the compilation unit.
	* gcc-interface/Make-lang.in (ada/utils.o): Add dependency.

2011-05-25  Jakub Jelinek  <jakub@redhat.com>

	* gcc-interface/utils.c (def_fn_type): Remove extra va_end.

2011-05-25  Kai Tietz  <ktietz@redhat.com>

	* adaint.c (__gnat_to_canonical_file_list_next): Use array
	initialization instead of const/none-const pointer assignment.

2011-05-24  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/Make-lang.in (GNAT1_OBJS): Don't include
	$(EXTRA_GNAT1_OBJS).
	(GNATBIND_OBJS): Don't include $(EXTRA_GNATBIND_OBJS).
	(EXTRA_GNAT1_OBJS, EXTRA_GNATBIND_OBJS): Remove.
	(gnat1$(exeext), gnatbind$(exeext)): Use libcommon-target.a.
	* gcc-interface/Makefile.in (EXTRA_GNATTOOLS_OBJS): Use
	libcommon-target.a instead of prefix.o.

2011-05-21  Joseph Myers  <joseph@codesourcery.com>

	PR ada/49097
	* gcc-interface/Make-lang.in (gnatbind$(exeext)): Depend on $(LIBDEPS).

2011-05-20  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/Make-lang.in (EXTRA_GNATBIND_OBJS): Remove version.o.
	* gcc-interface/Makefile.in (EXTRA_GNATTOOLS_OBJS): Use libcommon.a
	instead of version.o.

2011-05-18  Kai Tietz  <ktietz@redhat.com>

	* gcc-interface/trans.c (Exception_Handler_to_gnu_sjlj): Use
	boolean_false_node instead of integer_zero_node.
	(convert_with_check): Likewise.
	* gcc-interface/decl.c (choices_to_gnu): Likewise.

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

	* gcc-interface/trans.c (call_to_gnu): In the by-reference case, if the
	type of the parameter is an unconstrained array, convert the actual to
	the type of the formal in the In Out and Out cases as well.

2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/utils.c (def_fn_type): Don't call build_function_type;
	call build_function_type_array or build_varargs_function_type_array
	instead.
	(create_subprog_type): Don't call build_function_type; call
	build_function_type_vec instead.

2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/ada-tree.h (TYPE_OBJECT_RECORD_TYPE): Use TYPE_MINVAL.
	(TYPE_GCC_MIN_VALUE): Use TYPE_MINVAL.
	(TYPE_GCC_MAX_VALUE): Use TYPE_MAXVAL.

2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (intrin_arglists_compatible_p): Remove spaces.

	* gcc-interface/gigi.h (global_bindings_p): Adjust prototype.
	* gcc-interface/utils.c (global_bindings_p): Return bool and simplify.

2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/trans.c (Case_Statement_to_gnu): Call build_case_label.

2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/decl.c (intrin_arglists_compatible_p): Use iterators
	instead of accessing TYPE_ARG_TYPES directly.
	* gcc-interface/utils.c (handle_nonnull_attribute): Likewise.

2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/48844
	* gcc-interface/gigi.h (get_variant_part): Declare.
	* gcc-interface/decl.c (get_variant_part): Make global.
	* gcc-interface/utils2.c (find_common_type): Do not return T1 if the
	types have the same constant size, are record types and T1 has a
	variant part while T2 doesn't.

2011-05-05  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (begin_subprog_body): Do not call
	get_pending_sizes.
	(end_subprog_body): Likewise.

2011-05-04  Richard Guenther  <rguenther@suse.de>

	* gcc-interface/trans.c (gnat_to_gnu): Remove zero notrunc argument to
	int_const_binop.
	(pos_to_constructor): Likewise.

2011-05-03  Nathan Froyd  <froydnj@codesourcery.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gigi): Call build_function_type_list instead
	of build_function_type.  Adjust calls to...
	(build_raise_check): ...this.  Do not take a void_tree parameter.
	Call build_function_type_list instead of build_function_type.
	Fix head comment and swap couple of conditional blocks.

2011-04-30  Eric Botcazou  <ebotcazou@adacore.com>

	* gnatvsn.ads (Library_Version): Bump to 4.7.
	(Current_Year): Bump to 2011.

2011-04-29  Michael Matz  <matz@suse.de>

	* gcc-interface/misc.c (gnat_handle_option): Set
	warn_maybe_uninitialized.

2011-04-23  Gerald Pfeifer  <gerald@pfeifer.com>

	* gnat_ugn.texi (Complexity Metrics Control): Update link to
	the Watson/McCabe paper.

2011-04-23  Jim Meyering  <meyering@redhat.com>

	* gnat_ugn.texi (Examples of gnatxref Usage): Fix typo: s/it it/it is/

2011-04-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (make_packable_type): Copy DECL_PARALLEL_TYPE
	onto the new type.

2011-04-22  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (create_subprog_decl): Add ARTIFICIAL_FLAG
	parameter.
	* gcc-interface/utils.c (create_subprog_decl): Likewise.  Set
	DECL_ARTIFICIAL and DECL_NO_INLINE_WARNING_P on the DECL accordingly.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Add
	ARTIFICIAL_FLAG local variable and pass it to create_subprog_decl.
	<all>: Do not set flags on the reused DECL node coming from an alias.
	Set DECL_IGNORED_P on the DECL node built for subprograms if they
	don't need debug info here...
	* gcc-interface/trans.c (Subprogram_Body_to_gnu): ...and not here.
	(gigi): Adjust calls to create_subprog_decl.
	(build_raise_check): Likewise.
	(establish_gnat_vms_condition_handler): Likewise.
	(Compilation_Unit_to_gnu): Likewise.
	(gnat_to_gnu): Likewise.

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

	* gcc-interface/Makefile.in (NO_SIBLING_ADAFLAGS): Always define.
	(NO_REORDER_ADAFLAGS): New variable.
	(EXTRA_GNATTOOLS): Always define.
	(../stamp-gnatlib1-$(RTSDIR): Copy tsystem.h.
	Clean up and adjust list of files compiled with special options.
	* gcc-interface/Make-lang.in: Likewise.
	(ada/decl.o): Cosmetical change.
	(ada/misc.o): Remove dependency on $(PLUGIN_H).

2011-04-20  Jim Meyering  <meyering@redhat.com>

	* initialize.c (__gnat_initialize): Remove useless if-before-free.

2011-04-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/Make-lang.in (gnatbind): Replace $(ALL_CFLAGS) with
	$(CFLAGS) on the link line.

2011-04-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Function>: Declare the
	padded type built for the return type if it is unconstrained.

2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/utils.c (gnat_poplevel): Use block_chainon.

2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/ada-tree.h (union lang_tree_node): Check for TS_COMMON
	before calling TREE_CHAIN.
	* gcc-interface/misc.c (gnat_init_ts): New function.
	(LANG_HOOKS_INIT_TS): Define.

2011-04-12  Martin Jambor  <mjambor@suse.cz>

	* gcc-interface/utils.c (end_subprog_body): Call cgraph_get_create_node
	instead of cgraph_node.

2011-04-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set minimum
	alignment on fields of the RETURN type built for the Copy-In Copy-Out
	mechanism.

2011-04-08  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Identifier_to_gnu): Do not return initializers
	of aggregate types that contain a placeholder.

2011-04-08  Nathan Froyd  <froydnj@codesourcery.com>

	* gcc-interface/utils.c (handle_sentinel_attribute): Don't use
	TYPE_ARG_TYPES.
	(handle_type_generic_attribute): Likewise.

2011-04-04  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/47163
	* s-oscons-tmplt.c (MSG_WAITALL): Fix thinko in previous change.

2011-04-04  Kai Tietz  <ktietz@redhat.com>

	PR ada/47163
	* s-oscons-tmplt.c (MSG_WAITALL): Define it for native windows targets
	to flag value.

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

	* gcc-interface/utils2.c (build_allocator): In the unconstrained array
	type case, do not strip a padding type around the array type.

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

	* gcc-interface/utils.c (update_pointer_to): Finalize named pointer
	types.

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

	* gcc-interface/lang.opt (feliminate-unused-debug-types): Delete.
	* gcc-interface/misc.c (gnat_handle_option): Remove special handling
	code for -feliminate-unused-debug-types.
	(gnat_post_options): Likewise.

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

	* gcc-interface/utils.c (gnat_pushdecl): If this is a non-artificial
	declaration of a pointer type, then set DECL_ORIGINAL_TYPE to a
	distinct copy.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity): Do not force the
	DECL_ARTIFICIAL flag on enumeration types.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Do not make
	fat pointer types artificial unconditionally.
	<E_Array_Subtype>: Attach the base array type as a parallel type if it
	isn't artificial.

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

	* gcc-interface/gigi.h (get_dummy_type): Declare.
	(build_dummy_unc_pointer_types): Likewise.
	(finish_fat_pointer_type): Likewise.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: If a dummy
	fat pointer type has been built, complete it in place.
	<E_Access_Type>: Call build_dummy_unc_pointer_types to build dummy fat
	and thin pointers.  Remove useless variable.
	(finish_fat_pointer_type): Make global and move to...
	* gcc-interface/utils.c (finish_fat_pointer_type): ...here.
	(get_dummy_type): New function.
	(build_dummy_unc_pointer_types): Likewise.
	(gnat_pushdecl): Propage the name to the anonymous variants only.
	(update_pointer_to): Only adjust the pointer types in the unconstrained
	array case.

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

	* gcc-interface/ada-tree.h (DECL_TAFT_TYPE_P): New flag.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Incomplete_Type>: Set it
	if this is a Taft amendment type and the full declaration is available.
	* gcc-interface/trans.c (process_type): Likewise.
	If there is an old type, mark the new one as used if DECL_TAFT_TYPE_P.
	(process_freeze_entity): Likewise.
	* gcc-interface/utils.c (dummy_global): New static variable.
	(gnat_write_global_declarations): If there are types declared as used
	at the global level, insert them in the global hash table.

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

	* gcc-interface/gigi.h (record_builtin_type): Add ARTIFICIAL_P param.
	* gcc-interface/utils.c (gnat_pushdecl): If this is a non-artificial
	declaration of an array type, then set DECL_ORIGINAL_TYPE to a distinct
	copy.
	(record_builtin_type): Add ARTIFICIAL_P parameter.  Set DECL_ARTIFICIAL
	flag of the type accordingly.
	* gcc-interface/trans.c (gigi): Adjust calls to record_builtin_type.

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

	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Defer
	finalizing types when updating the pointers to the designated type.
	<all>: Finalize the deferred types even if we didn't defer processing
	of incomplete types in this invocation.

2011-04-01  Olivier Hainque  <hainque@adacore.com>
	    Nicolas Setton  <setton@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_descriptive_type): New function.
	(LANG_HOOKS_DESCRIPTIVE_TYPE): Redefine to gnat_descriptive_type.

2011-03-28  Kai Tietz  <ktietz@redhat.com>

	* gcc-interface/Makefile.in (SO_LIB): Handle multilib build for native
	Windows targets.
	(EH_MECHANISM): Use GCC exception mechanism for native Windows targets.
	* system-mingw.ads (System): Change ZCX_By_Default default to True.

	* raise-gcc.c (PERSONALITY_FUNCTION): Add prototype.

2011-03-28  Tristan Gingold  <gingold@adacore.com>

	PR ada/44431
	* gcc-interface/Make-lang.in (ada/b_gnat1.adb): Replace ada/b_gnat1.c.
	Use ada output of gnatbind.
	(ada/b_gnatb.adb): Ditto.
	(ada/b_gnat1.o, ada/b_gnatb.o): New rules.
	(ada.mostlyclean, ada.stage1)
	(ada.stage2, ada.stage3, ada.stage4, ada.stageprofile)
	(ada.stagefeedback): Adjust.
	* gcc-interface/Makefile.in (b_gnatl.adb): Replace b_gnatl.c.
	Use ada output of gnatbind.
	(b_gnatm.adb): Ditto.
	(b_gnatl.o, b_gnatm.o): New rules.

2011-03-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Create TYPE_DECL
	for the padded type built to support a specified size or alignment.

2011-03-26  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (finalize_from_with_types): Adjust comment.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Defer
	unconditionally to the end of the unit when the designated type is
	limited_with'ed.
	<all>: Rename local variable.  Attempt to un-defer types only and do it
	for limited_with'ed types as well.
	(finalize_from_with_types): Adjust comment.  Rename variable and tidy.
	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Use GNAT_UNIT
	consistently and remove redundant call to finalize_from_with_types.

2011-03-26  Eric Botcazou  <ebotcazou@adacore.com>

	* inline.adb (Back_End_Cannot_Inline): Lift restriction on calls to
	subprograms without a previous spec declared in the same unit.
	* gcc-interface/trans.c (Compilation_Unit_to_gnu): Process inlined
	subprograms at the end of the unit instead of at the beginning.
	* gcc-interface/utils.c (create_subprog_decl): Check that the entity
	isn't public for the special handling of non-inline functions nested
	inside inline external functions.

2011-03-25  Jeff Law  <law@redhat.com>

	* gcc-interface/utils.c (def_fn_type): Add missing va_end.

2011-03-24  Eric Botcazou  <ebotcazou@adacore.com>

	* einfo.ads (Size_Depends_On_Discriminant): Adjust description.
	* layout.adb (Compute_Size_Depends_On_Discriminant): New procedure
	to compute Set_Size_Depends_On_Discriminant.
	(Layout_Type): Call it on array types in back-end layout mode.
	* sem_util.adb (Requires_Transient_Scope): Return true for array
	types only if the size depends on the value of discriminants.
	* gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Use the RHS
	type if the RHS is a call to a function that returns an unconstrained
	type with default discriminant.

2011-03-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (gnat_to_gnu): Remove obsolete case of
	non-conversion to the nominal result type at the end.

2011-03-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (create_temporary): New function taken from...
	(create_init_temporary): ...here.  Call it.
	(call_to_gnu): Create the temporary for the return value early, if any.
	Create it for a function with copy-in/copy-out parameters if there is
	no target; in other cases of copy-in/copy-out, use another temporary.
	Push the new binding level lazily.  Add and rename local variables.

2011-03-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (validate_size): Improve comments and tweak
	error message.
	(set_rm_size): Likewise.

2011-03-23  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Create TYPE_DECL
	for the padded type built in order to support a specified alignment.
	Fix incorrect formatting.

2011-03-21  Eric Botcazou  <ebotcazou@adacore.com>

	PR bootstrap/48216
	* gcc-interface/decl.c (elaborate_expression_1): Localize GNU_DECL.

2011-03-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (components_to_record): Add REORDER parameter,
	rename DEBUG_INFO_P into DEBUG_INFO and move P_GNU_REP_LIST parameter
	to the end of the list.  Adjust recursive call.  Rename local variable.
	If REORDER is true, reorder components of the record type.
	(gnat_to_gnu_entity): Pass OK_To_Reorder_Components flag as argument to
	components_to_record and adjust the parameter list.

2011-03-21  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (elaborate_expression_1): When optimization is
	disabled, use the variable for bounds of loop iteration scheme.

2011-03-21  Kai Tietz  <ktietz@redhat.com>

	PR target/12171
	* gcc-interface/utils.c (gnat_internal_attribute_table): Add column.

2011-03-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c (elaborate_expression_1): Try harder to find
	out whether the expression is read-only.  Short-circuit placeholder
	case and rename a couple of local variables.

2011-03-17  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (smaller_form_type_p): Declare.
	* gcc-interface/trans.c (smaller_form_type_p): Make global and move...
	* gcc-interface/utils.c (smaller_form_type_p): ...to here.
	(convert): Deal with conversions from a smaller form type specially.

2011-02-14  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/misc.c (gnat_init_options): Do not concatenate -I and
	its argument, except for the special -I- switch.

2011-02-12  Gerald Pfeifer  <gerald@pfeifer.com>

	* gnat_ugn.texi (Compiling Different Versions of Ada): Update link to
	"Ada Issues".

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

	* gcc-interface/Makefile.in (x86-64 darwin): Handle multilibs.

2011-02-03  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/gigi.h (fill_vms_descriptor): Take GNU_TYPE instead of
	GNAT_FORMAL.
	* gcc-interface/utils2.c (fill_vms_descriptor): Move from here to...
	* gcc-interface/utils.c (fill_vms_descriptor): ...here.  Take GNU_TYPE
	instead of GNAT_FORMAL.  Protect the expression against multiple uses.
	Do not generate the check directly, instead instantiate the template
	check present in the descriptor.
	(make_descriptor_field): Move around.
	(build_vms_descriptor32): Build a template check in the POINTER field.
	(build_vms_descriptor): Remove useless suffixes.
	* gcc-interface/trans.c (call_to_gnu): Adjust fill_vms_descriptor call.

2011-01-26  Eric Botcazou  <ebotcazou@adacore.com>

	PR bootstrap/47467
	* targext.c: Include target files if IN_RTS is defined.

2011-01-26  Richard Guenther  <rguenther@suse.de>

	PR bootstrap/47467
	* targext.c: Include config.h.
	* gcc-interface/Make-lang.in (ada/targext.o): Add $(CONFIG_H)
	dependency.

2011-01-04  Pascal Obry  <obry@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/decl.c: Disable Stdcall convention handling for 64-bit.

2011-01-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Case_Statement_to_gnu): Put the SLOC of the
	end-of-case on the end label and its associated gotos, if any.

2011-01-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (Subprogram_Body_to_gnu): Evaluate the
	expressions of the parameter cache within the statement group of
	the CICO mechanism.

2011-01-04  Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/trans.c (BLOCK_SOURCE_END_LOCATION): Provide default.
	(set_end_locus_from_node): New function.
	(Subprogram_Body_to_gnu): Use it to mark both the inner BIND_EXPR we
	make and the function end_locus.
	(Compilation_Unit_to_gnu): Call it instead of a straight Sloc_to_locus
	for the elaboration subprogram.
	(set_gnu_expr_location_from_node) <default case>: Use it to attempt to
	set the end_locus of the expression as well.

2011-01-04  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/47131
	* gcc-interface/trans.c (Identifier_to_gnu): In SJLJ mode, do not make
	variables that are referenced in exception handlers volatile.


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