2005-12-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* s-osinte-linux-hppa.ads: Correct alignment of atomic_lock_t.

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

	* Makefile.in: Remove dummy setting of GCC_FOR_TARGET, no longer
	needed.

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

	* Make-lang.in: Update dependencies

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

	* Make-lang.in: Add rule for ada/exp_sel.o

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

	* Makefile.in (mingw section): Remove EH_MECHANISM setting.

2005-12-09  Arnaud Charlet  <charlet@adacore.com>

	* gnatvsn.ads (Library_Version): Bump to version 4.2
	(ASIS_Version_Number): Bumped.

2005-12-09  Doug Rupp  <rupp@adacore.com>

	* mlib-tgt-vms-ia64.adb, mlib-tgt-vms-alpha.adb (Is_Interface): Change
	Ada bind file prefix on VMS from b$ to b__.
	(Build_Dynamic_Library): Change Init file suffix on VMS from $init to
	__init.

	* prj-nmsc.adb: Change some Hostparm.OpenVMS checks to
	Targparm.OpenVMS_On_Target.
	(Object_Suffix): Initialize with target object suffix.
	(Get_Unit): Change Ada bind file prefix on VMS from b$ to b__.

	* butil.adb: Change some Hostparm.OpenVMS checks to
	Targparm.OpenVMS_On_Target.

	* clean.adb: Change some Hostparm.OpenVMS checks to
	Targparm.OpenVMS_On_Target.
	(Object_Suffix): Initialize with call to Get_Target_Object_Suffix.
	({declaraction},Delete_Binder_Generated_Files,{initialization}): Change
	Ada bind file prefix on VMS from b$ to b__.

	* gnatlink.adb (Process_Args): Call Add_Src_Search_Dir for -I in
	--GCC so that Get_Target_Parameters can find system.ads.
	(Gnatlink): Call Get_Target_Parameters in mainline.
	Initialize standard packages for Targparm.
	Change some Hostparm.OpenVMS checks to Targparm.OpenVMS_On_Target.
	(Process_Args): Also Check for object files with target object
	extension.
	(Make_Binder_File_Names): Create with target object extension.
	(Make_Binder_File_Names): Change Ada bind file prefix on VMS from b$
	to b__.

	* mlib-prj.adb: Change some Hostparm.OpenVMS checks to
	Targparm.OpenVMS_On_Target.
	({declaration},Build_Library,Check_Library): Change Ada bind file
	prefix on VMS from b$ to b__.

	* osint-b.adb: Change some Hostparm.OpenVMS checks to
	Targparm.OpenVMS_On_Target.
	(Create_Binder_Output): Change Ada bind file prefix on VMS from b$ to
	b__.

	* targext.c: New file.

	* Makefile.in: add support for vxworks653 builds
	(../../vxaddr2line): gnatlink with targext.o.
	(TOOLS_LIBS): Move targext.o to precede libgnat.
	(init.o, initialize.o): Minor clean up in dependencies.
	(GNATLINK_OBJS): Add targparm.o, snames.o
	Add rules fo building targext.o and linking it explicitly with all
	tools.
	Also add targext.o to gnatlib.

	* Make-lang.in: Add rules for building targext.o and linking it in
	with gnat1 and gnatbind.
	Add entry for exp_sel.o.

	* osint.adb Change some Hostparm.OpenVMS checks to
	Targparm.OpenVMS_On_Target.
	(Object_File_Name): Use target object suffix.

	* osint.ads (Object_Suffix): Remove, no longer used.
	(Target_Object_Suffix): Initialize with target object suffix.

	* rident.ads: Add special exception to license.

	* targparm.adb (Get_Target_Parameters): Set the value of
	Multi_Unit_Index_Character after OpenVMS_On_Target gets its definitive
	value.
	(Get_Target_Parameters): Set OpenVMS_On_Target if openvms.

	* targparm.ads: Add special exception to license.

	* g-os_lib.ads, g-os_lib.adb (Get_Target_Debuggable_Suffix): New
	function.
	(Copy_File): Make sure from file is closed if error on to file
	(Get_Target_Executable_Suffix, Get_Target_Object_Suffix): New functions.

	* make.adb (Object_Suffix): Intialize with Get_Target_Object_Suffix.
	(Executable_Suffix): Intialize with Get_Target_Executable_Suffix.

	* osint-c.adb (Set_Output_Object_File_Name): Initialize extension with
	target object suffix.

2005-12-09  Jose Ruiz  <ruiz@adacore.com>
	    Quentin Ochem  <ochem@adacore.com>
	    Florian Villoing  <villoing@adacore.com>

	* a-taster.ads, a-taster.adb: New files.

	* a-elchha.adb (Last_Chance_Handler): Change the task termination soft
	link to the version that does nothing. This way the task termination
	routine is not executed twice for the environment task when finishing
	because of an unhandled exception.

	* a-exextr.adb (Notify_Unhandled_Exception): Call the task termination
	handler because of an unhandled exception.

	* a-taside.adb (Abort_Tasks): Call the Abort_Tasks procedure from
	System.Tasking.Utilities instead of that in System.Tasking.Stages.

	* s-finimp.adb (initialization code): Modify the soft link for the
	finalization of the global list instead of Adafinal.

	* s-soflin.ads, s-soflin.adb (Task_Termination_NT): Add this
	non-tasking version of the soft link for task termination. We do
	nothing since if we are using the non-tasking version it
	means that the task termination functionality is not used.
	(Null_Finalize_Global_List): Add this null version for the procedure
	in charge of finalizing the global list for controlled objects.
	(Null_Adafinal): Remove this procedure. Adafinal_NT has been created
	instead for handling run-time termination in a more flexible way.
	(Adafinal_NT): This new procedure will take care of finalizing the
	global list for controlled objects if needed, but no tasking
	finalization.

	* s-tarest.adb (Task_Lock): Do not try to lock again the
	Global_Task_Lock if we already own it. Otherwise, we get blocked in
	some run-time operations.
	(Task_Unlock): Do not try to actually unlock the Global_Task_Lock
	until all nested locks have been released.
	(Task_Wrapper): Call the fall-back task termination handler. It
	applies to all tasks but the environment task.
	(Finalize_Global_Tasks): Add the call for the task termination
	procedure for the environment task.
	(Task_Wrapper): suppress warnings around declaration of
	Secondary_Stack_Address.

	* s-tasini.adb (Final_Task_Unlock): Global_Task_Lock_Nesting has been
	moved to the Common_ATCB record.
	(Task_Lock): Global_Task_Lock_Nesting has been moved to the
	Common_ATCB record.
	(Task_Unlock): Global_Task_Lock_Nesting has been moved to the
	Common_ATCB record.

	* s-taskin.adb (Initialize_ATCB): Initialize Global_Task_Lock_Nesting,
	Fall_Back_Handler, and Specific_Handler.

	* s-taskin.ads (Cause_Of_Termination): Redefine this type here, already
	defined in Ada.Task_Termination, to avoid circular dependencies.
	(Termination_Handler): Redefine this type here, alredy defined in
	Ada.Task_Termination, for avoiding circular dependencies.
	(Common_ATCB): Add the Fall_Back_Handler and Specific_Handler required
	for storing task termination handlers. In addition,
	Global_Task_Lock_Nesting has been moved from Ada_Task_Control_Block to
	Common_ATCB because it is used by both the regular and the restricted
	run times.
	(Ada_Task_Control_Block): Move Global_Task_Lock_Nesting from here to
	Common_ATCB because it is used by both the regular and the restricted
	run times.
	(Common_ATCB): Added a dynamic task analyzer field.

	* s-tassta.adb (Abort_Tasks): Move the code in charge of checking
	potentially blocking operations to System.Tasking.Utilities.Abort_Tasks.
	(Task_Wrapper): Call the task termination handler. It applies to all
	tasks but the environment task.
	(Finalize_Global_Tasks): Call the task termination procedure for the
	environment task. The call to Finalize_Global_List is now performed
	using the soft links mechanism.
	(Task_Wrapper): added dynamic stack analysis.

	* s-tasuti.adb (Abort_Tasks): The code in charge of checking
	potentially blocking operations has been moved from
	System.Tasking.Stages.Abort_Tasks to this procedure. There can be
	direct calls to System.Tasking.Utilities.Abort_Tasks that do not pass
	through System.Tasking.Stages.Abort_Tasks, and we do not want to miss
	this run-time check.

	* s-solita.adb (Task_Termination_Handler_T): Add this task-safe version
	of task termination procedure.
	(Init_Tasking_Soft_Links): Install the task-safe version of the soft
	link for the task termination procedure.

	* bindusg.adb: (Bindusg): Added documentation for -u option.

	* bindgen.adb (Get_Main_Ada) Added handling of dynamic stack analysis.
	(Get_Main_C): Add handling of dynamic stack analysis.
	(Gen_Output_File_C): Add external functions for dynamic stack analysis.

	* Makefile.rtl: Add entry for a-taster (Ada.Task_Termination).
	(GNATRTL_NONTASKING_OBJS) Added entries for dynamic stack analysis
	(GNATRTL_NONTASKING_OBJS): Add AltiVec files.

	* opt.ads: Added flags used by dynamic stack measurement.
	(Max_Line_Length): Remove (not used anymore)

	* s-io.ads, s-io.adb (Standard_Error): new subprogram
	(Standart_Output): new subprogram
	(Set_Output): new subprogram
	(Put): now uses the value of Current_Out to know if the output has to be
	send to stderr or stdout.

	* s-stausa.ads: Complete implementation.

	* switch-b.adb: Added handling of -u switch for dynamic stack analysis.

	* impunit.adb (Non_Imp_File_Names_05): Add Ada.Task_Termination to the
	list of Ada 05 files.
	(GNAT Library Units): Add AltiVec files.

	* g-allein.ads, g-alleve.adb, g-alleve.ads, g-altcon.adb,
	g-altcon.ads, g-altive.ads, g-alveop.adb, g-alveop.ads
	g-alvety.ads, g-alvevi.ads: New files providing altivec API.

2005-12-09  Nicolas Setton  <setton@adacore.com>

	* adaint.c (__gnat_locate_regular_file): Return immediately if
	file_name is empty.

2005-12-09  Javier Miranda  <miranda@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* a-tags.ads, a-tags.adb (Offset_To_Top): Moved from the package body
	to the specification because the frontend generates code that uses this
	subprogram.
	(Set_Interface_Table): Add missing assertion.
	Update documentation describing the run-time structure.
	(Displace): New subprogram that displaces the pointer to the object
	to reference one of its secondary dispatch tables.
	(IW_Membership): Modified to use the new table of interfaces.
	(Inherit_TSD): Modified to use the new table of interfaces.
	(Register_Interface_Tag): Use the additional formal to fill the
	contents of the new table of interfaces.
	(Set_Interface_Table): New subprogram that stores in the TSD the
	pointer to the table of interfaces.
	(Set_Offset_To_Top): Use the additional formal to save copy of
	the offset value in the table of interfaces.
	Update structure of GNAT Primary and Secondary dispatch table diagram.
	Add comment section on GNAT dispatch table prologue.
	(Offset_To_Signature): Update the constant value of the Signature field.
	(Dispatch_Table): Update comment on hidden fields in the prologue.
	(Get_Entry_Index, Get_Prim_Op_Kind, Get_Offset_Index, OSD,
	Set_Entry_Index, Set_Offset_Index, Set_Prim_Op_Kind, SSD, TSD): Change
	the type of formal parameter T to Tag, introduce additional assertions.
	(Get_Num_Prim_Ops, Set_Num_Prim_Ops): Remove an unnecessary type
	conversion.
	(Get_Tagged_Kind, Set_Tagged_Kind): New bodies.

	* exp_ch6.adb (Register_Interface_DT_Entry): Remove the Thunk_Id actual
	in all the calls to Expand_Interface_Thunk. Instead of referencing the
	record component containing the tag of the secondary dispatch table we
	have to use the Offset_To_Top run-time function to get this information;
	otherwise if the pointer to the base of the object has been displace
	we get a wrong value if we use the 'position attribute.

	* exp_disp.adb (Expand_Interface_Thunk): Remove the Thunk_Id actual in
	all the calls to Expand_Interface_Thunk.
	(Make_Secondary_DT): Secondary dispatch tables do not have a table of
	interfaces; hence the call to Set_Interface_Table was clearly wrong.
	(Collect_All_Interfaces): Modify the internal subprogram Collect to
	ensure that the interfaces implemented by the ancestors are placed
	at the header of the generated list.
	(Expand_Interface_Conversion): Handle the case in which the displacement
	associated with the interface conversion is not statically known. In
	this case we generate a call to the new run-time subprogram Displace.
	(Make_DT): Generate and fill the new table of interfaces.
	(Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Add entries for
	Get_Tagged_Kind and Set_Tagged_Kind.
	(Tagged_Kind): New function that determines the tagged kind of a type
	with respect to limitedness and concurrency and returns a reference to
	RE_Tagged_Kind.
	(Make_Disp_Asynchronous_Select_Body, Make_Disp_Conditional_Select_Body,
	Make_Disp_Timed_Select_Body): Correctly retrieve the pointer to the
	primary dispatch table for a type.
	(Make_DT, Make_Secondary_DT): Set the tagged kind in the primary and
	secondary dispatch table respectively of a tagged type.

	* exp_disp.ads (Expand_Interface_Thunk): Remove Thunk_Id formal.
	(Expand_Interface_Conversion): New subprogram to indicate if the
	displacement of the type conversion is statically known.
	(DT_Access_Action): Add values Get_Tagged_Kind and Set_Tagged_Kind.

	* rtsfind.ads (RE_Offset_To_Top): New entity
	(RTU_Id): Add Ada_Task_Termination to the list so that it is made
	accessible to users.
	(Re_Displace): New entity
	(RE_Interface_Data): New entity
	(RE_Set_Interface_Data): New_Entity
	(RE_Id, RE_Unit_Table): Add entry for RE_Get_Tagged_Kind,
	Set_Tagged_Kind, RE_Tagged_Kind, RE_TK_Abstract_Limited_Tagged,
	RE_TK_Abstract_Tagged, RE_TK_Limited_Tagged, RE_TK_Protected,
	RE_TK_Tagged, RE_TK_Task.

	* exp_ch3.adb (Init_Secondary_Tags): Modify the subprogram
	Init_Secondary_Tags_Internal to allow its use with interface types and
	also to generate the code for the new additional actual required
	by Set_Offset_To_Top.
	(Build_Init_Statements): In case of components associated with abstract
	interface types there is no need to generate a call to its IP.
	(Freeze_Record_Type): Generate Select Specific Data tables only for
	concurrent types.
	(Make_Predefined_Primitive_Specs, Predefined_Primitive_Bodies): Generate
	the bodies and specifications of the predefined primitive operations
	dealing with dispatching selects and abort, 'Callable, 'Terminated only
	for concurrent types.

	* exp_sel.ads, exp_sel.adb: New files.

	* exp_ch9.adb (Build_Protected_Entry, Expand_N_Protected_Body,
	Expand_N_Protected_Type_Declaration, Make_Initialize_Protection): Handle
	properly protected objects and attach handler in the case of the
	restricted profile.
	Move embeded package Select_Expansion_Utilities into a separate external
	package.
	(Expand_N_Asynchronous_Select, Expand_N_Conditional_Select,
	Expand_N_Timed_Entry_Call): Correct calls external package Exp_Sel.
	(Build_K, Build_S_Assignment): New subprograms, part of the select
	expansion utilities.
	(Expand_N_Asynchronous_Select, Expand_N_Conditional_Entry_Call,
	Expand_N_Timed_Entry_Call): Optimize expansion of select statements
	where the trigger is a dispatching procedure of a limited tagged type.

2005-12-09  Olivier Hainque  <hainque@adacore.com>

	* decl.c (gnat_to_gnu_entity, renaming object case): Don't early expand
	pointer initialization values. Make a SAVE_EXPR instead. Add comments
	about the use and expansion of SAVE_EXPRs in the various possible
	renaming handling cases.
	(components_to_record, compare_field_bitpos): Sort by DECL_UID, not by
	abusing DECL_FCONTEXT.

2005-12-09  Matthew Heaney  <heaney@adacore.com>

	* a-convec.adb (Merge): Added assertions to check whether vector params
	are sorted.

	* a-coinve.adb (Merge): Added assertions to check whether vector params
	are sorted.

	* a-cohama.ads (Cursor'Write): raises Program_Error per latest AI-302
	draft.
	(Cursor'Read): raises PE

	* a-cohama.adb (Insert.New_Node): Uses box-style syntax to init elem
	to its default value.

	* a-cihama.adb: Manually check whether cursor's key and elem are
	non-null

	* a-cidlli.ads, a-cidlli.adb (Splice): Changed param name and param mode
	(Merge): Assert that target and source lists are in order
	(Swap): Declare non-const temporaries, to pass to Splice

	* a-cdlili.ads: (Splice): Changed param name and param mode

	* a-cdlili.adb: (Splice): Changed param name and param mode
	(Merge): Assert that target and source lists are in order
	(Swap): Declare non-const temporaries, to pass to Splice

	* a-ciorma.ads, a-coorma.ads: (Read): declare Stream param as not null
	(Write): declare Stream param as not null

	* a-ciorma.adb, a-coorma.adb: All explicit raise statements now include
	an exception message.

2005-12-09  Thomas Quinot  <quinot@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* hostparm.ads (Max_Line_Length): Set to Types.Column_Number'Last - 1,
	which is the absolute maximum length we can support.

	* frontend.adb: For the processing of configuration pragma files,
	remove references to Opt.Max_Line_Length, which is not checked anymore.

	* namet.ads (Name_Buffer): Adjust size to reflect increase on max line
	length.

	* scn.adb, scng.adb:
	Always check line length against the absolute supported maximum,
	Hostparm.Max_Line_Length.

	* stylesw.adb (Set_Style_Check_Options, case M): The maximum supported
	value for the maximum line length is Max_Line_Length (not
	Column_Number'Last).
	Minor error msg update
	(Set_Style_Check_Options): New interface returning error msg
	Minor code reorganization (processing for 'M' was out of alpha order)

	* switch-c.adb: New interface for Set_Style_Check_Options

	* stylesw.ads (Set_Style_Check_Options): New interface returning error
	msg.

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

	* exp_aggr.adb (Build_Record_Aggr_Code): Default-initialialized records
	with IP subprogram were only supported if there were limited types.

	* sem_aggr.adb (Resolve_Record_Aggregate): Default-initialialized
	records with IP subprogram were only supported if there were limited
	types.

2005-12-09  Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (tree_transform, emit_check): Adjust calls to
	build_call_raise, passing the now expected GNAT_NODE argument.

	* gigi.h (build_call_raise): Add a GNAT_NODE argument to convey better
	source line information than what the current global locus indicates
	when appropriate.

	* utils2.c (build_simple_component_ref): Return 0 if the offset of the
	field has overflowed.
	(build_call_raise): Add a GNAT_NODE argument to convey better source
	line information than what the current global locus indicates when
	appropriate.
	(build_component_ref): Adjust call to build_call_raise.

2005-12-09  Pascal Obry  <obry@adacore.com>

	* g-diopit.adb (Find): Fix test to exit the iterator and make sure that
	the iterator is quitting iteration on parent directory.

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

	* exp_ch5.adb (Expand_N_Assignment_Statement): In case of tagged types
	and the assignment to a class-wide object, before the assignment we
	generate a run-time check to ensure that the tag of the Target is
	covered by the tag of the source.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* exp_imgv.adb (Expand_Image_Attribute): Generate extra boolean
	parameter in call to Image_Wide_Character.

	* s-imgwch.ads, s-imgwch.adb (Image_Wide_Character): Add boolean
	parameter Ada_2005 to deal with annoying FFFE/FFFF inconsistency.
	(Image_Wide_Character): Add boolean parameter Ada_2005 to deal with
	annoying FFFE/FFFF inconsistency.

2005-12-09  Robert Dewar  <dewar@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads, exp_util.adb (Is_Ref_To_Bit_Packed_Slice): Handle case
	of type conversion.
	(Find_Interface): New subprogram that given a tagged type and one of its
	component associated with the secondary table of an abstract interface
	type, return the entity associated with such abstract interface type.
	(Make_Subtype_From_Expr): If type has unknown discriminants, always use
	base type to create anonymous subtype, because entity may be a locally
	declared subtype or generic actual.
	(Find_Interface): New subprogram that given a tagged type and one of its
	component associated with the secondary table of an abstract interface
	type, return the entity associated with such abstract interface type.

	* sem_res.adb (Resolve_Type_Conversion): Handle the case in which the
	conversion cannot be handled at compile time. In this case we pass this
	information to the expander to generate the appropriate code.

2005-12-09  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Itype_Printed): New flag
	(Is_Limited_Type): Derived types do not inherit limitedness from
	interface progenitors.
	(Is_Return_By_Reference_Type): Predicate does not apply to limited
	interfaces.

	* einfo.ads (Itype_Printed): New flag
	Move Is_Wrapper_Package to proper section
	Add missing Inline for Is_Volatile

	* output.ads, output.adb (Write_Erase_Char): New procedure
	(Save/Restore_Output_Buffer): New procedures
	(Save/Restore_Output_Buffer): New procedures

	* sprint.ads, sprint.adb (Write_Itype): Handle case of record itypes
	Add missing support for anonymous access type
	(Write_Id): Insert calls to Write_Itype
	(Write_Itype): New procedure to output itypes

	* par-ch12.adb (P_Formal_Derived_Type_Definition): In Ada 2005, handle
	use of "limited" in declaration.

	* sinfo.ads, sinfo.adb:
	Formal derived types can carry an explicit "limited" indication.

	* sem_ch3.adb: Add with and use of Targparm.
	(Create_Component): If Frontend_Layout_On_Target is True and the
	copied component does not have a known static Esize, then reset
	the size and positional fields of the new component.
	(Analyze_Component_Declaration): A limited component is
	legal within a protected type that implements an interface.
	(Collect_Interfaces): Do not add to the list the interfaces that
	are implemented by the ancestors.
	(Derived_Type_Declaration): If the parent of the full-view is an
	interface perform a transformation of the tree to ensure that it has
	the same parent than the partial-view. This simplifies the job of the
	expander in order to generate the correct object layout, and it is
	needed because the list of interfaces of the full-view can be given in
	any order.
	(Process_Full_View): The parent of the full-view does not need to be
	a descendant of the parent of the partial view if both parents are
	interfaces.
	(Analyze_Private_Extension_Declaration): If declaration has an explicit
	"limited" the parent must be a limited type.
	(Build_Derived_Record_Type): A derived type that is explicitly limited
	must have limited ancestor and progenitors.
	(Build_Derived_Type): Ditto.
	(Process_Full_View): Verify that explicit uses of "limited" in partial
	and full declarations are consistent.
	(Find_Ancestor_Interface): Remove function.
	(Collect_Implemented_Interfaces): New procedure used to gather all
	implemented interfaces by a type.
	(Contain_Interface): New function used to check whether an interface is
	present in a list.
	(Find_Hidden_Interface): New function used to determine whether two
	lists of interfaces constitute a set equality. If not, the first
	differing interface is returned.
	(Process_Full_View): Improve the check for the "no hidden interface"
	rule as defined by AI-396.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* freeze.adb (Freeze_Record_Type): Only test for useless pack on record
	types, not on record subtypes.
	(Freeze_Entity): Code cleanup. Add barrier to the loop
	that generates the references for primitive operations. This allows to
	remove an unnecessary exception handler.
	Code reformatting and comment clean ups.

2005-12-09  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (GNATCmd): GNAT CHECK accepts switch -U
	If GNAT CHECK is called with a project file, but with no
	source on the command line, call gnatcheck with all the compilable
	sources of the project.
	Take into account the new command Check, for gnatcheck. Treat as for
	other ASIS tools: take into account project, specific package Check and
	Compiler switches.
	For ASIS tools, add the switches in package Compiler for
	the invocation of the compiler.

	* prj-attr.adb: Add package Check and its attributes

	* vms_conv.ads (Command_Type): New command Check, for gnatcheck

	* vms_conv.adb (Initialize): Change Params of command Check to
	unlimited files.
	Change some Hostparm.OpenVMS checks to Targparm.OpenVMS_On_Target.
	Add data for new command Check

	* vms_data.ads: Add project related qualifiers for GNAT CHECK and GNAT
	ELIM.
	Add qualifiers for Check command options
	(Command_Type): New command Check

2005-12-09  Thomas Quinot  <quinot@adacore.com>

	* mlib-utl.adb (Ar): Use Output.Buffer_Max to determine whether a
	command line switch overruns the output buffer.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* sem_prag.adb: Processing for new pragma Complete_Representation
	(Analyze_Pragma, case Debug): Implement two argument form.

	* par-prag.adb: Entry for new pragma Complete_Representation
	(Prag, case Debug): Recognize two argument form of pragma Debug
	New interface for Set_Style_Check_Options.

	* sem_ch13.adb: Implement new pragma Complete_Representation.

	* snames.adb, snames.ads, snames.h: Entry for new pragma
	Complete_Representation.

2005-12-09  Gary Dismukes  <dismukes@adacore.com>

	* sem_cat.adb (Validate_RCI_Subprogram_Declaration): Revise test for
	available user-specified stream attributes on limited parameters to
	also test the type directly rather than only its underlying type (for
	Ada 95) and, in the case of Ada 2005, to check that the user-specified
	attributes are visible at the point of the subprogram declaration.
	For Ada 2005, the error message is modified to indicate that the
	type's stream attributes must be visible (again, only for -gnat05).

2005-12-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Subtypes_Match): Handle properly Ada05 arrays of
	anonymous access types.

	* sem_eval.adb (Subtypes_Statically_Match): Implement new rules for
	matching of anonymous access types and anonymous access to subprogram
	types. 'R'M 4.9.1 (2/2).

2005-12-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Remove_Abstract_Operations): Do not apply preference
	rule prematurely when operands are universal, remaining ambiguities
	will be removed during resolution.
	Code cleanup.

	* sem_type.adb (Disambiguate): In Ada95 mode, discard interpretations
	that are Ada 2005 functions.
	(Has_Abstract_Interpretation): Subsidiary to
	Remove_Conversions, to remove ambiguities caused by abstract operations
	on numeric types when operands are universal.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* sem_ch6.adb (Analyze_Subprogram_Body): Properly check categorization
	for case where spec is categorized.

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

	* sem_ch8.adb (Find_Type): In case of tagged types that are concurrent
	types use the corresponding record type. This was not needed before
	the implementation of Ada 2005 synchronized types because
	concurrent types were never tagged types in Ada 95.

2005-12-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb (Analyze_Delay_Alternative, Analyze_Delay_Until): Use the
	first subtype of the type of the expression to verify that it is a
	legal Time type.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads, sem_util.adb (Full_Qualified_Name): Now provides
	decoded names.

2005-12-09  Quentin Ochem  <ochem@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Falis  <falis@adacore.com>
	    Florian Villoing  <villoing@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Created section "Stack Related Tools"
	Moved "Stack Overflow Checking" subsection from "Switches for gcc" to
	"Stack Related Tools"
	Added subsection "Static Stack Usage Analysis"
	Added subsection "Dynamic Stack Usage Analysis"
	Include documentation of itypes in sprint listing (-gnatG)
	Documented gnatbind -D switch (default sec stack size for fixed sec
	stacks).
	Added Interrupt_State and Persistent_BSS to list of configuration
	pragmas.
	Add missing doc for maximum value of nnn in -gnatyMnnn

	* gnat_rm.texi: Document the AltiVec binding.
	Add documentation for pragma Complete_Representation
	Shortened an overly long line (> 79 chars)
	Clarify documentation of unchecked conversion in implementation
	defined cases.
	Document two argument form of pragma Debug

	* types.ads (Column_Number): Update documentation.

	* exp_ch7.ads (Make_Adjust_Call): Document the special processing for
	library level Finalize_Storage_Only objects (these are not attached to
	any finalization list).

	* system-mingw.ads: (Underlying_Priorities): Update comment.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* i-c.adb, i-cexten.ads, i-cobol.adb, i-cobol.ads, i-cpoint.ads,
	i-cpp.adb, i-cpp.ads, i-cstrea.ads, i-cstrin.adb, i-cstrin.ads,
	inline.adb, interfac.ads, i-os2err.ads, i-os2lib.ads, i-os2syn.ads,
	i-os2thr.ads, itypes.adb, itypes.adb, itypes.ads, krunch.ads,
	krunch.adb, lib.adb, lib.ads, lib-list.adb, lib-load.adb,
	lib-load.ads, lib-sort.adb, live.adb, make.ads, i-cstrea-vms.adb,
	interfac-vms.ads, makegpr.adb, indepsw-gnu.adb, indepsw.ads,
	s-wchcon.ads, sdefault.ads, sem_ch10.adb, sem_eval.ads: Minor
	reformatting.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* s-vaflop-vms-alpha.adb: (Ne_F): New function
	(Ne_G): New function

	* exp_ch4.adb (Expand_Allocator_Expression): Factor duplicated code
	for tag assignment.
	(Rewrite_Comparison): Handle case where operation is not a comparison
	and ignore, and also handle type conversion case.

2005-12-09  Thomas Quinot  <quinot@adacore.com>

	* exp_aggr.ads: Fix typo in comment.
	???-mark Convert_Aggr_In_Assignment as needing documentation.

2005-12-09  Gary Dismukes  <dismukes@adacore.com>

	* layout.adb: Replace various uses of byte by storage unit throughout.
	(Get_Max_SU_Size): Name changed from Get_Max_Size. In the case of a
	static size, convert to storage units before returning, to conform to
	spec.

2005-12-09  Matthew Gingell  <gingell@adacore.com>

	* g-exctra.ads: Fix typo in comment.

2005-12-09  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* utils.c: Minor reformatting.

2005-12-09  Robert Dewar  <dewar@adacore.com>

	* g-soccon.ads:
	Further comment fixes to make the status of the default file clear

	* s-bitops.adb: Clarify comment for Bits_Array

2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* Make-lang.in (ada.install-normal): Remove.

2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* Make-lang.in: Remove all dependencies on s-gtype.

2005-12-05  Richard Guenther  <rguenther@suse.de>

	* utils.c (convert): Use fold_convert where appropriate.

2005-12-05  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (gnatlib): Fix regex, using \. instead of . when
	a period is meant.

2005-12-02  Richard Guenther  <rguenther@suse.de>

	* trans.c (gnat_gimplify_expr): Use buildN instead of build.

2005-12-01  Roger Sayle  <roger@eyesopen.com>

	* utils.c (max_size): Only test for TREE_OVERFLOW on INTEGER_CST
	nodes.

2005-11-23  Laurent Guerby  <laurent@guerby.net>

	* mlib-prj.adb (Build_Library): Initialize Delete.

2005-11-21  Joel Sherrill  <joel.sherrill@oarcorp.com>

	* socket.c: Add extern int h_errno for rtems since networking header
	files are not available at this point in a tool bootstrap. Newlib
	only has basic C library header files.

2005-11-19  Richard Guenther  <rguenther@suse.de>
	Roger Sayle  <roger@eyesopen.com>

	PR ada/23717
	* misc.c (internal_error_function): Don't use vsprintf to format
	the error message text, instead use pp_format_text and the new
	pretty printer APIs.  This allows handling of %qs, %w, etc.

2005-11-18  Laurent Guerby  <laurent@guerby.net>

	PR ada/24857
	* Makefile.in: Use s-auxdec-empty for RTEMS.

2005-11-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	PR ada/22333
	* trans.c (gnat_gimplify_expr, case ADDR_EXPR): Always make
	a temporary if taking the address of something that is neither
	reference, declaration, or constant, since the gimplifier
	can't handle that case.

2005-11-17  Laurent Guerby  <laurent@guerby.net>

	PR ada/24857
	* s-auxdec-empty.ads, s-auxdec-empty.adb: New files.

2005-11-16  Richard Guenther  <rguenther@suse.de>

	* Makefile.in: Add EH_MECHANISM=-gcc to s390(x) linux.

2005-11-16  Joel Sherrill  <joel.sherrill@oarcorp.com>

	PR ada/24855
	* raise-gcc.c: Add missing stdarg.h include.

2005-11-16  Richard Guenther  <rguenther@suse.de>

	* Make-lang.in (ada/decl.o): Add $(EXPR_H) dependency.
	(ada/misc.o): Likewise.

2005-11-14  Thomas Quinot  <quinot@adacore.com>

	* g-soccon.ads: Minor reformatting. Update comments.

	* gsocket.h: Include <sys/times.h> in the VxWorks case, in order to
	gain visibility on the declaration of struct timeval.

	* g-soccon-freebsd.ads,
	g-soccon-darwin.ads,
	g-soccon-tru64.ads,
	g-soccon-aix.ads,
	g-soccon-irix.ads,
	g-soccon-hpux.ads,
	g-soccon-solaris.ads,
	g-soccon-vms.ads,
	g-soccon-mingw.ads,
	g-soccon-vxworks.ads (SIZEOF_tv_sec, SIZEOF_tv_usec): New constants.

	* g-soccon-hpux-ia64.ads, g-soccon-linux-ppc.ads,
	g-soccon-solaris-64.ads, g-soccon-linux-64.ads,
	g-soccon-linux-x86.ads: New files.

	* g-socthi-mingw.adb:
	(Socket_Error_Message): Remove redundant use of GNAT.Sockets.Constants

	* g-socthi-vxworks.ads, g-socthi-vms.ads, g-socthi-mingw.ads
	(time_t, suseconds_t): New types constructed to match the tv_sec
	and tv_usec fields of C struct timeval.
	(Timeval): Construct structure in terms of the new types.
	(Host_Errno): New function (imported from socket.c), returns last hosts
	database error.

	* g-socthi-vxworks.adb:  Add error handling circuitry.

	* g-socket.ads, g-socket.adb (To_Timeval): Reflect change of type for
	components of struct timeval.
	(Get_Host_By_Name, Get_Host_By_Address): Fix error reporting circuitry.
	(Check_Selector): In error conditions, clear internal socket sets to
	avoid a memory leak.
	(Get_Socket_Option, Set_Socket_Option): Support for Multicast_If,
	Send_Timeout, Receive_Timeout.

	* g-socthi.ads (time_t, suseconds_t): New types constructed to match
	the tv_sec and tv_usec fields of C struct timeval.
	(Timeval): Construct structure in terms of the new types.
	(Host_Errno): New function (imported from socket.c), returns last hosts
	database error.

	* socket.c (__gnat_get_h_errno): New function to retrieve h_errno, the
	hosts database last error code.

	* gen-soccon.c: Complete value expansion should not be performed on
	TARGET, as it has the form of a math expression, and some components
	may be platform-defined macros.
	For VxWorks, generate the OK and ERROR values.
	New constants giving the sizes of the components of C struct timeval.

2005-11-14  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	PR ada/18434
	* types.ads: Include All_Checks in Suppress_Array

	* checks.adb (Check_Needed): Remove kludge for a/=b rewritten as
	not(a=b), since we no longer do this rewriting, and hence it is not
	needed.
	(Elaboration_Checks_Suppressed): Add special casing to
	deal with different cases of static and dynamic elaboration checks (all
	checks does not count in the first case, but does in the second).
	(Expr_Known_Valid): Do not assume that the result of any arbitrary
	function call is valid, since this is not the case.
	(Ensure_Valid): Do not apply validity check to a real literal
	in a universal or fixed context

	* exp_ch4.adb (Expand_N_Op_Ne): Don't expand a/=b to not(a=b) for
	elementary types using the operator in standard. It is cleaner not to
	modify the programmers intent, especially in the case of floating-point.
	(Rewrite_Comparison): Fix handling of /= (this was always wrong, but
	it did not matter because we always rewrote a/=b to not(a=b).
	(Expand_Allocator_Expression): For an allocator expression whose nominal
	subtype is an unconstrained packed type, convert the expression to its
	actual constrained subtype.
	Implement warning for <= or >= where < or > not possible
	Fix to Vax_Float tests (too early in many routines, causing premature
	Vax_Float expansions.

	* sem_prag.adb (Analyze_Pragma, case Obsolescent): Allow this pragma
	to be used with packages and generic packages as well as with
	subprograms.
	(Suppress): Set All_Checks, but not Elaboration_Check, for case
	of pragma Suppress (All_Checks)
	(Analyze_Pragma, case Warnings): Implement first argument allowed to be
	a string literal for precise control over warnings.
	Avoid raise of pragma in case of unrecognized pragma and just return
	instead.

	* sem_prag.ads: Minor reformatting

	* switch-c.adb (Scan_Front_End_Switches): Replace "raise Bad_Switch;"
	with call to new procedure Bad_Switch. Call Scan_Pos with new parameter
	Switch. Do not handle any exception.
	Include -gnatwx as part of -gnatg (warn on redundant parens)
	Allow optional = after -gnatm
	(Scan_Front_End_Switches): The -gnatp switch sets All_Checks, but no
	longer sets Elaboration_Checks.
	Code to set warning mode moved to Sem_Warn
	so that it can be shared by pragma processing.

	* s-mastop-tru64.adb (Pop_Frame): Remove redundant parentheses in if
	statement.

	* s-taprop-solaris.adb:
	Change some <= to =, to avoid new warning

	* a-exexda.adb, prj-proc.adb:
	Fix obvious typo (Num_Tracebacks compared <= 0 instead of < 0)
	Fix obvious typo (Total_Errors_Detected <= 0 should be = 0)

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* exp_vfpt.adb: Handle /= case
	(Expand_Vax_Conversion): Properly recognize Conversion_OK flag
	so that we do not get duplicate scaling for fixed point conversions.

	* s-vaflop.ads, s-vaflop.adb: (Ne_F): New function

2005-11-14  Matthew Gingell  <gingell@adacore.com>

	* system-lynxos-ppc.ads, system-lynxos-x86.ads:
	Increase default priority on Lynx from 15 to 17, and meet the Ada
	requirement that Default_Priority be ((Priority'First +
	Priority'Last) / 2) by increasing the range of Interrupt_Priority.

2005-11-14  Vincent Celier  <celier@adacore.com>

	* mlib-tgt-tru64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb,
	mlib-tgt-hpux.adb, mlib-tgt-hpux.adb, mlib-tgt-linux.adb,
	mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-alpha.adb,
	mlib-tgt-vms-ia64.adb, mlib-tgt-mingw.adb, mlib-tgt-vxworks.adb,
	mlib-tgt-darwin.adb, mlib-tgt.adb, mlib-tgt.ads,
	mlib-tgt-lynxos.adb (DLL_Prefix): New function

2005-11-14  Doug Rupp  <rupp@adacore.com>

	* system-vms.ads, system-vms_64.ads: ADA$GNAT: New exported object in
	private part.

2005-11-14  Arnaud Charlet  <charlet@adacore.com>

	* s-traces-default.adb, s-trafor-default.ads,
	s-tratas-default.adb: Fix compilation errors.

2005-11-14  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-posix.adb (Initialize_Lock): Destroy mutex attribute before
	raising the exception so the memory used is freed.

2005-11-14  Arnaud Charlet  <charlet@adacore.com>

	* adaint.h, adaint.c (__gnat_is_cross_compiler): New constant.
	(Gnat_Install_Locks, __gnatlib_install_locks): Removed, no longer used.
	(convert_address): Update comments and list of platforms using this.

	* s-tasini.adb (Gnat_Install_Locks, __gnatlib_install_locks): Removed,
	no longer used.

2005-11-14  Pascal Obry  <obry@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* gnatdll.adb (Parse_Command_Line): Remove redundant use of
	GNAT.Command_Line.

	* memroot.adb: Remove redundant with/use clause on
	System.Storage_Elements.

2005-11-14  Arnaud Charlet  <charlet@adacore.com>

	* a-except.adb (Zero_Cost_Exceptions): Removed, no longer used.
	(builtin_longjmp, Process_Raise_Exceeption): Move setjmp/longjmp
	related code to a-exexpr.adb
	(Save_Occurrence_And_Private): Move GCC EH related code to
	a-exexpr-gcc.adb
	(Raise_Current_Excep): Add new variable Id with pragma
	volatile, to ensure that the variable lives on stack.

	* a-exexpr-gcc.adb, raise-gcc.c: New file.

	* a-exexpr.adb (builtin_longjmp, Propagate_Exception): Moved here code
	from a-except.adb.
	Move GCC EH related code to a-exexpr-gcc.adb

	* Makefile.in: Add or update g-soccon LIBGNAT pairs for Linux/PPC and
	64-bit Solaris
	Split the Linux version of g-soccon into separate variants for 32 and 64
	bit platforms.
	(gnatlib): Use $(AR_FOR_TARGET) and $(RANLIB_FOR_TARGET)
	vice $(AR) and $(RANLIB). Remove use of host variable $(RANLIB_FLAGS).
	install-gnatlib: Use $(RANLIB_FOR_TARGET) vice $(RANLIB). Remove use
	of host variable $(RANLIB_FLAGS).
	(alpha64-dec-*vms*): Fix translations for 64 bit compiler.
	Code clean up: remove unused/obsolete targets.
	(EH_MECHANISM): New variable introduced to differenciate between the
	two EH mechanisms statically.
	(gnatlib-zcx, gnatlib-sjlj): Force EH_MECHANISM manually.
	(LIBGNAT_OBJS): Add raise-gcc.o
	(LIBGNAT_TARGET_PAIRS for ppc-vxworks): Use an specialized version of
	s-osinte.adb, s-tpopsp.adb, and system.ads for the run time that
	supports VxWorks 6 RTPs.
	(EXTRA_GNATRTL_NONTASKING_OBJS for ppc-vxworks): Remove the use of
	i-vxworks and i-vxwoio from the run time that supports VxWorks 6 RTPs.

	* raise.c: Move all GCC EH-related routines to raise-gcc.c

2005-11-14  Jose Ruiz  <ruiz@adacore.com>

	* s-tassta.adb (Create_Task): Move the code in charge of resetting the
	deferral level, when abort is not allowed, to a later stage (the
	Task_Wrapper).
	(Task_Wrapper): If Abort is not allowed, reset the deferral level since
	it will not get changed by the generated code. It was previously done
	in Create_Task.

2005-11-14  Thomas Quinot  <quinot@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c:
	Factor common code to build a storage type for an unconstrained object
	from a fat or thin pointer type and a constrained object type.
	(annotate_value): Handle BIT_AND_EXPR.
	(annotate_rep): Don't restrict the back annotation of inherited
	components to the type_annotate_only case.
	(gnat_to_gnu_entity) <E_Array_Type>: Do not invoke create_type_decl if
	we are not defining the type.
	<E_Record_Type>: Likewise.
	(gnat_to_gnu_entity) <object, renaming>: Adjust comments and structure
	to get advantage of the new maybe_stabilize_reference interface, to
	ensure that what we reference is indeed stabilized instead of relying
	on assumptions on what the stabilizer does.
	(gnat_to_gnu_entity) <E_Incomplete_Type>: If the entity is an incomplete
	type imported through a limited_with clause, use its non-limited view.
	(Has_Stdcall_Convention): New macro, to centralize the Windows vs others
	differentiation.
	(gnat_to_gnu_entity): Use Has_Stdcall_Convention instead of a spread mix
	of #if sections + explicit comparisons of convention identifiers.
	(gnat_to_gnu_entity) <E_Variable>: Decrement force_global if necessary
	before early-returning for certain types when code generation is
	disabled.
	(gnat_to_gnu_entity) <object>: Adjust comment attached to the
	nullification of gnu_expr we do for objects with address clause and
	that we are not defining.
	(elaborate_expression_1): Do not create constants when creating
	variables needed by the debug info: the dwarf2 writer considers that
	CONST_DECLs is used only to represent enumeration constants, and emits
	nothing for them.
	(gnat_to_gnu_entity) <object>: When turning a non-definition of an
	object with an address clause into an indirect reference, drop the
	initializing expression.
	Include "expr.h".
	(STACK_CHECK_BUILTIN): Delete.
	(STACK_CHECK_PROBE_INTERVAL): Likewise.
	(STACK_CHECK_MAX_FRAME_SIZE): Likewise.
	(STACK_CHECK_MAX_VAR_SIZE): Likewise.
	(gnat_to_gnu_entity): If gnat_entity is a renaming, do not mark the tree
	corresponding to the renamed object as ignored for debugging purposes.

	* trans.c (tree_transform, case N_Attribute_Reference, case Attr_Size &
	related): For a prefix that is a dereference of a fat or thin pointer,
	if there is an actual subtype provided by the front-end, use that
	subtype to build an actual type with bounds template.
	(tree_transform, case N_Free_Statement): If an Actual_Designated_Subtype
	is provided by the front-end, use that subtype to compute the size of
	the deallocated object.
	(gnat_to_gnu): When adding a statement into an elaboration procedure,
	check for a potential violation of a No_Elaboration_Code restriction.
	(maybe_stabilize_reference): New function, like gnat_stabilize_reference
	with extra arguments to control whether to recurse through non-values
	and to let the caller know if the stabilization has succeeded.
	(gnat_stabilize_reference): Now a simple wrapper around
	maybe_stabilize, for common uses without restriction on lvalues and
	without need to check for the success indication.
	(gnat_to_gnu, call_to_gnu): Adjust calls to gnat_stabilize_reference, to
	pass false instead of 0 as the FORCE argument which is a bool.
	(Identifier_to_gnu): Remove checks ensuring that an renamed object
	attached to a renaming pointer has been properly stabilized, as no such
	object is attached otherwise.
	(call_to_gnu): Invoke create_var_decl to create the temporary when the
	function uses the "target pointer" return mechanism.
	Reinstate conversion of the actual to the type of the formal
	parameter before any other specific treatment based on the passing
	mechanism. This turns out to be necessary in order for PLACEHOLDER
	substitution to work properly when the latter type is unconstrained.

	* gigi.h (build_unc_object_type_from_ptr): New subprogram, factoring a
	common pattern.
	(maybe_stabilize_reference): New function, like gnat_stabilize_reference
	with extra arguments to control whether to recurse through non-values
	and to let the caller know if the stabilization has succeeded.

	* utils2.c (gnat_build_constructor): Only sort the fields for possible
	static output of record constructor if all the components are constant.
	(gnat_build_constructor): For a record type, sort the list of field
	initializers in increasing bit position order.
	Factor common code to build a storage type for an unconstrained object
	from a fat or thin pointer type and a constrained object type.
	(build_unary_op) <ADDR_EXPR>: Always recurse down conversions between
	types variants, and process special cases of VIEW_CONVERT expressions
	as their NOP_EXPR counterpart to ensure we get to the
	CORRESPONDING_VARs associated with CONST_DECls.
	(build_binary_op) <MODIFY_EXPR>: Do not strip VIEW_CONVERT_EXPRs
	on the right-hand side.

	* utils.c (build_unc_object_type_from_ptr): New subprogram, factoring
	a common pattern.
	(convert) <VIEW_CONVERT_EXPR>: Return the inner operand directly if we
	are converting back to its original type.
	(convert) <JM input>: Fallthrough regular conversion code instead of
	extracting the object if converting to a type variant.
	(create_var_decl): When a variable has an initializer requiring code
	generation and we are at the top level, check for a potential violation
	of a No_Elaboration_Code restriction.
	(create_var_decl): call expand_decl for CONST_DECLs, to set MODE, ALIGN
	SIZE and SIZE_UNIT which we need for later back-annotations.
	* utils.c: (convert) <STRING_CST>: Remove obsolete code.
	<VIEW_CONVERT_EXPR>: Do not lift the conversion if the target type
	is an unchecked union.
	(pushdecl): Set DECL_NO_STATIC_CHAIN on imported nested functions.
	(convert) <VIEW_CONVERT_EXPR>: When the types have the same
	main variant, just replace the VIEW_CONVERT_EXPR.
	<UNION_TYPE>: Revert 2005-03-02 change.

	* repinfo.h, repinfo.ads: Add tcode for BIT_AND_EXPR.

	* repinfo.adb (Print_Expr, Rep_Value): Handle Bit_And_Expressions.

2005-11-14  Matthew Heaney  <heaney@adacore.com>

	* a-crbtgo.ads, a-crbtgo.adb, a-coorse.ads, a-coorse.adb, a-convec.ads,
	a-convec.adb, a-coinve.ads, a-coinve.adb, a-cohama.ads, a-cohama.adb,
	a-ciorse.ads, a-ciorse.adb, a-cihama.ads, a-cihama.adb, a-cidlli.ads,
	a-cidlli.adb, a-cdlili.ads, a-cdlili.adb, a-coormu.adb, a-ciormu.adb,
	a-cihase.adb, a-cihase.ads, a-cohase.adb, a-cohase.ads, a-ciorma.ads,
	a-coorma.ads, a-ciormu.ads, a-coormu.ads, a-ciorma.adb, a-coorma.adb:
	Compiles against the spec for ordered maps described in sections
	A.18.6 of the most recent (August 2005) AI-302 draft.

2005-11-14  Olivier Hainque  <hainque@adacore.com>

	* cuintp.c (UI_To_gnu): Use a proper type for intermediate computations
	to ensure bias adjustments take place when need be and to prevent
	occurrences of intermediate overflows.

2005-11-14  Matthew Gingell  <gingell@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>

	* tb-gcc.c (trace_callback): Work around problem with _Unwind_GetIP on
	ia64 HP-UX.

	* tracebak.c (ia64 configuration): Enable _Unwind_Backtrace driven
	tracebacks on ia64 HP-UX and provide explanatory comment.
	Enable backtraces on ia64 GNU/Linux.
	(x86 configuration): Bump FRAME_LEVEL to 1 to ensure we retrieve a real
	base pointer from builtin_frame_address. Adjust BASE_SKIP accordingly.

2005-11-14  Hristian Kirtchev  <kirtchev@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* rtsfind.ads, exp_util.adb, exp_util.ads, exp_disp.adb, exp_disp.ads,
	exp_ch7.adb, sem_ch9.adb, snames.adb, snames.ads,
	exp_ch9.adb, exp_ch9.ads, exp_ch6.adb, exp_ch3.adb, exp_ch3.ads,
	einfo.ads, einfo.adb: Complete support for Ada 2005 interfaces.

	* a-tags.ads, a-tags.adb: Major rewrite and additions to implement
	properly new Ada 2005 interfaces (AI-345) and add run-time checks (via
	assertions).

	* exp_dbug.ads, exp_dbug.adb (Get_Secondary_DT_External_Name): New
	subprogram that generates the external name associated with a
	secondary dispatch table.
	(Get_Secondary_DT_External_Name): New subprogram that generates the
	external name associated with a secondary dispatch table.

2005-11-14  Emmanuel Briot  <briot@adacore.com>

	* xref_lib.adb (Parse_Identifier_Info): It is possible for an entity
	line in the ALI file to include both an instantiation reference, and a
	returned value.

2005-11-14  Vincent Celier  <celier@adacore.com>

	* clean.adb (Check_Project): Look for Ada code in extending project,
	even if Ada is not specified as a language.
	Use new function DLL_Prefix for DLL_Name
	(Clean_Interface_Copy_Directory): New procedure
	(Clean_Library_Directory): New procedure
	(Clean_Directory): Remove procedure, no longer used
	(Clean_Project): Do not delete any file in an externally built project

	* prj-env.adb (Set_Ada_Paths.Add.Recursive_Add): Add the object
	directory of an extending project, even when there are no Ada source
	present.
	(Ada_Objects_Path.Add): Add Library_ALI_Dir, not Library_Dir to the path
	(Set_Ada_Paths.Add.Recursive_Add): Ditto

	* mlib-prj.adb (Check_Library): For all library projects, get the
	library file timestamp.
	(Build_Library): Copy ALI files in Library_ALI_Dir, not in Library_Dir
	(Build_Library): Use new function DLL_Prefix for the DLL_Name
	(Clean): Remove procedure, no longer used
	(Ultimate_Extension_Of): New function
	(Build_Library): When cleaning the library directory, only remove an
	existing library file and any ALI file of a source of the project.
	When cleaning the interface copy directory, remove any source that
	could be a source of the project.

	* prj.ads, prj.adb (Project_Empty): Add values of new components
	Library_TS and All_Imported_Projects.
	(Project_Empty): Add values for new components of Project_Data:
	Library_ALI_Dir and Display_Library_ALI_Dir

	* prj-attr.adb: New project level attribute name Library_ALI_Dir

	* prj-nmsc.adb (Check_Library_Attributes): Take into account new
	attribute Library_ALI_Dir.
	(Check_Library_Attributes): The library directory cannot be the same as
	any source directory of the project tree.
	(Check_Stand_Alone_Library): The interface copy directory cannot be
	the same as any source directory of the project tree.

	* mlib.adb: Use Prj.Com.Fail, instead of Osint.Fail directly, to delete
	all temporary files.

2005-11-14  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_elab.adb: Change name Is_Package to Is_Package_Or_Generic_Package
	(Check_Elab_Call): A call within a protected body is never an
	elaboration call, and does not require checking.
	(Same_Elaboration_Scope): Take into account protected types for both
	entities.
	(Activate_Elaborate_All_Desirable): New procedure

	* ali.ads, ali.adb: Implement new AD/ED for Elaborate_All/Elaborate
	desirable

	* binde.adb: Implement new AD/ED for Elaborate_All/Elaborate desirable
	(Elab_Error_Msg): Use -da to include internal unit links, not -de.

	* lib-writ.ads, lib-writ.adb:
	Implement new AD/ED for Elaborate_All/Elaborate desirable
	Use new Elaborate_All_Desirable flag in N_With_Clause node

	* sinfo.ads, sinfo.adb (Actual_Designated_Subtype): New attribute for
	N_Free_Statement nodes.
	Define new class N_Subprogram_Instantiation
	Add Elaborate_Desirable flag to N_With_Clause node
	Add N_Delay_Statement (covering two kinds of delay)

	* debug.adb: Introduce d.f flag for compiler
	Add -da switch for binder

2005-11-14  Ed Schonberg  <schonberg@adacore.com>
	    Cyrille Comar  <comar@adacore.com>

	* exp_aggr.adb (Build_Record_Aggr_Code): Do not create master entity
	for task component, in the case of a limited aggregate. The enclosed
	object declaration will create it earlier. Otherwise, in the case of a
	nested aggregate, the object may appear in the wrong scope.
	(Convert_Aggr_In_Object_Decl): Create a transient scope when needed.
	(Gen_Assign): If the component being assigned is an array type and the
	expression is itself an aggregate, wrap the assignment in a block to
	force finalization actions on the temporary created for each row of the
	enclosing object.
	(Build_Record_Aggr_Code): Significant rewrite insuring that ctrl
	structures are initialized after all discriminants are set so that
	they can be accessed even when their offset is dynamic.

2005-11-14  Robert Dewar  <dewar@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb: Implement Machine_Rounding attribute
	(Analyze_Access_Attribute): The access attribute may appear within an
	aggregate that has been expanded into a loop.
	(Check_Task_Prefix): Add semantic check for attribute 'Callable and
	'Terminated whenever the prefix is of a task interface class-wide type.
	(Analyze_Attribute): Add semantic check for attribute 'Identity whenever
	the prefix is of a task interface class-wide type.

	* s-vaflop-vms-alpha.adb: Valid_D, Valid_F, Valid_G: Make Val constant
	to avoid warnings.

	* s-fatgen.ads, s-fatgen.adb (Machine_Rounding): New function
	Remove pragma Inline for [Unaligned_]Valid.
	Add comments that Valid routines do not work for Vax_Float

	* exp_attr.adb: Implement Machine_Rounding attribute

	* snames.h: Add entry for Machine_Rounding attribute

2005-11-14  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, cases of Attribute_Size
	and related): For a prefix that is an explicit dereference of an
	access to unconstrained packed array type, annotate the dereference
	with an actual subtype so GIGI can make a correct size computation.
	(Expand_N_Attribute_Reference): In case of 'Unchecked_Access and
	'Unrestricted_Access, if the designated type is an interface we
	add a type conversion to force the displacement of the pointer
	to the secondary dispatch table.
	Use Universal_Real instead of Long_Long_Float when we need a high
	precision float type for the generated code (prevents gratuitous
	Vax_Float stuff when pragma Float_Representation (Vax_Float) used)
	(Expand_N_Attribute_Reference): Add support for attribute 'Callable and
	'Terminated for task interface class-wide objects. Generate a call to
	the predefined dispatching routine used to retrieve the _task_id from
	a task corresponding record.
	(Expand_Fpt_Attribute): Major change to properly handle Vax_Float

	* sem_disp.adb: Change name Is_Package to Is_Package_Or_Generic_Package
	(Check_Dispatching_Operation): Protect the frontend againts
	previously detected errors.

	* Makefile.rtl: Add new instantiations of system.fat_gen

	* s-fatflt.ads, s-fatlfl.ads, s-fatllf.ads, s-fatsfl.ads:
	Change name of instantiated package for better consistency
	with newly added system.fat_gen instantiations.

	* s-filofl.ads, s-fishfl.ads, s-fvadfl.ads, s-fvaffl.ads,
	s-fvagfl.ads: New files.

2005-11-14  Cyrille Comar  <comar@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement, Tagged_Case): For an
	assignment of a value of a tagged type that has been rewritten to a
	block statement, it is known by construction that no checks are
	necessary for the statements within the block: analyze it with checks
	suppressed.
	(Expand_N_If_Statement): When killing a dead then-branch in an
	if-statement that has elsif_parts, recompute the Current_Value node
	for any entity whose value is known from the condition of the first
	elsif_part.
	(Expand_N_Return_Statement): When returning a mutable record, convert
	the return value into its actual subtype in order to help the backend
	to return the actual size instead of the maximum. This is another
	aftermath of not returning mutable records on the sec-stack anymore.

	* sem_ch5.ads, sem_ch5.adb (Analyze_Iteration_Scheme): Minor change to
	handling of error msg for suspicious reverse range iteration.
	(Check_Possible_Current_Value_Condition): Move declaration from body to
	spec, to allow this subprogram to be called from exp_ch5.

2005-11-14  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Append_Array_Traversal): Modify constrained case to
	generate a set of nested array aggregates instead of a single flat
	aggregate for multi-dimensional arrays.

2005-11-14  Pascal Obry  <obry@adacore.com>

	* expect.c (__gnat_kill) [Win32]: Fix implementation, the pid returned
	by spawnve is a process handle, no need to convert. Add a parameter
	close to control wether the process handle must be closed.
	(__gnat_waitpid): Fix implementation, the pid returned by spawnve is
	a process handle, not need to convert.
	(__gnat_kill) [*]: Add dummy parameter close to match the Win32 spec.

	* g-expect.adb: (Kill): Document the new close parameter.
	(Close): Do not release the process handle in the kill there as
	waitpid() is using it.
	(Send_Signal): Release the process handle.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* exp_fixd.adb: Use Universal_Real instead of Long_Long_Float when we
	need a high precision float type for the generated code (prevents
	gratuitous Vax_Float stuff when pragma Float_Representation (Vax_Float)
	used).

	* exp_imgv.adb: Use Universal_Real instead of Long_Long_Float when we
	need a high precision float type for the generated code (prevents
	gratuitous Vax_Float stuff when pragma Float_Representation (Vax_Float)
	used).
	(Expand_Width_Attribute): In configurable run-time, the attribute is not
	allowed on non-static enumeration subtypes. Force a load error to emit
	the correct diagnostic.

2005-11-14  Thomas Quinot  <quinot@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): If GIGI needs an actual
	subtype to compute the size of the designated object at run-time,
	create such a subtype and store it in the Actual_Designated_Subtype
	attribute of the N_Free_Statement.
	Generate itype for classwide designated object in both cases of
	user-specified storage pool: specific and class-wide, not only in the
	specific case.
	Raise CE when trying to set a not null access type object to null.
	(Expand_Dispatching_Constructor_Call): Retrieve subprogram actual with
	an explicit loop, because freeze nodes make its position variable.

	* sem_intr.adb (Check_Intrinsic_Call): Given warning for freeing not
	null object.

2005-11-14  Javier Miranda  <miranda@adacore.com>

	* exp_strm.adb (Build_Stream_Attr_Profile, Build_Stream_Function,
	Build_Stream_Procedure): Add the null-excluding attribute to the first
	formal.
	This has no semantic meaning under Ada95 mode but it is a
	requirement under Ada05 mode.

	* par-ch3.adb (P_Access_Definition): Addition of warning message if
	the null exclusion is used under Ada95 mode
	(P_Null_Exclusion): The qualifier has no semantic meaning in Ada 95.
	(P_Access_Definition): Remove assertion that forbids the use of
	the null-exclusion feature in Ada95.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* impunit.adb: Exclude container helper units not intended for use by
	users.

2005-11-14  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): For an access formal that is an access
	to subprogram, freeze the anonymous subprogram type at the same time,
	to prevent later freezing in the wrong scope, such as the enclosing
	subprogram body.
	(Freeze_Entity): Freeze the equivalent_type of an access_to_protected_
	subprogram whenever available.

2005-11-14  Arnaud Charlet  <charlet@adacore.com>

	PR ada/23732
	* gnatvsn.ads (Library_Version): Bump to 4.1

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* g-debpoo.adb (Set_Valid): Use Integer_Address instead of
	Storage_Offset to avoid wrap around causing invalid results.

2005-11-14  Pascal Obry  <obry@adacore.com>

	* gnatbind.adb (Is_Cross_Compiler): New function returning True for
	cross-compiler.
	(Scan_Bind_Arg): Fail with an error message if -M option is used
	on a native compiler.

2005-11-14  Robert Dewar  <dewar@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* gprep.adb: Implement -C switch to scan comments

	* scng.adb: Scan comment symbol separately if Replace_In_Comments set

	* scans.ads: Comment updates (including new use of Tok_Comment in
	preprocessing)

	* opt.ads: Add documentation for flags that are used by gprmake,
	currently and in the next version of gprmake.
	(Verbosity_Level): New variable
	Add Replace_In_Comments switch

	* vms_data.ads: Add VMS equivalent for new gnatmake switches -vl, -vm
	and -vm.
	Add /REPLACE_IN_COMMENTS for gnatprep -C switch

2005-11-14  Arnaud Charlet  <charlet@adacore.com>

	* g-regpat.adb (Fail): raise Expression_Error including the diagnostic
	message, friendlier.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* g-spitbo.adb: (Hash): Rotate by 3 instead of 1

2005-11-14  Doug Rupp  <rupp@adacore.com>

	* init.c [VMS]: Don't install __gnat_error_handler if DBG$TDBG defined.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* interfac.ads: Change declarations of IEEE float types so that we no
	longer need a separate version of this package for VMS.

2005-11-14  Ed Schonberg  <schonberg@adacore.com>

	* lib-xref.adb (Generate_Definition, Generate_Reference): Treat the
	internal entity created for the declaration of a child subprogram body
	with no spec as coming from source, to generate proper cross-reference
	information.

2005-11-14  Vincent Celier  <celier@adacore.com>

	* make.adb (Compile_Sources): Change verbose message to minimum
	verbosity level High for "is in an Ada library", "is a read-only
	library" and "is an internal library",
	(Create_Binder_Mapping_File): Path name of ALI file for library project
	must include the library directory, not the object directory.
	(Scan_Make_Arg): Make sure that Switch.M.Scan_Make_Switches is called
	for new switches -vl, -vm and -vh.
	(Verbose_Msg): Add new defaulted parameter Minimum_Verbosity
	(Check): Use minimum verbosity Medium for some Verbose_Msg calls
	(Compile_Sources): Do not attempt to compile if an ALI file is missing
	in a project that is externally built.
	(Compute_All_Imported_Projects): New procedure
	(Gnatmake): Check if importing libraries should be regenerated because
	at least an imported library is more recent.
	(Initialize): For each project compute the list of the projects it
	imports directly or indirectly.
	(Add_Library_Search_Dir): New procedure, used in place of
	Add_Lib_Search_Dir in procedure Scan_Make_Arg so that absolute paths are
	put in the search paths.
	(Add_Source_Search_Dir): New procedure, used in place of
	Add_Src_Search_Dir in procedure Scan_Make_Arg so that absolute paths are
	put in the search paths.
	(Mark_Directory): Resolve the absolute path the directory before marking
	it.

	* switch-m.adb (Scan_Make_Switches): Replace "raise Bad_Switch;" with
	call to new procedure Bad_Switch. Call Scan_Pos with new parameter
	Switch. Do not handle any exception.
	(Scan_Make_Switches): Increment Ptr for new switches -vl, -vm and -vh
	so that the switch is recognized as valid.
	(Scan_Make_Switches): Implement new switches -vl, -vm and -vh.

2005-11-14  GNAT Script  <nobody@adacore.com>

	* Make-lang.in: Makefile automatically updated

2005-11-14  Pascal Obry  <obry@adacore.com>

	* mdll.adb (Build_Reloc_DLL): Fix parameter handling when a map file is
	used.
	(Ada_Build_Reloc_DLL): Fix parameter handling when a map file is used.
	In both cases the last argument was dropped.

2005-11-14  Eric Botcazou  <ebotcazou@adacore.com>

	* namet.h: (Column_Numbe): New type.
	(Get_Column_Number): Define to sinput__get_column_number.
	(Instantiation): Define to sinput__instantiation.
	(Get_Column_Number): Declare.
	(Instantiation): Likewise.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* par-ch10.adb (P_Compilation_Unit): Add defenses against junk unit
	syntax, which could cause compiler hangs.

2005-11-14  Vincent Celier  <celier@adacore.com>

	* prj-ext.adb: Take into account new environment variable
	GPR_PROJECT_PATH. Warn if both GPR_PROJECT_PATH and ADA_PROJECT_PATH
	are defined.
	(Prj.Ext elaboration): For each directory in the ADA_PROJECT_PATH,
	normalize its path name, making it absolute and resolving symbolic
	links, and replace the original if resolved path is different.

2005-11-14  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Create_Virtual_Extending_Project): Put virtual project
	into Prj.Tree.Tree_Private_Part.Projects_Htable for GPS.

2005-11-14  Emmanuel Briot  <briot@adacore.com>

	* prj-pp.adb (Print): Do not output the with statement if the
	associated name is empty, which happens for virtual extending projects.
	(Print): Preserve the "extends all" attribute when printing the project.

	* prj-tree.ads (String_Value_Of): Add comment about returned value for
	a virtual extending project.

2005-11-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_aggr.adb (Resolve_Aggregate): An others choice is legal on the
	rhs of an assignment even if the type is unconstrained, when the
	context is non-expanding.
	In an inlined body, if the context type is private,
	resolve with its full view, which must be a composite type.

2005-11-14  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb: Change name Is_Package to Is_Package_Or_Generic_Package
	Do not give obsolescent warning on with of subprogram (since we
	diagnose calls)
	(Analyze_With_Clause): Add test for obsolescent package
	(Install_Context_Clauses): If the unit is the body of a child unit, do
	not install twice the private declarations of the parents, to prevent
	circular lists of Use_Clauses in a parent.
	(Implicit_With_On_Parent): Do add duplicate with_clause on parent when
	compiling body of child unit.
	Use new class N_Subprogram_Instantiation
	(Expand_With_Clause): If this is a private with_clause for a child unit,
	appearing in the context of a package declaration, then the implicit
	with_clauses generated for parent units are private as well.
	(License_Check): Do not generate message if with'ed unit is internal

2005-11-14  Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* sem_ch12.ads, sem_ch12.adb (Map_Entities): Exclude entities whose
	names are internal, because they will not have a corresponding partner
	in the actual package.
	(Analyze_Formal_Package): Move the setting of the formal package spec's
	Generic_Parent field so that it occurs prior to analyzing the package,
	to allow proper operation of Install_Parent_Private_Declarations.
	(Analyze_Package_Instantiation): Set the instantiated package entity's
	Package_Instantiation field.
	(Get_Package_Instantiation_Node): Move declaration to package spec.
	Retrieve the N_Package_Instantiation node when the Package_Instantiation
	field is present.
	(Check_Generic_Child_Unit): Within an inlined call, the only possible
	instantiation is Unchecked_Conversion, for which no parents are needed.
	(Inline_Instance_Body): Deinstall and record the use_clauses for all
	parent scopes of a scope being removed prior to inlining an instance
	body.
	(Analyze_Package_Instantiation): Do not perform front-end inlining when
	the current context is itself an instance within a non-instance child
	unit, to prevent scope stack errors.
	(Save_References): If the node is an aggregate that is an actual in a
	call, rewrite as a qualified expression to preserve some type
	information, to resolve possible ambiguities in the instance.
	(Instance_Parent_Unit): New global variable to record the ultimate
	parent unit associated with a generic child unit instance (associated
	with the existing Parent_Unit_Visible flag).
	(type Instance_Env): New component Instance_Parent_Unit for stacking
	parents recorded in the global Instance_Parent_Unit.
	(Init_Env): Save value of Instance_Parent_Unit in the Instance_Env
	stack.
	(Install_Spec): Save the parent unit entity in Instance_Parent_Unit when
	it's not a top-level unit, and only do this if Instance_Parent_Unit is
	not already set. Replace test of Is_Child_Unit with test of parent's
	scope against package Standard. Add comments and a ??? comment.
	(Remove_Parent): Revise condition for resetting Is_Immediately_Visible
	on a child instance parent to test that the parent equals
	Instance_Parent rather than simply checking that the unit is not a
	child unit.
	(Restore_Env): Restore value of Instance_Parent_Unit from Instance_Env.
	(Validate_Derived_Interface_Type_Instance): Verify that all ancestors of
	a formal interface are ancestors of the corresponding actual.
	(Validate_Formal_Interface_Type): Additional legality checks.
	(Analyze_Formal_Derived_Interface_Type): New procedure to handle formal
	interface types with ancestors.
	(Analyze_Formal_Package): If formal is a renaming, use renamed entity
	to diagnose attempts to use generic within its own declaration.

2005-11-14  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch3.ads, sem_ch3.adb (Build_Discriminal): Add link to original
	discriminant.
	(Build_Private_Derived_Type): The entity of the created full view of the
	derived type does not come from source. If after installing the private
	declarations of the parent scope the parent is still private, use its
	full view to construct the full declaration of the derived type.
	(Build_Derived_Record_Type): Relax the condition that controls the
	execution of the check that verifies that the partial view and
	the full view agree in the set of implemented interfaces. In
	addition, this test now only takes into account the progenitors.
	(Derive_Interface_Subprograms): No need to derive subprograms
	of ancestors that are interfaces.
	(Derive_Subprograms): Remove formal No_Predefined_Prims and the
	associated code.
	Change name Is_Package to Is_Package_Or_Generic_Package
	(Complete_Subprograms_Derivation): Handle the case in which the full
	view is a transitive derivation of the ancestor of the partial view.
	(Process_Full_View): Rename local subprogram Find_Interface_In_
	Descendant to Find_Ancestor_Interface to leave the code more clear.
	Remove wrong code that avoids the generation of an error message
	when the immediate ancestor of the partial view is an interface.
	In addition some minor reorganization of the code has been done to
	leave it more clear.
	(Analyze_Type_Declaration): If type has previous incomplete tagged
	partial view, inherit properly its primitive operations.
	(Collect_Interfaces): Make public, for analysis of formal
	interfaces.
	(Analyze_Interface_Declaration): New procedure for use for regular and
	formal interface declarations.
	(Build_Derived_Record_Type): Add support for private types to the code
	that checks if a tagged type implements abstract interfaces.
	(Check_Aliased_Component_Type): The test applies in the spec of an
	instance as well.
	(Access_Type_Declaration): Clean up declaration of malformed type
	declared as an access to its own classwide type, to prevent cascaded
	crash.
	(Collect_Interfaces): For private extensions and for derived task types
	and derived protected types, the parent may be an interface that must
	be included in the interface list.
	(Access_Definition): If the designated type is an interface that may
	contain tasks, create Master_Id for it before analyzing the expression
	of the declaration, which may be an allocator.
	(Record_Type_Declaration): Set properly the interface kind, for use
	in allocators, the creation of master id's for task interfaces, etc.

2005-11-14  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Check_Conformance): The null-exclusion feature can be
	omitted in case of stream attribute subprograms.
	(Check_Inline_Pragma): Handle Inline and Inline_Always pragmas that
	appear immediately after a subprogram body, when there is no previous
	subprogram declaration.
	Change name Is_Package to Is_Package_Or_Generic_Package
	(Process_Formals): A non null qualifier on a non null named access
	type is not an error, and is a warning only if Redundant_Constructs
	are flagged.

2005-11-14  Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Install_Parent_Private_Declarations): New procedure
	nested within Analyze_Package_Specification to install the private
	declarations and use clauses within each of the parent units of a
	package instance of a generic child package.
	(Analyze_Package_Specification): When entering a private part of a
	package associated with a generic instance or formal package, the
	private declarations of the parent must be installed (by calling new
	procedure Install_Parent_Private_Declarations).
	Change name Is_Package to Is_Package_Or_Generic_Package
	(Preserve_Full_Attributes): For a synchronized type, the corresponding
	record is absent in a generic context, which does not indicate a
	compiler error.

2005-11-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): In a generic context, do
	not try to rewrite a renamed stream attribute, because the operations
	on the type may not have been generated.
	Handle properly a renaming_as_body generated for a stream operation
	whose default is abstract because the object type itself is abstract.
	(Find_Type): If the type is incomplete and appears as the prefix of a
	'Class reference, it is tagged, and its list of primitive operations
	must be initialized properly.
	(Chain_Use_Clauses): When chaining the use clauses that appear in the
	private declaration of a parent unit, prior to compiling the private
	part of a child unit, find on the scope stack the proper parent entity
	on which to link the use clause.
	(Note_Redundant_Use): Emit a warning when a redundant use clause is
	detected.
	(Analyze_Object_Renaming): An attribute reference is not a legal object
	if it is not a function call.

2005-11-14  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb: Implement d.f flag
	(Subtype_Statically_Match): A generic actual type has unknown
	discriminants when the corresponding actual has a similar partial view.
	If the routine is called to validate the signature of an inherited
	operation in a child instance, the generic actual matches the full view,

2005-11-14  Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb (Resolve_Call): Provide a better error message whenever
	a procedure call is used as a select statement trigger and is not an
	entry renaming or a primitive of a limited interface.
	(Valid_Conversion): If the operand has a single interpretation do not
	remove address operations.
	(Check_Infinite_Recursion): Skip freeze nodes when looking for a raise
	statement to inhibit warning.
	(Resolve_Unary_Op): Do not produce a warning when
	processing an expression of the form -(A mod B)
	Use Universal_Real instead of Long_Long_Float when we need a high
	precision float type for the generated code (prevents gratuitous
	Vax_Float stuff when pragma Float_Representation (Vax_Float) used)
	(Resolve_Concatenation_Arg): Improve error message when argument is an
	ambiguous call to a function that returns an array.
	(Make_Call_Into_Operator, Operand_Type_In_Scope): Do not check that
	there is an implicit operator in the given scope if we are within an
	instance: legality check has been performed on the generic.
	(Resolve_Unary_Op): Apply warnings checks on argument of Abs operator
	after resolving operand, to avoid false warnings on overloaded calls.

2005-11-14  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	PR ada/15604
	* sem_type.adb (Covers): In an inlined body, a composite type matches
	a private type whose full view is a composite type.
	(Interface_Present_In_Ancestor): Protect the frontend against
	previously detected errors to ensure that its compilation
	with assertions enabled gives the same output that its
	compilation without assertions.
	(Interface_Present_In_Ancestor): Add support for private types.
	Change name In_Actual to In_Generic_Actual (clean up)
	(Disambiguate): New predicate In_Actual, to recognize expressions that
	appear in the renaming declaration generated for generic actuals, and
	which must be resolved in the outer context.

2005-11-14  Robert Dewar  <dewar@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb: Change name Is_Package to
	Is_Package_Or_Generic_Package.
	(Check_Obsolescent): New procedure.
	(Set_Is_Public): Remove obsolete junk test.
	(Set_Public_Status): Do not set Is_Public on an object whose declaration
	occurs within a handled_sequence_of_statemets.
	(Is_Controlling_Limited_Procedure): Factor some of the logic, account
	for a parameterless procedure.
	(Enter_Name): Recognize renaming declarations created for private
	component of a protected type within protected operations, so that
	the source name of the component can be used in the debugger.

2005-11-14  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sem_warn.ads, sem_warn.adb (Publicly_Referenceable): Generic formals
	of a generic subprogram are not visible outside the body.
	(Set_Warning_Switch): New procedure (code to set warning mode moved
	here from Switch.C so that it can be shared by pragma processing.
	(Check_References): Special case warning for non-modified non-imported
	volatile objects.
	* par-prag.adb: Modify processing of pragma Warnings to accomodate new
	form with a string literal argument

2005-11-14  Javier Miranda  <miranda@adacore.com>

	* s-finroo.ads, s-finroo.adb (Read): Addition of "not null" to the
	anonymous access.
	(Write): Addition of "not null" to the anonymous access.
	(Read): Addition of "not null" to the anonymous access.
	(Write): Addition of "not null" to the anonymous access.

	* s-strxdr.adb, s-stratt.ads, s-stratt.adb (I_AD, I_AS, I_B, I_C, I_F,
	I_I, I_LF, I_LI, I_LLF, I_LLI, I_LLU, I_LU, I_SF, I_SI, I_SSI, I_SSU,
	I_SU, I_U, I_WC): Addition of "not null" to the anonymous access.
	(W_AD, W_AS, W_B, W_C, W_F, W_I, W_LF, W_LI, W_LLF, W_LLI, W_LLU,
	W_LU, W_SF, W_SI, W_SSI, W_SSU, W_SU, W_U, W_WC): Addition of
	"not null" to the anonymous access.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* s-stoele.adb: Fix code for Address mod Storage_Offset for negative
	offset values

2005-11-14  Vincent Celier  <celier@adacore.com>

	* switch.adb (Bad_Switch): New procedure
	(Scan_Nat, Scan_Pos): Directly call Osint.Fail with the appropriate
	message when in error.

	* switch.ads (Bad_Switch, Bad_Switch_Value, Missing_Switch_Value,
	Too_Many_Output_Files): Remove declarations, no longer used.
	(Scan_Nat): New parameter Switch
	(Scan_Pos): Ditto
	(Bad_Switch): New procedure

	* switch-b.adb (Scan_Binder_Switches): Replace "raise Bad_Switch;"
	with call to new procedure Bad_Switch. Call Scan_Pos and Scan_Natwith
	new parameter Switch. Replace "raise Too_Many_Output_Files;" with call
	to Osint.Fail. Do not handle any exception.

2005-11-14  Vincent Celier  <celier@adacore.com>

	* tempdir.adb (Tempdir): Do not use environment variable TMPDIR if it
	designates a non existent directory.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* xgnatugn.adb: Replace invalid membership test by 'Valid

2005-11-14  Vincent Celier  <celier@adacore.com>

	* makegpr.adb (Gprmake): Do not attempt to build the global archive if
	there is no object directory.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Minor adjustment to output format, use nn instead of nnn
	(so that -gnateInnn does not run into next column)

2005-11-14  Ed Falis  <falis@adacore.com>

	* s-bitops.adb (Bits_Array): corrected comment: "unconstrained" =>
	"constrained"

2005-11-14  Cyrille Comar  <comar@adacore.com>

	* s-chepoo.ads: Add comments on Dereference.
	Remove unnecessary inherited abstract primitives.
	Cosmetic cleanup.

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* sem_cat.ads (Validate_Access_Type_Declaration): Remove declaration
	node parameter, not needed, since it is available as Declaration_Node.

2005-11-14  Geert Bosch  <bosch@adacore.com>

	* s-exnllf.adb (Exn_LLF): Fix comment to be more precise and
	grammatically correct.

2005-11-14  Vincent Celier  <celier@adacore.com>

	* s-fileio.ads: Correct spelling error in comment

2005-11-14  Cyrille Comar  <comar@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Vincent Celier  <celier@adacore.com>
	    Ben Brosgol  <brosgol@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>
	    Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi:
	Document that -fstack-check is needed for strict compliance with the
	Ada 95 Reference Manual.
	Correct reference to VAX systems to meet HP guidelines
	Add documentation for new gnatmake switches -vl, -vm and -vh
	Replace DEC Ada by HP Ada
	Replace DIGITAL by HP
	Remove empty section on tools in compatibility section
	Clarify the Windows convention semantics.
	Document the Win32 calling convention.
	The Stdcall, Win32 and DLL convention are synonyms.
	Add a note in -gnatR description about zero size record components
	Note on new >= and <= warnings for -gnatwc
	Document that equal sign after -gnatm is optional.
	Note that strip is working fine on DLL built with a Library
	Project. The restriction apply only to DLL built with gnatdll.
	Update section about the way to debug a DLL.
	Update information about the DLL convention.
	Document -C switch for gnatprep
	Document new attribute Library_ALI_Dir
	Update elaboration doc to include implicit Elaborate pragmas now
	generated for subprogram instantiations.
	Document limitation on executable names that include spaces for --GCC,
	--GNATBIND, and --GNATLINK switches.
	Document that -w causes -gnatws to be added at start of gcc switches

	* gnat_rm.texi: Document that -mieee is needed for generating infinite
	and NaN values in case of overflow on machines that are not fully
	compliant with the IEEE floating-point standard.
	Create a section describing the set of compiler options needed for
	strict compliance with the Ada 95 Reference Manual.
	Add documentation for pragma Obsolescent applied to a package
	Clarify potential issues of mixed language programs related to the
	I/O buffering enabling in the elaboration of the GNAT runtime.
	Add extra documentation for pragma Restrictions (No_Elaboration_Code)
	This documentation only patch adds extra documentsion for pragma
	Restrictions (No_Elaboration_Code), explaining why it is not possible
	to document this restriction in terms of allowed source constructs.
	Document string literal form of pragma Warnings
	Document new attribute Library_ALI_Dir
	Add documentation on stable attributes in project files that was missing

	* gnat-style.texi: Indicate that paragraphs within a single comment
	should be separated by empty comment lines

	* ug_words: Added replacements for -gnat95 and -gnat05 (/95 and
	/05 respectively)

	* bindusg.adb: Minor cleanup, put -m before -M for consistency

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* a-secain.adb, a-slcain.adb, a-shcain.adb, a-chtgke.ads, a-chtgke.adb,
	a-stwiha.adb, a-strhas.adb, a-chzla1.ads, a-chzla9.ads, a-stzbou.adb,
	a-stzbou.ads, a-stzfix.adb, a-stzhas.adb, a-stzmap.adb, a-stzmap.ads,
	a-stzsea.adb, a-stzsea.ads, a-stzsup.adb, a-stzsup.ads, a-stzunb.adb,
	a-stzunb.ads, a-szuzha.adb, a-szuzha.ads, a-szuzti.adb, a-szuzti.ads,
	a-ztcoau.adb, a-ztcoau.ads, a-ztcoio.adb, a-ztcstr.adb, a-ztcstr.ads,
	a-ztdeau.adb, a-ztdeau.ads, a-ztdeio.adb, a-ztdeio.ads, a-ztedit.adb,
	a-ztedit.ads, a-ztenau.ads, a-ztenio.adb, a-ztenio.ads, a-ztexio.adb,
	a-ztexio.ads, a-ztfiio.adb, a-ztfiio.ads, a-ztflau.adb, a-ztflau.ads,
	a-ztflio.adb, a-ztflio.ads, a-ztgeau.adb, a-ztgeau.ads, a-ztinau.adb,
	a-ztinau.ads, a-ztinio.adb, a-ztmoau.ads, a-ztmoio.adb, a-ztmoio.ads,
	a-zttest.adb, g-enblsp-vms-alpha.adb, g-enblsp-vms-alpha.adb,
	g-enblsp-vms-ia64.adb, g-enblsp-vms-ia64.adb, system-linux-hppa.ads,
	a-chacon.adb, a-chacon.ads, a-wichun.adb, a-wichun.ads, a-zchuni.adb,
	a-zchuni.ads, g-trasym-vms-alpha.adb, g-trasym-vms-ia64.adb,
	system-hpux-ia64.ads, g-soccon-unixware.ads, g-soliop-unixware.ads,
	g-soccon-interix.ads, g-soliop-solaris.ads, g-eacodu-vms.adb,
	g-expect-vms.adb, g-socthi-vms.adb, g-soliop-mingw.ads,
	a-intnam-unixware.ads, a-intnam-lynxos.ads, a-intnam-tru64.ads,
	a-intnam-aix.ads, a-intnam-linux.ads, a-intnam-linux.ads,
	a-intnam-dummy.ads, a-numaux-libc-x86.ads, a-intnam-interix.ads,
	a-intnam-solaris.ads, a-calend-vms.adb, a-calend-vms.ads,
	a-intnam-vms.ads, a-calend-mingw.adb, a-intnam-mingw.ads,
	a-intnam-vxworks.ads, a-numaux-vxworks.ads, system-unixware.ads,
	system-linux-ia64.ads, a-intnam-freebsd.ads, system-freebsd-x86.ads,
	system-lynxos-ppc.ads, system-linux-x86_64.ads, a-stunha.adb,
	a-cgaaso.ads, a-cgaaso.adb, a-chtgop.adb, a-cgcaso.adb, a-cgarso.adb,
	a-cohata.ads, a-crbtgk.adb, a-crbltr.ads, a-coprnu.adb, a-rbtgso.adb,
	a-intnam-darwin.ads, system-darwin-ppc.ads, gprmake.adb, makegpr.ads,
	system-tru64.ads, system-aix.ads, system-solaris-x86.ads,
	system-irix-o32.ads, s-interr-sigaction.adb, system-irix-n32.ads,
	s-parame-mingw.adb, system-hpux.ads, s-traceb-hpux.adb,
	system-linux-x86.ads, s-inmaop-dummy.adb, system-os2.ads,
	system-interix.ads, system-solaris-sparc.ads,
	system-solaris-sparcv9.ads, s-inmaop-vms.adb,
	s-mastop-vms.adb, expander.adb, expander.ads, s-gloloc-mingw.adb,
	system-mingw.ads, system-vms-zcx.ads, s-osinte-fsu.adb,
	s-traceb-mastop.adb, a-exextr.adb, a-exstat.adb, a-filico.ads,
	a-finali.ads, a-interr.ads, a-intsig.adb, a-intsig.ads,
	a-except.ads, a-numaux-x86.ads, a-astaco.adb, a-calend.adb,
	a-calend.ads, a-chahan.adb, a-chahan.ads, a-chlat9.ads,
	a-colien.adb, a-colien.ads, a-colire.adb, a-colire.ads,
	a-comlin.adb, a-comlin.ads, a-cwila1.ads, a-cwila9.ads,
	a-elchha.adb, a-decima.adb, a-decima.ads, a-diocst.ads,
	a-direio.adb, a-direio.ads, a-excach.adb, a-excach.adb,
	a-exctra.ads, ali-util.adb, a-ngcefu.adb, a-ngcoty.adb,
	a-ngcoty.ads, a-nudira.adb, a-nudira.ads, a-nuflra.adb,
	a-numaux.ads, a-reatim.ads, a-sequio.adb, a-sequio.ads,
	a-siocst.ads, a-ssicst.ads, a-stmaco.ads, a-storio.adb,
	a-strbou.adb, a-strbou.ads, a-stream.ads, a-strfix.adb,
	a-strmap.adb, a-strmap.ads, a-strsea.adb, a-strsea.ads,
	a-strsup.adb, a-strsup.ads, a-strunb.adb, a-strunb.ads,
	a-stwibo.adb, a-stwibo.ads, a-stwifi.adb, a-stwima.adb,
	a-stwima.ads, a-stwise.adb, a-stwise.ads, a-stwisu.adb,
	a-stwisu.ads, a-stwiun.adb, a-stwiun.ads, a-suteio.adb,
	a-suteio.ads, a-swmwco.ads, a-swuwti.adb, a-swuwti.ads,
	a-sytaco.adb, a-sytaco.ads, a-tasatt.adb, a-taside.adb,
	a-taside.ads, a-teioed.adb, a-textio.adb, a-textio.ads,
	a-ticoau.adb, a-ticoau.ads, a-ticoio.adb, a-tideau.adb,
	a-tideio.adb, a-tienau.adb, a-tienio.adb, a-tifiio.adb,
	a-tiflio.adb, a-tigeau.adb, a-tigeau.ads, a-tiinau.adb,
	a-tiinio.adb, a-timoau.adb, a-timoio.adb, a-timoio.ads,
	a-tiocst.ads, a-titest.adb, atree.adb, a-witeio.adb,
	a-witeio.ads, a-wtcoau.adb, a-wtcoau.ads, a-wtcoio.adb,
	a-wtcstr.ads, a-wtdeau.adb, a-wtdeio.adb, a-wtedit.adb,
	a-wtedit.ads, a-wtenau.adb, a-wtenio.adb, a-wtfiio.adb,
	a-wtflio.adb, a-wtgeau.adb, a-wtinau.adb, a-wtinio.adb,
	a-wtmoau.adb, a-wtmoio.adb, a-wttest.adb, back_end.adb,
	bindgen.adb, butil.adb, butil.ads, checks.ads, cio.c, comperr.adb,
	csets.ads, cstand.adb, debug.ads, elists.ads, errno.c, errout.adb,
	errout.ads, erroutc.adb, erroutc.ads, errutil.adb, errutil.ads,
	errutil.ads, err_vars.ads, eval_fat.adb, exp_ch11.adb, exp_ch11.ads,
	exp_ch2.adb, exp_ch7.ads, exp_imgv.ads, exp_pakd.adb, exp_prag.adb,
	exp_prag.ads, exp_tss.adb, exp_tss.ads, exp_vfpt.ads, fe.h, fmap.adb,
	freeze.ads, frontend.adb, frontend.ads, g-arrspl.adb, g-arrspl.ads,
	g-awk.adb, g-awk.ads, g-boumai.ads, g-calend.adb, g-calend.ads,
	g-catiio.adb, g-comlin.adb, g-comlin.ads, g-comlin.ads, g-comlin.ads,
	g-comver.adb, g-crc32.adb, g-crc32.ads, g-ctrl_c.ads, g-curexc.ads,
	g-debpoo.ads, g-debuti.adb, g-diopit.adb, g-diopit.ads, g-dirope.adb,
	g-dirope.ads, g-dyntab.adb, g-dyntab.ads, g-excact.adb, g-excact.ads,
	g-except.ads, g-exctra.adb, g-exctra.ads, g-expect.ads, g-flocon.ads,
	g-hesorg.ads, g-io.adb, g-locfil.ads, g-md5.adb, g-md5.ads, g-md5.ads,
	g-moreex.adb, g-signal.ads, g-signal.adb, gnatbind.ads, gnatchop.adb,
	gnatcmd.adb, gnatfind.adb, gnatlbr.adb, gnatmake.ads, gnatmem.adb,
	gnatprep.adb, gnatprep.ads, gnatsym.adb, gnatxref.adb, g-os_lib.adb,
	g-os_lib.ads, g-pehage.adb, g-pehage.ads, gprep.ads, g-regexp.adb,
	g-regexp.ads, g-regist.adb, g-regist.ads, g-regpat.ads, g-semaph.adb,
	g-socthi.adb, g-soliop.ads, g-spipat.adb, g-spipat.ads, g-sptabo.ads,
	g-sptain.ads, g-sptavs.ads, g-string.ads, g-tasloc.adb, g-tasloc.ads,
	g-trasym.adb, g-trasym.ads, i-fortra.adb, i-fortra.ads, inline.adb,
	layout.adb, live.adb, make.ads, makeutl.ads, makeutl.adb, mdll-fil.adb,
	mdll-fil.ads, mdll-utl.ads, memroot.ads, memtrack.adb, mlib.ads,
	mlib-fil.adb, mlib-fil.ads, mlib-prj.ads, mlib-utl.adb, mlib-utl.ads,
	nlists.adb, nlists.ads, osint.adb, osint.ads, osint-c.adb, osint-l.adb,
	osint-l.ads, osint-m.ads, output.adb, par.adb, par.adb, par.ads,
	par-ch11.adb, par-ch12.adb, par-ch2.adb, par-ch4.adb, par-ch5.adb,
	par-ch6.adb, par-ch9.adb, par-endh.adb, par-labl.adb, par-load.adb,
	par-tchk.adb, prep.adb, prepcomp.adb, prepcomp.ads, prj-attr.ads,
	prj-com.ads, prj-dect.adb, prj-dect.ads, prj-env.ads, prj-err.ads,
	prj-ext.ads, prj-makr.adb, prj-makr.ads, prj-nmsc.ads, prj-pars.adb,
	prj-pars.ads, prj-part.ads, prj-pp.ads, prj-proc.ads, prj-strt.adb,
	prj-strt.ads, prj-tree.adb, prj-util.adb, prj-util.ads, rtsfind.adb,
	sem.adb, sem.ads, sem_case.adb, sem_case.ads, sem_ch11.adb,
	sem_ch4.adb, sem_ch6.ads, sem_ch7.ads, sem_dist.ads, sem_elab.ads,
	sem_elim.ads, sem_eval.ads, sem_intr.ads, sem_maps.adb, sem_maps.ads,
	sem_maps.ads, sem_res.ads, sem_type.ads, sfn_scan.adb, sfn_scan.ads,
	s-imgwch.ads, s-imgwiu.adb, s-imgwiu.ads, s-inmaop.ads, sinput.adb,
	sinput.ads, s-pack03.adb, s-pack03.ads, s-pack05.adb, s-pack05.ads,
	s-pack06.adb, s-pack06.ads, s-pack07.adb, s-pack07.ads, s-pack09.adb,
	s-pack09.ads, s-pack10.adb, s-pack10.ads, s-pack11.adb, s-pack11.ads,
	s-pack12.adb, s-pack12.ads, s-pack13.adb, s-pack13.ads, s-pack14.adb,
	s-pack14.ads, s-pack15.adb, s-pack15.ads, s-pack17.adb, s-pack17.ads,
	s-pack18.adb, s-pack18.ads, s-pack19.adb, s-pack19.ads, s-pack20.adb,
	s-pack20.ads, s-pack21.adb, s-pack21.ads, s-pack22.adb, s-pack22.ads,
	s-pack23.adb, s-pack23.ads, s-pack24.adb, s-pack24.ads, s-pack25.adb,
	s-pack25.ads, s-pack26.adb, s-pack26.ads, s-pack27.adb, s-pack27.ads,
	s-pack28.adb, s-pack28.ads, s-pack29.adb, s-pack29.ads, s-pack30.adb,
	s-pack30.ads, s-pack31.adb, s-pack31.ads, s-pack33.adb, s-pack33.ads,
	s-pack34.adb, s-pack34.ads, s-pack35.adb, s-pack35.ads, s-pack36.adb,
	s-pack36.ads, s-pack37.adb, s-pack37.ads, s-pack38.adb, s-pack38.ads,
	s-pack39.adb, s-pack39.ads, s-pack40.adb, s-pack40.ads, s-pack41.adb,
	s-pack41.ads, s-pack42.adb, s-pack42.ads, s-pack43.adb, s-pack43.ads,
	s-pack44.adb, s-pack44.ads, s-pack45.adb, s-pack45.ads, s-pack46.adb,
	s-pack46.ads, s-pack47.adb, s-pack47.ads, s-pack48.adb, s-pack48.ads,
	s-pack49.adb, s-pack49.ads, s-pack50.adb, s-pack50.ads, s-pack51.adb,
	s-pack51.ads, s-pack52.adb, s-pack52.ads, s-pack53.adb, s-pack53.ads,
	s-pack54.adb, s-pack54.ads, s-pack55.adb, s-pack55.ads, s-pack56.adb,
	s-pack56.ads, s-pack57.adb, s-pack57.ads, s-pack58.adb, s-pack58.ads,
	s-pack59.adb, s-pack59.ads, s-pack60.adb, s-pack60.adb, s-pack60.ads,
	s-pack61.adb, s-pack61.ads, s-pack62.adb, s-pack62.ads, s-pack63.adb,
	s-pack63.ads, s-parint.adb, s-parint.adb, s-parint.ads, sprint.ads,
	s-purexc.ads, s-restri.ads, s-restri.adb, s-scaval.adb, s-scaval.ads,
	s-secsta.adb, s-secsta.ads, s-sequio.adb, s-sequio.ads, stand.ads,
	s-tasuti.adb, s-traceb.adb, s-traceb.ads, stringt.adb, stringt.ads,
	styleg.ads, s-valboo.adb, s-valboo.ads, s-valcha.adb, s-valcha.ads,
	s-valdec.adb, s-valdec.ads, s-valint.adb, s-valint.ads, s-valint.ads,
	s-vallld.adb, s-vallld.ads, s-vallli.adb, s-vallli.ads, s-valllu.adb,
	s-valllu.ads, s-valrea.adb, s-valrea.ads, s-valuns.adb, s-valuns.ads,
	s-valuti.adb, s-valuti.ads, s-valwch.ads, s-veboop.adb, s-veboop.ads,
	s-vercon.adb, s-vercon.ads, s-wchcnv.adb, s-wchcnv.ads, s-wchcon.ads,
	s-wchjis.adb, s-wchjis.ads, s-wchstw.adb, s-wchstw.adb, s-wchstw.ads,
	s-wchwts.adb, s-wchwts.ads, s-widboo.adb, s-widboo.ads, s-widcha.adb,
	s-widcha.ads, s-widenu.adb, s-widenu.ads, s-widlli.adb, s-widlli.ads,
	s-widllu.adb, s-widllu.ads, s-widwch.adb, s-widwch.ads, s-wwdcha.adb,
	s-wwdcha.ads, s-wwdenu.adb, s-wwdenu.ads, symbols.adb, symbols.ads,
	table.ads, targparm.adb, targparm.ads, tb-alvms.c, tb-alvxw.c,
	tbuild.adb, tree_io.ads, treepr.adb, treeprs.adt, ttypef.ads,
	ttypes.ads, types.adb, uintp.adb, uintp.ads, uname.ads, urealp.ads,
	usage.ads, validsw.ads, vxaddr2line.adb, widechar.adb, widechar.ads,
	xeinfo.adb, xnmake.adb, xref_lib.ads, xr_tabls.adb, xr_tabls.ads,
	xsinfo.adb, xtreeprs.adb, xsnames.adb, vms_conv.ads, vms_conv.adb,
	a-dirval.ads, a-dirval.adb, a-dirval-mingw.adb, a-direct.ads,
	a-direct.adb, indepsw.ads, prj-attr-pm.ads, system-linux-ppc.ads,
	a-numaux-darwin.ads, a-numaux-darwin.adb,
	a-swuwha.ads, a-stunha.ads: Minor reformatting

2005-11-14  Robert Dewar  <dewar@adacore.com>

	PR ada/18434
	* osint-m.adb: Add pragma Elaborate_All for Osint

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

	PR ada/23995
	* trans.c (call_to_gnu): Restore statement lost in translation.

2005-11-08  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c: Use the Linux-specific section for the IA-64/Linux target.
	(__gnat_adjust_context_for_raise): Add conditional code so that the
	IA-64 is also supported.

2005-11-03  James E Wilson  <wilson@specifix.com>

	PR ada/23427
	* trans.c (gnat_to_gnu): Use TYPE_SIZE_UNIT not TYPE_SIZE in
	TREE_OVERFLOW check.

2005-09-21  Olivier Hainque  <hainque@adacore.com>

	PR ada/22418
	* decl.c (maybe_pad_type): Use proper bitsizetype for XVZ objects,
	as we create them to store a size in bits.

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

	PR ada/21937
	PR ada/22328
	PR ada/22381
	PR ada/22383
	PR ada/22419
	PR ada/22420
	* utils2.c (build_return_expr): New helper function.
	* gigi.h (build_return_expr): Declare it.
	* trans.c (Subprogram_Body_to_gnu): Use build_return_expr instead
	of manually building the RETURN_EXPR tree.
	(call_to_gnu): Pass MODIFY_EXPR through build_binary_op.
	(gnat_to_gnu) <N_Return_Statement>: Pass MODIFY_EXPR through
	build_binary_op for the "target pointer" case.  Use build_return_expr
	instead of manually building the RETURN_EXPR tree.

2005-09-16  Laurent Guerby  <laurent@guerby.net>

	PR ada/23788
	* s-tpinop.ads: Make this unit Preelaborate.

2005-09-16  Andreas Jaeger  <aj@suse.de>

	* socket.c: Add string.h for memcpy.

2005-09-05  Arnaud Charlet  <charlet@adacore.com>

	* dec-io.ads, dec-io.adb: Removed, no longer used.

2005-09-01  Arnaud Charlet  <charlet@adacore.com>

	* a-calend-mingw.adb: Add call to OS_Primitives.Initialize;

	* s-taprop-mingw.adb, s-taprop-vms.adb, s-taprop-solaris.adb,
	s-taprop-os2.adb, s-taprop-irix-athread.adb, s-taprop-linux.adb,
	s-taprop-hpux-dce.adb, s-taprop-irix.adb, s-taprop-tru64.adb,
	s-taprop-lynxos.adb: Move with clauses outside Warnings Off now that
	dependent units are Preelaborate.
	(Initialize): Call Interrupt_Managemeent.Initialize and
	OS_Primitives.Initialize to ensure proper initialization of this unit.
	Remove use of System.Soft_Links
	Make this unit Preelaborate.

	* s-stache.ads, s-taspri-vxworks.ads, s-taspri-mingw.ads,
	s-taspri-vms.ads, s-tasinf-solaris.ads, s-taspri-os2.ads,
	s-taspri-lynxos.ads, s-taspri-hpux-dce.ads, s-taspri-tru64.ads,
	s-tasinf-tru64.ads, s-tasinf-irix.ads, s-tasinf-irix-athread.ads,
	s-proinf-irix-athread.adb, s-proinf-irix-athread.ads,
	s-tratas.ads, s-tasinf.ads: Minor reformatting.
	Add pragma Preelaborate, since these packages are suitable for this
	categorization.
	Update comments.

	* s-traent-vms.ads, s-intman-dummy.adb,
	s-taprop-dummy.adb: Make this unit Preelaborate.

	* s-osprim-vxworks.adb, s-osprim-vms.adb, s-osprim-vms.ads,
	s-osprim-mingw.adb, s-intman-vxworks.ads, s-intman-vxworks.adb,
	s-intman-vms.adb, s-intman-mingw.adb, s-intman-vms.ads,
	s-osprim-unix.adb, s-osprim-os2.adb, s-osprim-solaris.adb,
	s-intman-solaris.adb, s-intman-irix-athread.adb,
	s-intman-irix.adb: Mark this unit Preelaborate.
	(Initialize): New procedure.
	Update comments.

	* s-taspri-linux.ads: Removed.

	* s-tpopsp-solaris.adb (Initialize): Create the key in this procedure,
	as done by other implementations (e.g. posix).

	* s-taprop.ads (Timed_Delay): Update spec since the caller now is
	responsible for deferring abort.
	Mark this unit Preelaborate.

	* s-taprob.adb, s-tarest.adb: Call System.Tasking.Initialize to ensure
	proper initialization of the tasking run-time.

	* s-tasdeb.ads: Mark this unit Preelaborate.
	(Known_Tasks): Add explicit default value to avoid elaboration code.

	* s-inmaop-vms.adb (Elaboration code): Add call to
	Interrupt_Management.Initialize since the elaboration code depends on
	proper initialization of this package.

	* s-intman.ads, s-inmaop-posix.adb, s-intman-posix.adb,
	s-osprim.ads, s-taprop-posix.adb, s-taspri-posix.ads,
	s-osprim-posix.adb: Make this unit Preelaborate.

	* a-calend.adb: Add call to OS_Primitives.Initialize

	* a-elchha.adb: Update use of Except.Id.Full_Name.
	Minor reformatting.
	Remove use of Ada.Exceptions.Traceback when possible, cleaner.

	* a-dynpri.adb, a-sytaco.adb, a-sytaco.ads:
	Move with clauses outside Warnings Off now that dependent units are
	Preelaborate.
	Use raise xxx with "..."; Ada 2005 form.

	* a-taside.ads, a-taside.adb:
	Remove some dependencies, to make it easier to make this unit truly
	Preelaborate.
	Rewrite some code to be conformant with Preelaborate rules.

	* g-os_lib.adb: Remove non-preelaborate code so that this unit can be
	marked Preelaborate in the future.

	* s-proinf.ads, g-string.ads, s-auxdec.ads, s-auxdec-vms_64.ads: Make
	these units Preelaborate.

	* s-exctab.adb: Update use of Except.Id.Full_Name.

	* s-soflin.ads, s-soflin.adb: Mark this unit Preelaborate_05.
	(Set_Exc_Stack_Addr_Soft, Get_Exc_Stack_Addr_NT, Set_Exc_Stack_Addr_NT,
	Set_Exc_Stack_Addr): Removed, no longer used.
	Remove reference to *Machine_State_Addr*, no longer needed.

	* s-stalib.ads: Mark this unit as Preelaborate[_05].
	(Exception_Data): Full_Name is now a System.Address so that this unit
	can be made Preelaborate.
	Clean up/simplify code thanks to Full_Name being a System.Address.
	Remove obsolete pragma Suppress (All_Checks), no longer needed.

	* s-taskin.ads, s-taskin.adb:
	Move with clauses outside Warnings Off now that dependent units are
	Preelaborate.
	Make this unit Preelaborate.
	(Initialize): New proceduure, replace elaboration code and makes the
	set up of the tasking run-time cleaner.
	(Detect_Blocking): Now a function instead of a deferred boolean, to
	obey Preelaborate rules.

	* s-tassta.adb (Finalize_Global_Tasks): Remove Get/Set_Exc_Stack_Addr
	soft links, no longer used.

	* s-traces.ads, s-traent.ads: Add pragma Preelaborate, since these
	packages are suitable for this categorization.

	* s-solita.adb: Replace use of Ada.Exception by raise xxx with "..."
	since we compile run-time sources in Ada 2005 mode.
	(Timed_Delay_T): Call Abort_Defer/Undefer around Timed_Delay, to
	avoid having s-taprop*.adb depend on s-soflin and to avoid code
	duplication.
	Remove reference to *Machine_State_Addr*, no longer needed.

2005-09-01  Arnaud Charlet  <charlet@adacore.com>

	* s-mastop-tru64.adb, s-mastop-irix.adb, s-mastop-vms.adb
	(Enter_Handler, Set_Signal_Machine_State): Removed, no longer used.
	Remove reference to System.Exceptions.

	* s-mastop-x86.adb: Removed, no longer used.

	* s-traceb-mastop.adb: Adjust calls to Pop_Frame.

	* a-excach.adb: Minor reformatting.

	* a-except.ads, a-except.adb: Remove global Warnings (Off) pragma, and
	instead fix new warnings that were hidden by this change.
	(AAA, ZZZ): Removed, replaced by...
	(Code_Address_For_AAA, Code_Address_For_ZZZ): ... these functions, who
	are used instead of constants, to help make Ada.Exception truly
	preelaborate.
	(Rcheck_*, Raise_Constraint_Error, Raise_Program_Error,
	Raise_Storage_Error): File is now a System.Address, to simplify code.
	(Elab code): Removed, no longer used.
	(Null_Occurrence): Remove Warnings Off and make this construct
	preelaborate.
	Remove code related to front-end zero cost exception handling, since
	it is no longer used.
	Remove -gnatL/-gnatZ switches.

	* a-exexda.adb (Append_Info_Exception_Name, Set_Exception_C_Msg):
	Update use of Except.Msg.

	* gnat1drv.adb, inline.adb, bindgen.adb, debug.adb, exp_ch11.ads,
	freeze.adb, frontend.adb, lib.adb, exp_ch11.adb: Remove code related
	to front-end zero cost exception handling, since it is no longer used.
	Remove -gnatL/-gnatZ switches.

	* lib-writ.ads: Minor reformatting
	Remove doc of UX

	* Makefile.rtl: Remove references to s-except*, s-mastop-x86*

	* Make-lang.in: Remove references to s-except.ads

	* s-except.ads: Removed, no longer used.

	* s-mastop.ads, s-mastop.adb:
	(Enter_Handler, Set_Signal_Machine_State): Removed, no longer used.
	Remove reference to System.Exceptions.

	* raise.h, usage.adb, targparm.adb, targparm.ads, switch-m.adb,
	switch-b.adb: Remove code related to front-end zero cost exception
	handling, since it is no longer used.
	Remove -gnatL/-gnatZ switches.

2005-09-01  Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* exp_ch4.adb (Expand_N_In): Replace test of expression in its own
	type by valid test and generate warning.
	(Tagged_Membership): Generate call to the run-time
	subprogram IW_Membership in case of "Iface_CW_Typ in Typ'Class"
	Change formal name Subtype_Mark to Result_Definition in several calls to
	Make_Function_Specification.
	(Expand_Allocator_Expression): Add tests for suppression of the AI-344
	check for proper accessibility of the operand of a class-wide allocator.
	The check can be left out if checks are suppressed or if the expression
	has a specific tagged type whose level is known to be safe.

	* exp_ch5.adb (Expand_N_Assignment_Statement): Simplify the code that
	generates the run-time check associated with null-excluding entities.
	(Expand_N_Return_Statement): Add tests to determine if the accessibility
	check on the level of the return expression of a class-wide function
	can be elided. The check usually isn't needed if the expression has a
	specific type (unless it's a conversion or a formal parameter). Also
	add a test for whether accessibility checks are suppressed. Augment
	the comments to describe the conditions for performing the check.

2005-09-01  Hristian Kirtchev  <kirtchev@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* a-tags.adb (IW_Membership): Give support to
	"Iface_CW_Typ in T'Class". For this purpose the functionality of this
	subprogram has been extended to look for the tag in the ancestors tag
	table.
	Update the structure of the GNAT Dispatch Table to reflect the
	additional two tables used in dispatching selects.
	Introduce appropriate array types and record components in
	Type_Specific_Data to reflect the two tables.
	(Get_Entry_Index, Set_Entry_Index): Retrieve and set the entry index in
	the TSD of a tag, indexed by position.
	(Get_Prim_Op_Kind, Set_Prim_Op_Kind): Retrieve and set the primitive
	operation kind in the TSD of a tag, indexed by position.

	* a-tags.ads: Introduce an enumeration type to capture different
	primitive operation kinds. Define a constant reflecting the number of
	predefined primitive operations.
	(Get_Entry_Index, Set_Entry_Index): Set and retrieve the entry index
	of an entry wrapper.
	(Get_Prim_Op_Kind, Set_Prim_Op_Kind): Set and retrieve the kind of
	callable entity of a primitive operation.

	* exp_ch3.adb (Freeze_Record_Type): Generate the declarations of the
	primitive operations used in dispatching selects for limited
	interfaces, limited tagged, task and protected types what implement a
	limited interface.
	(Freeze_Type): Generate the bodies of the primitive operations used in
	dispatching selects for limited tagged, task and protected types that
	implement a limited interface. Generate statements to populate the two
	auxiliary tables used for dispatching in select statements.
	(Freeze_Record_Type): Add call to initialize the dispatch table entries
	associated with predefined interface primitive operations.
	(Build_Dcheck_Function): Change Set_Subtype_Mark to
	Set_Result_Definition.
	(Build_Variant_Record_Equality): Change Subtype_Mark to
	Result_Definition.
	(Freeze_Enumeration_Type): Change Subtype_Mark to Result_Definition.
	(Predef_Spec_Or_Body): Change Subtype_Mark to Result_Definition.
	(Build_Assignment): Simplify the code that adds the run-time-check.
	(Expand_N_Object_Declaration): Code cleanup.

	* exp_ch7.adb (Make_Clean): Select the appropriate type for locking
	entries when there is a protected type that implements a limited
	interface.

	* exp_ch9.adb: Add package Select_Expansion_Utilities that contains
	common routines used in expansion of dispatching selects.
	(Add_Private_Declarations): Select the appropriate protection type when
	there is a protected type that implements a limited interface.
	(Build_Parameter_Block): Generate a wrapped parameter block.
	(Build_Protected_Subprogram_Body): Select the appropriate type for
	locking entries when there is a protected type that implements a
	limited interface.
	(Build_Wrapper_Spec): Set the flag and wrapped entity for procedures
	classified as entry wrappers.
	(Expand_N_Asynchronous_Select): Add support for expansion of dispatching
	asynchronous selects.
	(Expand_N_Conditional_Entry_Call): Add support for expansion of
	dispatching conditional selects.
	(Expand_N_Protected_Type_Declaration): Select the appropriate type for
	protection when there is a protected type that implements limited
	interfaces.
	(Expand_N_Timed_Entry_Call): Add support for expansion of dispatching
	timed selects.
	(Extract_Dispatching_Call): Extract the entity of the name of a
	dispatching call, the object parameter, actual parameters and
	corresponding formals.
	(Make_Initialize_Protection): Correct logic of protection initialization
	when there is a protected type that implements a limited interface.
	(Parameter_Block_Pack): Populate a wrapped parameter block with the
	values of actual parameters.
	(Parameter_Block_Unpack): Retrieve the values from a wrapped parameter
	block and assign them to the original actual parameters.

	* exp_ch9.ads (Subprogram_Protection_Mode): New type.
	(Build_Protected_Sub_Specification): Change the type and name of the
	last formal to account for the increased variety of protection modes.

	* einfo.ads, einfo.adb (Was_Hidden): New attribute. Present in all
	entities. Used to save the value of the Is_Hidden attribute when the
	limited-view is installed.
	(Is_Primitive_Wrapper, Set_Is_Primitive_Wrapper): Retrieve and change
	the attribute of procedures classified as entry wrappers.
	(Wrapped_Entity, Set_Wrapped_Entity): Retrieve and change the wrapped
	entity of a primitive wrapper.
	(Write_Entity_Flags): Output the name and value of the
	Is_Primitive_Wrapper attribute.
	(Write_Field27_Name): Output the name and entity of the field Wrapped_
	Entity.
	(Underlying_Type): If we have an incomplete entity that comes from
	the limited view then we return the Underlying_Type of its non-limited
	view if it is already available.
	(Abstract_Interface_Alias): Flag applies to all subrogram kinds,
	including operators.
	(Write_Field26_Name): Add entry for Overridden_Operation
	(Overridden_Operation): New attribute of functions and procedures.

	* exp_disp.ads, exp_disp.adb (Default_Prim_Op_Position): Return a
	predefined position in the dispatch table for the primitive operations
	used in dispatching selects.
	(Init_Predefined_Interface_Primitives): Remove the hardcoded number of
	predefined primitive operations and replace it with
	Default_Prim_Op_Count.
	(Make_Disp_Asynchronous_Select_Spec, Make_Disp_Conditional_Select_Spec,
	Make_Disp_Get_Prim_Op_Kind_Spec, Make_Disp_Timed_Select_Spec): Update
	the names of the generated primitive operations used in dispatching
	selects.
	(Init_Predefined_Interface_Primitives): No need to inherit primitives in
	case of abstract interface types. They will be inherit by the objects
	implementing the interface.
	(Make_DT): There is no need to inherit the dispatch table of the
	ancestor interface for the elaboration of abstract interface types.
	The dispatch table will be inherited by the object implementing the
	interface.
	(Copy_Secondary_DTs): Add documentation.
	(Validate_Position): Improve this static check in case of
	aliased subprograms because aliased subprograms must have
	the same position.
	(Init_Predefined_Interface_Primitives): New subprogram that initializes
	the entries associated with predefined primitives of all the secondary
	dispatch tables.
	(Build_Anonymous_Access_Type): Removed.
	(Expand_Interface_Actuals): With the previous cleanup there is no need
	to build an anonymous access type. This allows further cleanup in the
	code generated by the expander.
	(Expand_Interface_Conversion): If the actual is an access type then
	build an internal function to handle the displacement. If the actual
	is null this function returns null because no displacement is
	required; otherwise performs a type conversion that will be
	expanded in the code that returns the value of the displaced actual.
	(Expand_Interface_Actuals): Avoid the generation of unnecessary type
	conversions that have no effect in the generated code because no
	displacement is required. Code cleanup; use local variables to
	avoid repeated calls to the subprogram directly_designated_type().

	* exp_util.ads, exp_util.adb (Is_Predefined_Dispatching_Operation):
	Classify the primitive operations used in dispatching selects as
	predefined.
	(Implements_Limited_Interface): Determine whether some type either
	directly implements a limited interface or extends a type that
	implements a limited interface.
	(Build_Task_Image_Function): Change Subtype_Mark to Result_Definition.
	(Expand_Subtype_From_Expr): Do not build actual subtype if the
	expression is limited.
	(Find_Interface_Tag): Add code to handle class-wide types and
	entities from the limited-view.

	* rtsfind.ads: Add entries in RE_Id and RE_Unit_Table for
	Get_Entry_Index, Get_Prim_Op_Kind, POK_Function, POK_Procedure,
	POK_Protected_Entry, POK_Protected_Function, POK_Protected_Procedure,
	POK_Task_Entry, POK_Task_Procedure, Prim_Op_Kind, Set_Entry_Index,
	Set_Prim_Op_Kind.

	* sem_ch9.adb (Analyze_Triggering_Alternative): Check for legal type
	of procedure name or prefix that appears as a trigger in a triggering
	alternative.

	* uintp.ads: Introduce constants Uint_11 and Uint_13.

2005-09-01  Arnaud Charlet  <charlet@adacore.com>

	* s-tataat.adb, a-tasatt.adb:
	Replace calls to Defer/Undefer_Abortion by Defer/Undefer_Abort.

	* s-tasini.ads, s-tasini.adb (Defer_Abortion, Undefer_Abortion): Moved
	these procedures to body, and renamed Abort_Defer, Abort_Undefer.
	(Get_Exc_Stack_Addr, Set_Exc_Stack_Addr): Removed, no
	longer used.

2005-09-01  Arnaud Charlet  <charlet@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-vxworks.adb:
	Move with clauses outside Warnings Off now that dependent units are
	Preelaborate.
	(Initialize): Call Interrupt_Managemeent.Initialize to ensure proper
	initialization of this unit.
	(Specific): Add new procedures Initialize and Delete so that this
	package can be used for VxWorks 5.x and 6.x
	(ATCB_Key, ATCB_Key_Address): Moved to Specific package body to hide
	differences between VxWorks 5.x and 6.x
	Minor reformatting.
	(Timed_Delay): Remove calls to Defer/Undefer_Abort, now performed by
	caller.
	Use only Preelaborate-compatible constructs.

	* s-tpopsp-vxworks.adb (ATBC_Key, ATCB_Key_Addr): Moved from
	Primitives.Operations.
	(Delete, Initialize): New procedures.

	* s-osinte-vxworks.adb: Body used to handle differences between
	VxWorks 5.x and 6.x
	(kill, Set_Time_Slice, VX_FP_TASK): New functions.

	* s-osinte-vxworks.ads: Minor reformatting.
	Add VxWworks 6.x specific functions (only called from VxWorks 6 files).
	(VX_FP_TASK): Now a function, to handle differences between VxWorks 5
	and 6.
	(Set_Time_Slice): New function, replacing kerneltimeSlice to share code
	between Vxworks 5 and 6.
	(taskLock, taskUnlock): Removeed, no longer used.

	* adaint.c: The wait.h header is not located in the sys directory on
	VxWorks when using RTPs.
	(__gnat_set_env_value): Use setenv instead of putenv on VxWorks when
	using RTPs.
	(__gnat_dup): dup is available on Vxworks when using RTPs.
	(__gnat_dup2): dup2 is available on Vxworks when using RTPs.

	* cal.c: Use the header time.h for Vxworks 6.0 when using RTPs.

	* expect.c: The wait.h header is not located in the sys directory on
	VxWorks when using RTPs.

2005-09-01  Thomas Quinot  <quinot@adacore.com>

	* g-soccon-vms.adb: Renamed to g-soccon-vms.ads

	* g-soccon-vms.ads: Renamed from g-soccon-vms.adb

	* g-soccon.ads, g-soccon-tru64.ads, g-soccon-aix.ads,
	g-soccon-darwin.ads, g-soccon-irix.ads, g-soccon-hpux.ads,
	g-soccon-solaris.ads, g-soccon-mingw.ads, g-soccon-vxworks.ads,
	g-soccon-freebsd.ads: Add new constants:
	 IP_MULTICAST_IF
	 SO_RCVTIMEO/SO_SNDTIMEO
	 IOV_MAX

	* gen-soccon.c:
	Move all target-specific file inclusions and macro definitions to
	gsocket.h, in order to ensure that any C code in socket.c will see a
	set of constants that is consistent with the contents of g-soccon.ads.

	* gsocket.h: Code imported from gen-soccon.c:
	Move all target-specific file inclusions and macro definitions to
	gsocket.h, in order to ensure that any C code in socket.c will see a set
	of constants that is consistent with the contents of g-soccon.ads.
	This change also makes gen-soccon self-contained (removing dependencies
	upon GCC internal headers).

	* g-socket.adb (Send_Vector): Make calls to Writev at most IOV_MAX
	iovecs at a time.
	(To_Inet_Addr): Now a procedure instead of a function, more efficient.

	* socket.c: Minor reformatting.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* fname-sf.adb, mlib-tgt.ads,
	back_end.adb, casing.adb, g-debpoo.adb, g-excact.adb, g-spipat.adb,
	g-spipat.ads, g-thread.adb, lib-list.adb, makeutl.adb, mlib.adb,
	osint.adb, par-ch10.adb, par-load.adb, prep.adb, prj.adb, prj-attr.ads,
	prj-env.ads, prj-err.adb, prj-err.ads, prj-ext.adb, prj-ext.ads,
	prj-makr.adb, prj-makr.ads, prj-pars.ads, prj-part.adb, prj-strt.adb,
	prj-tree.ads, prj-util.ads, sem_dist.adb, sinput-c.ads, sinput-l.ads,
	sinput-p.ads, styleg-c.ads, xr_tabls.adb, prj-attr-pm.ads,
	makegpr.adb: Remove redundant use_clauses.

2005-09-01  Arnaud Charlet  <charlet@adacore.com>

	* s-stoele.ads, s-stopoo.ads, s-stratt.ads, s-strops.ads, s-unstyp.ads,
	s-valboo.ads, s-valcha.ads, s-valdec.ads, s-valenu.ads, s-valint.ads,
	s-vallld.ads, s-vallli.ads, s-valllu.ads, s-valrea.ads, s-valuns.ads,
	s-valuti.ads, s-valwch.ads, s-veboop.ads, s-vector.ads, s-vercon.ads,
	s-wchcnv.ads, s-wchcon.ads, s-wchjis.ads, s-wchstw.ads, s-wchwts.ads,
	s-widboo.ads, s-widcha.ads, s-widenu.ads, s-widlli.ads, s-widllu.ads,
	s-widwch.ads, s-wwdcha.ads, s-wwdenu.ads, s-wwdwch.ads, system.ads,
	table.ads, types.ads, system-vms_64.ads, s-crtl-vms64.ads,
	s-addope.ads, system-darwin-ppc.ads, system-vxworks-x86.ads,
	s-vxwork-x86.ads, system-linux-ppc.ads, i-vxwork-x86.ads,
	a-numaux-darwin.ads, a-crbtgo.ads, a-crbtgk.ads, a-crbltr.ads,
	a-coprnu.ads, a-convec.ads, a-contai.ads, a-coinve.ads, a-cohata.ads,
	a-cohama.ads, a-cihama.ads, a-cidlli.ads, a-cdlili.ads,
	a-numaux-libc-x86.ads, a-numaux-vxworks.ads, system-linux-ia64.ads,
	system-freebsd-x86.ads, system-unixware.ads, system-lynxos-ppc.ads,
	system-lynxos-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
	s-vxwork-alpha.ads, system-aix.ads, system-vxworks-sparcv9.ads,
	system-solaris-x86.ads, system-irix-o32.ads, system-irix-n32.ads,
	s-parame-hpux.ads, system-hpux.ads, system-vxworks-m68k.ads,
	s-vxwork-m68k.ads, system-linux-x86.ads, system-vxworks-mips.ads,
	s-vxwork-mips.ads, system-os2.ads, system-interix.ads,
	s-vxwork-ppc.ads, system-solaris-sparc.ads, s-vxwork-sparcv9.ads,
	system-solaris-sparcv9.ads, s-parame-vms.ads, system-vms.ads,
	s-osinte-mingw.ads, system-mingw.ads, s-parame-vms-restrict.ads,
	system-vms-zcx.ads, s-parame-ae653.ads, system-vxworks-ppc.ads,
	s-parame-vxworks.ads, system-vxworks-alpha.ads, interfac-vms.ads,
	a-numaux-x86.ads, a-astaco.ads, a-chahan.ads, a-charac.ads,
	a-chlat1.ads, a-chlat9.ads, a-colire.adb, a-colire.ads, a-comlin.ads,
	a-cwila1.ads, a-cwila9.ads, ada.ads, a-decima.ads, a-exextr.adb,
	a-filico.ads, a-finali.ads, a-interr.ads, a-ioexce.ads, a-dynpri.ads,
	a-ngcefu.ads, a-ngcefu.adb, a-ngcoty.adb, a-ngcoty.ads, a-ngelfu.ads,
	a-nudira.adb, a-nudira.ads, a-nuflra.adb, a-numaux.ads, a-numeri.ads,
	a-reatim.adb, a-stmaco.ads, a-storio.ads, a-strbou.ads, a-stream.ads,
	a-strfix.ads, a-string.ads, a-strmap.ads, a-strsea.ads, a-strsup.ads,
	a-strunb.ads, a-stunau.ads, a-stwibo.ads, a-stwifi.ads, a-stwima.ads,
	a-stwise.ads, a-stwisu.ads, a-stwiun.ads, a-swmwco.ads, a-textio.ads,
	csets.ads, debug.ads, dec.ads, g-curexc.ads, get_targ.ads,
	g-except.ads, system-linux-hppa.ads, a-chacon.ads, a-widcha.ads,
	a-zchara.ads, system-hpux-ia64.ads, a-ciorma.ads, a-coorma.ads,
	a-ciormu.ads, a-coormu.ads, a-rbtgso.ads, a-chzla1.ads, a-chzla9.ads,
	a-stzbou.ads, a-stzfix.ads, a-stzmap.ads, a-stzsea.ads, a-stzsup.ads,
	a-stzunb.ads, a-swunau.ads, a-szunau.ads, gnat.ads, g-regpat.ads,
	g-speche.ads, g-spitbo.ads, g-table.ads, g-tasloc.ads, g-trasym.ads,
	i-c.ads, i-cpoint.ads, i-cpp.ads, i-cstrin.ads, i-fortra.ads,
	interfac.ads, i-os2err.ads, i-os2lib.ads, i-os2syn.ads, i-os2thr.ads,
	i-vxwork.ads, output.ads, s-arit64.ads, s-atacco.ads, s-boarop.ads,
	s-casuti.ads, s-crtl.ads, s-exctab.ads, s-exnint.ads, s-exnllf.ads,
	s-exnlli.ads, s-expint.ads, s-explli.ads, s-expllu.ads, s-expmod.ads,
	s-expuns.ads, s-fatflt.ads, s-fatgen.ads, s-fatlfl.ads, s-fatllf.ads,
	s-fatsfl.ads, s-finimp.ads, s-finroo.ads, s-fore.ads, s-geveop.ads,
	s-htable.ads, s-imgbiu.ads, s-imgboo.ads, s-imgcha.ads, s-imgdec.ads,
	s-imgenu.ads, s-imgint.ads, s-imgllb.ads, s-imglld.ads, s-imglli.ads,
	s-imgllu.ads, s-imgllw.ads, s-imgrea.ads, s-imguns.ads, s-imgwch.ads,
	s-imgwiu.ads, s-io.ads, s-maccod.ads, s-mantis.ads, s-memcop.ads,
	s-pack03.ads, s-pack05.ads, s-pack06.ads, s-pack07.ads, s-pack09.ads,
	s-pack10.ads, s-pack11.ads, s-pack12.ads, s-pack13.ads, s-pack14.ads,
	s-pack15.ads, s-pack17.ads, s-pack18.ads, s-pack19.ads, s-pack20.ads,
	s-pack21.ads, s-pack22.ads, s-pack23.ads, s-pack24.ads, s-pack25.ads,
	s-pack26.ads, s-pack27.ads, s-pack28.ads, s-pack29.ads, s-pack30.ads,
	s-pack31.ads, s-pack33.ads, s-pack34.ads, s-pack35.ads, s-pack36.ads,
	s-pack37.ads, s-pack38.ads, s-pack39.ads, s-pack40.ads, s-pack41.ads,
	s-pack42.ads, s-pack43.ads, s-pack44.ads, s-pack45.ads, s-pack46.ads,
	s-pack47.ads, s-pack48.ads, s-pack49.ads, s-pack50.ads, s-pack51.ads,
	s-pack52.ads, s-pack53.ads, s-pack54.ads, s-pack55.ads, s-pack56.ads,
	s-pack57.ads, s-pack58.ads, s-pack59.ads, s-pack60.ads, s-pack61.ads,
	s-pack62.ads, s-pack63.ads, s-parame.ads, s-pooglo.ads, s-pooloc.ads,
	s-poosiz.ads, s-powtab.ads, s-purexc.ads, s-sopco3.ads, s-sopco4.ads,
	s-sopco5.ads: Minor reformatting: reindent pragma Pure/Preelaborate
	and always use the no parameter form for consistency.

	* gnat-style.texi: Document rules about Preelaborate/Pure pragmas.

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* binde.adb: Minor reformatting
	(Find_Elab_Order): Output warning if -p used with static elab order

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Check_Needed): New procedure, deals with removing checks
	based on analysis of short-circuited forms. Also generates warnings for
	improper use of non-short-circuited forms.
	Code clean ups.

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* a-ztexio.adb, a-textio.adb, a-witeio.adb: Replace bad range checks
	with 'Valid tests.

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* errout.ads, errout.adb (Fix Error_Msg_F): Fix implementation to meet
	spec.
	Implement new insertion char < (conditional warning)
	* errutil.adb, erroutc.adb: Implement new insertion char <
	(conditional warning).
	* sem_elab.adb, prj-dect.adb, erroutc.ads, err_vars.ads
	(Error_Msg_Warn): New variable for < insertion char.
	* prj-nmsc.adb: Implement new errout insertion char < (conditional
	warning).
	(Check_For_Source): Change value of Source_Id only after the current
	source has been dealt with.

2005-09-01  Robert Dewar  <dewar@adacore.com>
	    Doug Rupp  <rupp@adacore.com>

	* exp_attr.adb: Handle vax fpt for 'Valid attribute
	* exp_vfpt.ads, exp_vfpt.adb: (Expand_Vax_Valid): New procedure
	* s-vaflop-vms-alpha.adb, s-vaflop.ads, s-vaflop.adb
	(Valid_D, Valid_F, Valid_G): New functions

2005-09-01  Ed Schonberg  <schonberg@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* exp_ch6.adb (Expand_Call): If an actual is a function call rewritten
	from object notation, the original node is unanalyzed and carries no
	semantic information, so that accessiblity checks must be performed on
	the type of the actual itself.
	(Expand_N_Subprogram_Declaration): Change last actual parameter for
	compatibility with Build_Protected_Sub_Specification.
	(Check_Overriding_Inherited_Interfaces): Add suport to handle
	overloaded primitives.
	(Register_Interface_DT_Entry): Use the new name of the formal
	the the calls to Expand_Interface_Thunk

	* exp_dbug.ads: Augment comments on encoding of protected types to
	include the generation of dispatching subprograms when the type
	implements at least one interface.

	* lib.ads: Extend information in Load_Stack to include whether a given
	load comes from a Limited_With_Clause.

	* lib-load.adb (From_Limited_With_Chain): New predicate to determine
	whether a potential circularity is harmless, because it includes units
	loaded through a limited_with clause. Extends previous treatment which
	did not handle properly arbitrary combinations of limited and
	non-limited clauses.

2005-09-01  Nicolas Setton  <setton@adacore.com>

	* exp_dbug.adb (Get_Encoded_Name): Fixed bug that caused biaised types
	to be encoded as typ___XBLU_lowerbound__upperbound instead of
	typ___XB_lowerbound__upperbound.

2005-09-01  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Add_RACW_TypeCode, Add_RAS_TypeCode): Do not generate
	dummy access formal for RACW/RAS TypeCode TSS.
	(Build_TypeCode_Call): Do not generate dummy null access actual for
	calls to the TypeCode TSS.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb (Expand_Source_Name): For Enclosing_Entity, generate
	fully qualified name, to distinguish instances with the same local name.

	* g-souinf.ads (Enclosing_Entity): Document that entity name is now
	fully qualified.

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* exp_pakd.adb (Create_Packed_Array_Type): Properly handle very large
	packed arrays.

2005-09-01  Jerome Lambourg  <lambourg@adacore.com>

	* g-expect.adb (Non_Blocking_Spawn): Initialize the filters field to
	(Free): New deallocation procedure for filter elements
	(Close): Deallocate any existing filter for the concerned connection

2005-09-01  Laurent Pautet  <pautet@adacore.com>

	* g-pehage.ads, g-pehage.adb (Select_Char_Position): When no character
	position set is provided, we compute one in order to reduce the maximum
	length of the keys.  This computation first selects a character
	position between 1 and the minimum length of the keys in order to
	avoid reducing one of the keys to an empty string.
	(Initialize, Compute): When the ratio V to K is too low, the algorithm
	does not converge. The initialization procedure now comes with a
	maximum number of iterations such that when exceeded, an exception is
	raised in Compute. The user can initialize this ratio to another value
	and try again
	Reformating and updated headers.

2005-09-01  Javier Miranda  <miranda@adacore.com>

	* itypes.ads, itypes.adb (Create_Null_Excluding_Itype): New subprogram
	that given an entity T creates and returns an Itype that duplicates the
	contents of T. The returned Itype has the null-exclusion
	attribute set to True, and its Etype attribute references T
	to keep the association between the two entities.
	Update copyright notice

	* sem_aggr.adb (Check_Can_Never_Be_Null,
	Aggregate_Constraint_Checks, Resolve_Aggregate,
	Resolve_Array_Aggregate, Resolve_Record_Aggregate): Code cleanup.

	* sem_ch5.adb (Analyze_Assignment): Code cleanup.

2005-09-01  Gary Dismukes  <dismukes@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* layout.adb (SO_Ref_From_Expr): Change Subtype_Mark to
	Result_Definition.

	* par-ch6.adb (P_Subprogram): Handle parsing of Access_Definitions in
	function specs.
	Call Set_Result_Definition instead of Set_Subtype_Mark.
	(P_Subprogram_Specification): Add parsing of anonymous access result
	plus null exclusions. Call Set_Result_Definition instead of
	Set_Subtype_Mark.

	* par-ch3.adb: Add support for LIMITED NEW for Ada 2005 AI-419
	(P_Access_Type_Definition): Add parsing for an anonymous access result
	subtype, plus parsing for null exclusions. Call Set_Result_Definition
	instead of Set_Subtype_Mark.

	* sinfo.adb: Add support for LIMITED NEW for Ada 2005 AI-419
	(Null_Exclusion_Present): Allow this flag for N_Function_Specification.
	(Result_Definition): New function for N_Function_Specifications.
	(Subtype_Mark): No longer allowed for N_Access_Function_Definition and
	N_Function_Specification.
	(Set_Null_Exclusion_Present): Allow this flag for
	N_Function_Specification.
	(Set_Result_Definition): New procedure for N_Function_Specifications.
	(Set_Subtype_Mark): No longer allowed for N_Access_Function_Definition
	and N_Function_Specification.

	* sinfo.ads: Update grammar rules for 9.7.2: Entry_Call_Alternative,
	Procedure_Or_Entry_Call; 9.7.4: Triggering_Statement.
	Add support for LIMITED NEW for Ada 2005 AI-419
	Update the syntax of PARAMETER_AND_RESULT_PROFILE to reflect the new
	syntax for anonymous access results.
	Replace Subtype_Mark field by Result_Definition in
	N_Function_Specification and N_Access_Definition specs.
	Add Null_Exclusion_Present to spec of N_Function_Specification.
	(Result_Definition): New function for N_Function_Specification and
	N_Access_Function_Definition.
	(Set_Result_Definition): New procedure for N_Function_Specification and
	N_Access_Function_Definition.

	* sprint.adb (S_Print_Node_Actual): Change Subtype_Mark calls to
	Result_Definition for cases of N_Access_Function_Definition and
	N_Function_Specification.
	Print "not null" if Null_Exclusion_Present on N_Function_Specification.

2005-09-01  Vincent Celier  <celier@adacore.com>

	* lib-writ.adb: Update Copyright notice
	(Write_With_Lines): On platforms where file names are case-insensitive,
	record the file names in lower case.
	(Write_ALI): For D lines, on platforms where file names are
	case-insensitive, record the file names in lower case.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>
	    Emmanuel Briot  <briot@adacore.com>

	* lib-xref.adb (Output_Overridden_Op): Display information on
	overridden operation.

	* lib-xref.ads: Add documentation on overridden operations.

	* ali.ads (Xref_Entity_Record): Add support for storing the overriding
	information.

	* ali.adb (Get_Typeref): New subprogram. Adds support for parsing the
	overriding entity information.

2005-09-01  Vincent Celier  <celier@adacore.com>

	* mlib-prj.adb (Copy_Interface_Sources): Copy all interface sources,
	including those that are inherited.

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* opt.ads, opt.adb: Add new switches Debug_Pragmas_Enabled[_Config]

	* par-prag.adb: Implement new pragma Debug_Policy

	* sem_prag.adb Implement new pragma Debug_Policy
	(Analyze_Pragma, case Pack): do not let pragma Pack override an explicit
	Component_Size attribute specification. Give warning for ignored pragma
	Pack.

	* snames.h, snames.ads, snames.adb: Introduce entries in
	Preset_Names for Name_Disp_Asynchronous_Select,
	Name_Disp_Conditional_Select, Name_Disp_Get_Prim_Op_Kind,
	Name_Disp_Timed_Select.
	New pragma Debug_Policy

	* switch-c.adb (Scan_Front_End_Switches): Set Ada 2005 mode
	explicitly.
	Switch -gnata also sets Debug_Pragmas_Enabled

	* sem.adb, par.adb (Set_Opt_Config_Switch): Add parameter Main_Unit to
	handle an explicit -gnata when compiling predefined files.

2005-09-01  Vincent Celier  <celier@adacore.com>

	* prj-env.adb (Set_Ada_Paths.Add.Recursive_Add): Do not add the object
	directories of projects that have no Ada sources.

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Check_End_Of_Line): Count characters, rather than bytes
	(makes a difference for wide characters)

	* widechar.adb, widechar.ads:
	Add Wide_Char_Byte_Count feature to count chars vs bytes

2005-09-01  Thomas Quinot  <quinot@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sem_attr.adb (Resolve_Attribute, case 'Address): For an illegal
	'Address attribute reference with an overloaded prefix, use the
	location of the prefix (not the location of the attribute reference) as
	the error location.
	(Analyze_Attribute, case 'Size): The name of an enumeration literal, or
	a function renaming thereof, is a valid prefix for 'Size (where it is
	intepreted as a function call).
	(Statically_Denotes_Entity): New predicate to determine whether the
	prefix of an array attribute can be considered static.

	PR ada/9087
	(Eval_Attr): Fix failure to evaluate Component_Size for
	unconstrained arrays (resulted in wrong value in packed case, since
	back end cannot handle this case)

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* sem_cat.adb (Check_Categorization_Dependencies): Add more detail to
	error msgs for most common cases.
	Use new errout insertion char < (conditional warning)

2005-09-01  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (In_Chain): Moved from the scope of a subprogram to
	become local to the whole package.
	(Install_Limited_Withed_Unit): Instead of unchaining real entities if
	the package was already analyzed the new algorithm "replaces" the
	real entities by the shadow ones. This is required to ensure that
	the order of these entities in the homonym chains does not change;
	otherwise we can have undefined references at linking time because
	in case of conflicts the external name of the entities will have
	a suffix that depends on the order of the entities in the chain.
	(Remove_Limited_With_Clause): Complementary code that completes the
	new algorithm and replaces the shadow entities by the real ones.
	(Install_Limited_Withed_Unit): When unchaining entities before the
	installation of the shadow entities, only regular entities of the
	public part must be taken into account. This is required to
	keep this routine in synch with the work done by Remove_Limited_
	With_Clause
	(Install_Limited_With_Clause): Introduce implicit limited_with_clause
	even if unit is analyzed, because the analysis of the unit is
	idempotent in any case, and the limited view of the unit may have to
	be installed for proper visibility.
	(Expand_Limited_With_Clause): Even if the unit in the implicit
	with_clause has been analyzed already, a limited view of the package
	must be built for the current context, if it does not exist yet.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* sem_ch12.adb (Instantiate_Subprogram_Body): When creating the
	defining entity for the instance body, make a new defining identifier
	rather than copying the entity of the spec, to prevent accidental
	sharing of the entity list.
	(Check_Private_View): When exchanging views of private types, build the
	list of exchanged views as a stack, to ensure that on exit the exchanges
	are undone in the proper order.
	(Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation):
	Restore the compilation environment in case of instantiation_error.
	(Analyze_Generic_Subprogram_Declaration): Handle creation of type entity
	for an anonymous access result.
	(Instantiate_Generic_Subprogram): Subtype_Mark => Result_Definition
	(Formal_Entity): Handle properly the case of a formal package that
	denotes a generic package renaming.

2005-09-01  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Reject the
	clause if the array aggregate is surrounded by parentheses.

2005-09-01  Cyrille Comar  <comar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch3.ads, sem_ch3.adb (Analyze_Object_Declaration): Go to the
	underlying type
	to check if a type is Constrained in cases related to code generation
	(rather than semantic checking) since otherwise we do not generate
	similar code for mutable private types depending if their
	discriminants are visible or not.
	(Check_Abstract_Overriding): Do not complain about failure to override
	the primitive operations used in dispatching selects since they will
	always be overriden at the freeze point of the type.
	(Access_Definition): Separate out handling for resetting the scope
	of an anonymous access function result type. Retrieve the scope
	of the associated function rather than using Current_Scope, which
	does not have a consistent value (depends on whether we're in the
	middle of analyzing formal parameters). Add ??? comment about
	finding a cleaner way to handle the special cases of scope setting.
	(Process_Incomplete_Dependents): A protected operation is never a
	dispatching operation (only its wrapper may be).
	(Build_Derived_Record_Type): In case of tagged private types that
	implement interfaces add derivation of predefined primitive
	operations.
	(Derive_Subprograms): Replace the Is_Interface_Derivation parameter
	by two parameters that are used in case of derivation from abstract
	interface types: No_Predefined_Prims is used to avoid the derivation
	of predefined primitives from the interface, and Predefined
	Prims_Only is used to complete the derivation predefined primitives
	in case of private tagged types implementing interfaces.
	Fix typo in comments
	(Find_Interface_In_Descendant): Protect the frontend against
	wrong code with large circularity chains.
	(Is_Private_Overriding): Add support for entities overriding interface
	subprograms. The test failed because Entities associated with overriden
	interface subprograms are always marked as hidden (and used to build
	the secondary dispatch table); in this case the overriden entity is
	available through the field abstract_interface_alias (cf. override_
	dispatching_operation)
	(Access_Definition): Set the scope of the type to Current_Scope for the
	case of a function with an anonymous access result type.
	(Access_Subprogram_Declaration): Handle creation of the type entity for
	an access-to-function type with an anonymous access result.
	(Check_Anonymous_Access_Types): Change Subtype_Mark to Result_Definition
	in handling for N_Access_Function_Definition.
	(Analyze_Subtype_Declaration): Modify the text of error message.
	(Derived_Type_Declaration): Modify the text of error message.
	(Process_Subtype): Modify the text of error message plus cleanup
	of one redundant error message.
	(Analyze_Component_Declaration): Code cleanup.
	(Analyze_Object_Declaration): Code cleanup.
	(Analyze_Subtype_Declaration): Propagate the null-exclusion
	attribute in case of access types. Code cleanup.
	(Array_Type_Declaration): Code cleanup.
	(Process_Discriminants): Create the new null-excluding itype
	if required. Code cleanup.
	(Process_Subtype): Create the new null-excluding itype if
	required. Code cleanup.
	(Build_Derived_Record_Type): Code cleanup to avoid calling
	twice the subprogram derive_subprograms in case of private
	types that implement interfaces. In this particular case the
	subprogram Complete_Subprograms_Derivation already does the
	job associated with the second call.

	* exp_strm.adb (Build_Elementary_Input_Call): Add an explicit
	conversion to the full view when generating an operation for a
	discriminant whose type may currently be private.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Transform_Object_Operation): In a context off the form
	V (Obj.F), the rewriting does not involve the indexed component, but
	only the selected component itself.
	Do not apply the transformation if the analyzed node is an actual of a
	call to another subprogram.
	(Complete_Object_Operation): Retain the entity of the
	dispatching operation in the selector of the rewritten node. The
	entity will be used in the expansion of dispatching selects.
	(Analyze_One_Call): Improve location of the error message associated
	with interface.
	(Analyze_Selected_Component): No need to resolve prefix when it is a
	function call, resolution is done when parent node is resolved, as
	usual.
	(Analyze_One_Call): Add a flag to suppress analysis of the first actual,
	when attempting to resolve a call transformed from its object notation.
	(Try_Object_Operation, Transform_Object_Operastion): Avoid makind copies
	of the argument list for each interpretation of the operation.
	(Try_Object_Operation): The designated type of an access parameter may
	be an incomplete type obtained through a limited_with clause, in which
	case the primitive operations of the type are retrieved from its full
	view.
	(Analyze_Call): If this is an indirect call, and the return type of the
	access_to_subprogram is incomplete, use its full view if available.

2005-09-01  Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* sem_ch6.ads, sem_ch6.adb (Check_Conformance): In case of anonymous
	access types the null-exclusion and access-to-constant attributes must
	also match.
	(Analyze_Return_Statement): When the result type is an anonymous access
	type, apply a conversion of the return expression to the access type
	to ensure that appropriate accessibility checks are performed.
	(Analyze_Return_Type): For the case of an anonymous access result type,
	generate the Itype and set Is_Local_Anonymous_Access on the type.
	Add ??? placeholder for check to disallow returning a limited object
	in Ada 2005 unless it's an aggregate or a result of a function call.
	Change calls from Subtype_Mark to Result_Definition.
	(Analyze_Subprogram_Body): Change formal Subtype_Mark to
	Result_Definition in call to Make_Function_Specification.
	(Build_Body_To_Inline): Change Set_Subtype_Mark to
	Set_Result_Definition.
	(Make_Inequality_Operator): Change formal Subtype_Mark to
	Result_Definition in call to Make_Function_Specification.
	(Process_Formals): Create the new null-excluding itype if required.
	(New_Overloaded_Entity): For an entity overriding an interface primitive
	check if the entity also covers other abstract subprograms in the same
	scope. This is required to handle the general case, that is, overriding
	other interface primitives and overriding abstract subprograms inherited
	from some abstract ancestor type.
	(New_Overloaded_Entity): For an overriding entity that comes from
	source, note the operation that it overrides.
	(Check_Conformance, Type_Conformant): Addition of one new formal
	to skip controlling formals in the analysis. This is used to
	handle overloading of abstract interfaces.
	(Base_Types_Match): Add missing case for types imported from
	limited-with clauses
	(New_Overloaded_Entity): Add barrier to protect the use of
	the "alias" attribute.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Renamed_Entry): For a renaming_as_declaration,
	verify that the procedure and the entry are mode conformant.
	(Analyze_Subprogram_Renaming): Emit a warning if an operator is renamed
	as a different operator, which is often a cut-and-paste error.

2005-09-01  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_disp.adb (Check_Controlling_Formals): Anonymous access types
	used in controlling parameters exclude null because it is necessary to
	read the tag to dispatch, and null has no tag.
	(Override_Dispatching_Operation): If the previous operation is inherited
	from an interface, it becomes hidden  and does not participate in later
	name resolution.

2005-09-01  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* sem_res.adb (Resolve_Membership_Op): In case of the membership test
	"Iface_CW_Typ in T'Class" we have nothing else to do in the frontend;
	the expander will generate the corresponding run-time check to evaluate
	the expression.
	(Resolve_Call): Check for legal type of procedure name or prefix that
	appears as a trigger in a triggering alternative.
	(Valid_Conversion): If expression is ambiguous and the context involves
	an extension of System, remove System.Address interpretations.
	(Resolve_Qualified_Expression): Reject the case of a specific-type
	qualification applied to a class-wide argument. Enhance comment
	to explain checking of Original_Node.
	(Resolve_Type_Conversion): The location of the error message was not
	general enough to handle the general case and hence it has been removed.
	In addition, this patch improves the text of the message.
	(Resolve_Type_Conversion): Add missing support for access to interface
	types.
	(Resolve_Type_Conversion): If the target is a class-wide interface type,
	do not expand if the expression is the actual in a call, because proper
	expansion will take place when the call itself is expanded.
	(Resolve_Allocator): If the context is an unchecked conversion, the
	allocator inherits its storage pool, if any, from the target type of
	the conversion.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_type.adb (Add_One_Interp): If a candidate operation is an
	inherited interface operation that has an implementation, use the
	implementation to avoid spurious ambiguities.
	(Interface_Present_In_Ancestor): In case of concurrent types we can't
	use the Corresponding_Record_Typ attribute to look for the interface
	because it is set by the expander (and hence it is not always
	available). For this reason we traverse the list of interfaces
	(available in the parent of the concurrent type).
	(Interface_Present_In_Ancestor): Handle entities from the limited view

2005-09-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Gather_Components): Omit interface tags
	from the list of required components.
	(Is_Controlling_Limited_Procedure): Determine whether an entity is a
	primitive procedure of a limited interface with a controlling first
	parameter.
	(Is_Renamed_Entry): Determine whether an entry is a procedure renaming
	of an entry.
	(Safe_To_Capture_Value): A value (such as non_null) is not safe to
	capture if it is generated in the second operand of a short-circuit
	operation.
	Do not capture values for variables with address clauses.
	(Is_Object_Reference): Treat a function call as an object reference only
	if its type is not Standard_Void_Type.

2005-09-01  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Known_Condition): Refine warning when applied
	to a variable that is statically known to be constant.

2005-09-01  Geert Bosch  <bosch@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* ttypef.ads (VAXDF_Safe_First): Use correct value for constant.
	(VAXGF_Safe_First): Idem.

2005-09-01  Robert Dewar  <dewar@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* g-dirope.ads: Minor reformatting
	Document that bounds of result of Base_Name match the input index
	positions.
	Add documentation on environment variable syntax for Expand_Path

	* gnat_ugn.texi: Update documentation to include mention of -m switches
	Document new treatment of wide characters in max line length
	style check.
	Remove -gnatL/-gnatZ switches, no longer used.
	Add note on pragmas Assertion_Policy and Debug_Policy in discussion
	of -gnata switch.

	* gnat_rm.texi: Add doc for two argument form of pragma
	Float_Representation.
	Add documentation for pragma No_Strict_Aliasing
	Add note that explicit component clause overrides pragma Pack.
	Add documentation of pragma Debug_Policy

2005-09-01  Matthew Heaney  <heaney@adacore.com>

	* a-cihase.adb, a-coorse.ads, a-coorse.adb, a-cohama.adb,
	a-ciorse.ads, a-ciorse.adb, a-cihama.adb, a-cdlili.adb,
	a-cidlli.adb, a-chtgop.adb, a-cihase.adb, a-cihase.ads,
	a-cohase.adb, a-cohase.adb, a-cohase.ads: Synchronized with latest
	draft (Draft 13, August 2005) of Ada Amendment 1.

2005-09-01  Arnaud Charlet  <charlet@adacore.com>

	* Makefile.in: Adjust the libgnat target pairs for Xscale to ARM.
	Note that the platform-specific version of g-soccon.ads for VMS is now
	named g-soccon-vms.ads (it was previously g-soccon-vms.adb, although it
	really is a package spec).
	Replace s-taspri-linux.ads by s-taspri-posix.ads
	Remove references to s-mastop-x86.adb

	* system-vxworks-xscale.ads: Removed, no longer used.
	* s-vxwork-xscale.ads: Removed, no longer used.

2005-09-01  Robert Dewar  <dewar@adacore.com>

	* a-dirval-mingw.adb, a-direct.adb, a-coinve.adb,
	g-dynhta.adb, g-dynhta.ads, cstand.adb, exp_smem.adb, g-debuti.ads,
	g-dirope.adb, g-table.adb, lib-sort.adb, sem_maps.adb,
	exp_fixd.adb, exp_aggr.adb, a-intnam-mingw.ads, a-intnam-vxworks.ads,
	g-arrspl.adb, g-arrspl.ads, g-awk.adb, g-awk.ads, g-boubuf.ads,
	g-boubuf.ads, g-boubuf.ads, g-bubsor.ads, g-bubsor.adb, g-busora.adb,
	g-busora.ads, g-busorg.adb, g-busorg.ads, g-calend.adb, g-calend.ads,
	g-casuti.adb, g-casuti.ads, g-catiio.adb, g-catiio.ads, g-cgi.adb,
	g-cgi.ads, g-cgicoo.adb, g-cgicoo.ads, g-cgideb.adb, g-cgideb.ads,
	g-comlin.adb, g-comver.ads, g-semaph.ads, g-socthi.ads,
	sem_ch7.adb, a-direio.adb, a-caldel.ads, i-cstrea-vms.adb,
	a-ztedit.adb, a-ztenau.adb, g-socthi-vms.adb, g-socthi-vms.ads,
	g-socthi-mingw.adb, g-socthi-mingw.ads, g-socthi-vxworks.ads,
	a-intnam-irix.ads, a-intnam-irix.ads, a-intnam-hpux.ads,
	a-intnam-os2.ads, a-intnam-os2.ads, a-caldel-vms.adb, a-calend-vms.adb,
	a-calend-vms.ads, g-heasor.adb, g-heasor.ads, g-hesora.adb,
	g-hesora.ads, g-hesorg.adb, g-hesorg.ads, g-htable.adb, g-htable.ads,
	g-io.adb, g-io.ads, g-io_aux.adb, g-io_aux.ads, g-locfil.ads,
	g-memdum.adb, g-memdum.ads, g-traceb.adb, g-traceb.ads, i-cobol.adb,
	i-cobol.ads, i-cstrea.ads, i-cstrin.adb, a-wtedit.adb, a-tifiio.adb,
	a-wtenau.adb, a-wtenau.adb, a-teioed.adb: Minor reformatting

2005-08-29  Arnaud Charlet  <charlet@adacore.com>

	PR ada/23187
	* adaint.c
	(GNAT_MAXPATH_LEN): Use default value if MAXPATHLEN is undefined.

2005-08-29  Arnaud Charlet  <charlet@adacore.com>
	    Doug Rupp  <rupp@adacore.com>

	* s-stalib.adb: Add missing pragma Warnings (On) to reenable Warnings
	when needed.
	(Inside_Elab_Final_Code): Moved to init.c to avoid having to keep
	this code in the GNAT run-time.

	* decl.c, fe.h: Replace GCC_ZCX by Back_End_Exceptions.

	PR ada/21053
	* init.c (__gnat_error_handler [many]): Mark "msg" as const
	(__gnat_error_handler [HPUX]): Mark siginfo parameter as unused

	(__gnat_inside_elab_final_code): Moved here from
	Standard_Library and only defined for the compiler.
	__gnat_error_handler [VMS]: Adjust sigargs to account for PC & PSL.
	(__gnat_inum_to_ivec): Do not define this function on VxWorks when
	using RTPs because directly vectored Interrupt routines are not
	supported on this configuration.
	(getpid): Do not redefine this function on VxWorks when using RTPs
	because this primitive is well supported by the RTP libraries.
	(copy_msg): Correct the code that checks for buffer overflow.
	Discovered during code reading.

2005-08-29  Olivier Hainque  <hainque@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Variable>: When allocating storage for
	a library level mutable variable with an initializer, tell
	build_allocator to ignore the initializer's size. It may not be large
	enough for all the values that might be assigned to the variable later
	on.

2005-08-29  Arnaud Charlet  <charlet@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c: Protect < in error msg with quote
	Replace GCC_ZCX by Back_End_Exceptions.
	(addressable_p) <COMPONENT_REF>: Also return 1 if the field
	has been sufficiently aligned in the record.

2005-08-15  James E. Wilson  <wilson@specifix.com>

	* system-linux-alpha.ads: Change ia64 to alpha.

2005-08-01  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c, utils.c: Fix comment typos.

2005-07-29  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c, init.c, initialize.c: Fix comment typos.

2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>

	Make CONSTRUCTOR use VEC to store initializers.
	* decl.c (gnat_to_gnu_entity): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* trans.c (extract_values): Likewise.
	* utils.c (convert, remove_conversions): Likewise.
	* utils2.c (contains_save_expr_p, build_binary_op, build_unary_op,
	gnat_build_constructor): Likewise.

2005-07-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* decl.c (components_to_record): Use DECL_FCONTEXT instead of
	DECL_SECTION_NAME.
	(compare_field_bitpos): Likewise.

2005-07-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* utils.c (create_var_decl): Only set DECL_COMMON on
	VAR_DECLs. Only set SET_DECL_ASSEMBLER_NAME on
	VAR_OR_FUNCTION_DECL_P.

2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

	* utils.c (create_param_decl): DECL_ARG_TYPE_AS_WRITTEN is
	removed.

2005-07-07  Pascal Obry  <obry@adacore.com>

	* g-socthi-mingw.adb (C_Inet_Addr): New body used to convert the
	returned type on Windows.

	* g-socthi-mingw.ads (C_Inet_Addr): Remove pragma Import for this
	routine.

	* g-socket.adb (Inet_Addr): Check for empty Image and raises an
	exception in this case.
	Simplify the code as "Image (Image'Range)" = "Image".

2005-07-07  Vincent Celier  <celier@adacore.com>

	* bindgen.adb (Gen_Output_File_C): When switch -a was specified, put
	the destructor/constructor attributes for <lib>final/<lib>init.

	* gnatbind.adb (Gnatbind): Allow -a to be used in conjunction with -C

2005-07-07  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Procedure>: Do not strip the padding
	type if the parameter is not passed by copy but reference by default.

2005-07-07  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Record_Init_Proc/Freeze_Record_Type):
	Reimplementation of the support for abstract interface types in order
	to leave the code more clear and easy to maintain.

	* exp_ch6.adb (Freeze_Subprogram): Reimplementation of the support for
	abstract interface types in order to leave the code clearer and easier
	to maintain.

	* exp_disp.ads, exp_disp.adb (Fill_DT_Entry): Part of its functionality
	is now implemented by the new subprogram Fill_Secondary_DT_Entry.
	(Fill_Secondary_DT_Entry): Generate the code necessary to fill the
	appropriate entry of the secondary dispatch table.
	(Make_DT): Add code to inherit the secondary dispatch tables of
	the ancestors.

	* exp_util.adb (Find_Interface_Tag/Find_Interface_ADT): Instead of
	implementing both functionalities by means of a common routine, each
	routine has its own code.

2005-07-07  Javier Miranda  <miranda@adacore.com>

	* freeze.adb (Freeze_Entity): Check wrong uses of tag incomplete types.

	* par-ch3.adb (P_Type_Declaration): Give support to tagged incomplete
	types:
	--
	  type DEFINING_IDENTIFIER [DISCRIMINANT_PART] [IS TAGGED];
	--

	* sem_attr.adb (Check_Not_Incomplete_Type): Additional checks for wrong
	use of tag incomplete types.

	* sem_ch3.adb (Analyze_Incomplete_Type): Add mininum decoration to
	give support to tagged incomplete types.

	* sem_ch5.adb (Analyze_Case_Statement): In generated code, if the
	expression is a discriminant reference and its type is private, as can
	happen within a stream operation for a mutable record, use the full
	view of the type to resolve the case alternatives.
	(Analyze_Assignment): Check wrong dereference of incomplete types.

	* sem_ch6.adb (Process_Formals): Allow the use of tagged incomplete
	types.

	* sem_res.adb (Resolve_Explicit_Dereference): Allow the use of tagged
	incomplete types.

	* sinfo.adb (Taggged_Present/Set_Taggged_Present): Applicable to
	N_Incomplete_Type_Declaration nodes.

	* sinfo.ads (N_Incomplete_Type_Declaration): Addition of attribute
	Tag_Present to give support to tagged incomplete types:
	--
	  type DEFINING_IDENTIFIER [DISCRIMINANT_PART] [IS TAGGED];
	--

2005-07-07  Olivier Hainque  <hainque@adacore.com>

	PR ada/22301
	* raise.c: Only include unwind.h if IN_RTS, and provide dummy type
	definitions for the Unwind wrappers in the compiler case.

2005-07-07  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* par-load.adb (Load): If a child unit is loaded through a limited_with
	clause, each parent must be loaded as a limited unit as well.

	* sem_ch10.adb (Previous_Withed_Unit): Better name for
	Check_Withed_Unit. Return true if there is a previous with_clause for
	this unit, whether limited or not.
	(Expand_Limited_With_Clause): Do not generate a limited_with_clause on
	the current unit.
	(Is_Visible_Through_Renamings): New local subprogram of install_limited
	_withed_unit that checks if some package installed through normal with
	clauses has a renaming declaration of package whose limited-view is
	ready to be installed. This enforces the check of the rule 10.1.2 (21/2)
	of the current Draft document for Ada 2005.
	(Analyze_Context): Complete the list of compilation units that
	are allowed to contain limited-with clauses. It also contains
	checks that were previously done by Install_Limited_Context_Clauses.
	This makes the code more clear and easy to maintain.
	(Expand_Limited_With_Clause) It is now a local subprogram of
	Install_Limited_Context_Clauses, and contains the code that adds
	the implicit limited-with clauses for parents of child units.
	This functionality was prevously done by Analyze_Context.

	* sem_ch4.adb (Analyze_Selected_Component): Check wrong use of
	incomplete type.

	* sem_ch7.adb (Analyze_Package_Declaration): Check if the package has
	been erroneously named in a limited-with clause of its own context.
	In this case the error has been previously notified by Analyze_Context.

2005-07-07  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Direct_Name): Handle properly the case of a
	generic package that contains local declarations with the same name.
	(Analyze_Object_Renaming): Check wrong renaming of incomplete type.

2005-07-07  Bernard Banner  <banner@adacore.com>

	* tracebak.c: Refine tracebacks to use Unwind_Backtrace scheme on
	ia64 platform only on platforms that you the GCC unwind library
	rather than the system unwind library.

2005-07-07  Thomas Quinot  <quinot@adacore.com>

	* expect.c: Minor reformatting

2005-07-07  Sergey Rybin  <rybin@adacore.com>

	* vms_data.ads: Add VMS qualifiers for new gnatpp switch
	--no-separate-is

	* gnat_ugn.texi: Add description for new gnatpp option
	(--no-separate-is)

2005-07-04  Thomas Quinot  <quinot@adacore.com>

	* g-expect-vms.adb, g-expect.ads, g-expect.adb
	(Get_Command_Output): New subprogram to launch a process and get its
	standard output as a string.

2005-07-04  Eric Botcazou  <ebotcazou@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>

	* s-mastop-tru64.adb (Pop_Frame): Use exc_lookup_function_entry to
	fetch a code-range descriptor associated with the machine state. On
	failure set the machine state's PC to 0; on success, pass the
	descriptor to exc_virtual_unwind.

	* init.c (Tru64 section): New function __gnat_set_code_loc.

2005-07-04  Vincent Celier  <celier@adacore.com>

	* mlib-tgt-tru64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb,
	mlib-tgt-hpux.adb, mlib-tgt-linux.adb, mlib-tgt-solaris.adb,
	mlib-tgt-mingw.adb, mlib-tgt-darwin.adb (Build_Dynamic_Library):
	Remove all auto-initialization code, as this is now done through the
	constructor mechanism.

	* adaint.h, adaint.c (__gnat_binder_supports_auto_init,
	__gnat_sals_init_using_constructors): New functions.

	* bindgen.adb (Gen_Output_File_Ada): Generate pragmas
	Linker_Constructor and Linker_Destructor when switch -a is used.

	* bindusg.adb: Add line for new switch -a

	* gnatbind.adb (Gnatbind_Supports_Auto_Init): New Boolean function
	(Gnatbind): When switch -a is used, check if it is allowed

	* switch-b.adb (Scan_Binder_Switches): Process new switch -a

2005-07-04  Joel Brobecker  <brobecker@adacore.com>

	* a-tags.adb (Type_Specific_Data): Define Tags_Table as a small array.
	This prevents us from hitting a limitation during the debug info
	generation when using stabs.
	(Prims_Ptr): Likewise.

2005-07-04  Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* checks.adb (Null_Exclusion_Static_Checks): In the case of
	N_Object_Declaration, only perform the checks if the Object_Definition
	is not an Access_Definition.

	* sem_ch3.adb (Access_Subprogram_Declaration): Add test for the case
	where the parent of an the access definition is an N_Object_Declaration
	when determining the Associated_Node_For_Itype and scope of an
	anonymous access-to-subprogram type.

	* exp_ch6.adb (Expand_N_Subprogram_Declaration): Set the
	Corresponding_Spec on the body created for a null procedure. Add ???
	comment. Remove New_Copy_Tree call on body argument to
	Set_Body_To_Inline.

	* exp_ch6.adb (Add_Simple_Call_By_Copy_Code): For an out parameter with
	discriminants, use the type of the actual as well, because the
	discriminants may be read by the called subprogram.

	* sem_ch3.adb (Access_Type_Declaration): If the designated type is an
	access type we do not need to handle non-limited views.
	(Build_Derived_Record_Type): Additional check to check that in case of
	private types, interfaces are only allowed in private extensions.

2005-07-04  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (prepend_attributes) <Pragma_Linker_Constructor>: New case.
	<Pragma_Linker_Destructor>: Likewise.

	* einfo.ads (Has_Gigi_Rep_Item): Document Pragma_Linker_Constructor and
	Pragma_Linker_Destructor.

	* gigi.h (attr_type): Add ATTR_LINK_CONSTRUCTOR and
	ATTR_LINK_DESTRUCTOR.
	(static_ctors, static_dtors): New variables.

	* misc.c (gnat_expand_body): Output current function as constructor
	and destructor if requested.

	* par-prag.adb: Add processing for pragma Linker_Constructor and
	Linker_Destructor.

	* sem_prag.adb (Find_Unique_Parameterless_Procedure): New function
	extracted from Check_Interrupt_Or_Attach_Handler.
	(Check_Interrupt_Or_Attach_Handler): Invoke it.
	Implement pragma Linker_Constructor and Linker_Destructor with the
	help of Find_Unique_Parameterless_Procedure.
	Replace Name_Alias with Name_Target for pragma Linker_Alias.

	* snames.h, snames.ads, snames.adb:
	Add Name_Linker_Constructor and Name_Linker_Destructor.
	Add Pragma_Linker_Constructor and Pragma_Linker_Destructor.
	* snames.adb: Remove Name_Alias.

	* trans.c: Include cgraph.h.
	(build_global_cdtor): New function.
	(Compilation_Unit_to_gnu): Build global constructor and destructor if
	needed.
	(tree_transform) <N_Identifier>: Substitute renaming of view-conversions
	of objects too.
	(addressable_p) <COMPONENT_REF>: Unconditionally test
	DECL_NONADDRESSABLE_P on STRICT_ALIGNMENT platforms.

	* utils.c (process_attributes) <ATTR_LINK_ALIAS>: Do not assemble the
	variable if it is external.

	(static_ctors, static_dtors): New global variables.
	(process_attributes) <ATTR_LINK_CONSTRUCTOR>: New case.
	<ATTR_LINK_DESTRUCTOR>: Likewise.
	(end_subprog_body): Chain function as constructor and destructor
	if requested.

	* exp_util.adb (Force_Evaluation): Unconditionally invoke
	Remove_Side_Effects with Variable_Ref set to true.
	(Remove_Side_Effects): Handle scalar types first. Use a renaming
	for non-scalar types even if Variable_Ref is true and for class-wide
	expressions.

2005-07-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_attr.adb (Mod): Evaluate condition expression with checks off,
	to prevent spurious warnings.

2005-07-04  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Build_TypeCode_Call): Remove incorrect processing for
	Itypes. Itypes are really unexpected there.
	(Build_TypeCode_Function): Generalise special processing for Itypes to
	handle the case of numeric implicit base types as well as enumerated
	ones.

2005-07-04  Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): If the designated type is
	controlled, indicate the expected type of the dereference that is
	created for the call to Deep_Finalize, to prevent spurious errors when
	the designated type is private and completed with a derivation from
	another private type.

2005-07-04  Vincent Celier  <celier@adacore.com>

	* make.adb (Change_To_Object_Directory): When unable to change the
	current dir to the object directory, output the full path of the
	directory.

2005-07-04  Matthew Gingell  <gingell@adacore.com>

	* Makefile.in: Replace indepsw-linux.adb by indepsw-gnu.adb

	* indepsw-linux.adb: Replace by...

	* indepsw-gnu.adb: ...this new file

2005-07-04  Vincent Celier  <celier@adacore.com>

	* mlib-prj.adb (Auto_Initialize): New constant String
	(SALs_Use_Constructors): New Boolean function
	(Build_Library): Call gnatbind with Auto_Initialize switch when
	SALs_Use_Constructors returns True.

	* mlib-tgt.ads: Minor reformatting

	* mlib-utl.ads: Minor reformatting

	* opt.ads: (Use_Pragma_Linker_Constructor): New Boolean flag

2005-07-04  Ed Schonberg  <schonberg@adacore.com>

	* par-ch9.adb (P_Task, P_Protected): Indicate that single task and
	single protected declarations can have an interface list.
	(P_Entry_Declaration): Add handler for Error_Resync, which can be raised
	with seriously malformed entry declarations, and lead to compilation
	abandoned messages.

2005-07-04  Javier Miranda  <miranda@adacore.com>

	* par-load.adb: Load the context items in two rounds.

2005-07-04  Robert Dewar  <dewar@adacore.com>

	* scng.adb: Do not consider Mod used as an attribute to be a keyword

2005-07-04  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch10.adb (Build_Limited_Views): A type declared with a private
	type extension needs a limited view.
	Remove previous restriction on private types available through the
	limited-view (only tagged private types were previously allowed).
	(Install_Withed_Unit): In the code that implements the
	legality rule given in AI-377, exclude a child unit with the name
	Standard, because it is a homonym of the Standard environment package.

2005-07-04  Thomas Quinot  <quinot@adacore.com>

	* sem_ch4.adb (Transform_Object_Operation): For an actual that is an
	overloaded function call, carry interpretations from the original tree
	to the copy.

2005-07-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Conforming_Types): If the types are anonymous access
	types check whether some designated type is a limited view, and use
	the non-limited view if available.

2005-07-04  Gary Dismukes  <dismukes@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Match): Use the discriminant
	constraint of full view of a private view T1 if present, when T2 is a
	discriminated full view.

2005-07-04  Thomas Quinot  <quinot@adacore.com>

	* sem_res.adb (Resolve_Actuals): Do not resolve the expression of an
	actual that is a view conversion of a bit packed array reference.

2005-07-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_type.adb (Covers): Verify that Corresponding_Record_Type is
	present before checking whether an interface type covers a synchronized
	type.

2005-07-04  Ed Schonberg  <schonberg@adacore.com>

	* sem_util.adb (Is_Object_Reference): An indexed or selected component
	whose prefix is an implicit dereference is an object reference. Removes
	spurious errors when compiling with -gnatc.

2005-07-04  Robert Dewar  <dewar@adacore.com>

	PR ada/22039
	* s-sopco3.ads, s-sopco4.ads, s-sopco5.ads: Minor documentation fix

2005-07-04  Matthew Gingell  <gingell@adacore.com>

	* tracebak.c: Enable tracebacks on ia64 platforms

2005-07-04  Vincent Celier  <celier@adacore.com>

	* vms_conv.adb (Initialize): Allow multiple ALI files to be given to
	the GNAT BIND command, as gnatbind accepts multiples ALI files with
	the -L or -n switches.

2005-07-04  Vincent Celier  <celier@adacore.com>

	* makegpr.adb (Build_Global_Archive): Make sure the list of sources is
	correctly computed and the main project data is not modified while
	doing so.
	(Add_C_Plus_Plus_Link_For_Gnatmake): Always link with the C++ compiler
	(Choose_C_Plus_Plus_Link_Process): Do not generate shell script
	c++linker as this does not work on some platforms.

2005-07-04  Matthew Heaney  <heaney@adacore.com>

	* a-convec.ads, a-coinve.ads: Declaration of subtype Extended_Index
	was changed.
	* a-coinve.adb: Perform constraint checks explicitly.

2005-07-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    Thomas Quinot  <quinot@adacore.com>

	* Make-lang.in: (ada/targtyps.o): Add missing TREE_H dependency.
	new target gen-soccon.

2005-07-04  Robert Dewar  <dewar@adacore.com>

	* s-mastop-irix.adb, s-mastop-vms.adb: Minor reformatting

2005-07-04  Thomas Quinot  <quinot@adacore.com>

	* g-socket.ads (Check_Selector): Minor rewording of comment.

2005-07-04  Vincent Celier  <celier@adacore.com>

	* vms_data.ads: Add VMS qualifiers for new gnatpp switch --eol=

2005-07-04  Thomas Quinot  <quinot@adacore.com>

	* gen-soccon.c: Add constants SO_SNDTIMEO and SO_RCVTIMEO.

2005-07-04  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Add description of --eol gnatpp option

2005-07-04  Eric Botcazou  <ebotcazou@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* gnat_rm.texi: Add a note that pragma Unreferenced is not appropriate
	if the user wants all calls of a subprogram to be flagged,
	independently of whether they are made from within the same unit or
	another unit.
	Mention restriction for pragma Linker_Alias on some platforms.
	Document pragma Linker_Constructor and Linker_Destructor.
	Rewrite documentation of Weak_External, Linker_Section and
	Linker_Alias pragmas.

2005-07-04  Arnaud Charlet  <charlet@adacore.com>

	* s-stausa.ads, s-stausa.adb: New files.

2005-06-30  Kelley Cook

	* all files:  Update FSF address in copyright headers.
	* gen-soccon.co (main): Output new FSF address in generated files.

2005-06-28  Paul Brook  <paul@codesourcery.com>

	* misc.c (gnat_init_gcc_eh): Call default_init_unwind_resume_libfunc.

2005-06-14  Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* s-mastop-irix.adb (Pop_Frame): Revert shorcuts avoiding calls to
	exc_unwind, now that we are generating proper .debug_frame output for
	that target.

	* tracebak.c: Remove the mips-irix section, as we are now using the
	s-mastop based unwinder again.
	Under SPARC/Solaris, take into account the stack bias to compute the
	frame offset.  The stack bias is 0 for the V8 ABI and 2047 for the V9
	ABI.

2005-06-14  Doug Rupp  <rupp@adacore.com>

	* g-trasym-vms.adb: renamed g-trasym-vms-alpha.adb

	* g-trasym-vms-alpha.adb, g-trasym-vms-ia64.adb: New files

2005-06-14  Pascal Obry  <obry@adacore.com>

	* a-strhas.ads, a-secain.adb, a-secain.ads, a-rbtgso.ads, a-cgaaso.adb,
	a-cgaaso.ads, a-cgarso.adb, a-cgcaso.adb, a-cgarso.ads, a-cgcaso.ads,
	a-contai.ads, a-coprnu.ads, a-coprnu.adb: Fix header style (spaces in
	package name).

	* a-intnam-lynxos.ads, a-intnam-unixware.ads, a-intnam-tru64.ads,
	a-intnam-aix.ads, a-intnam-irix.ads, a-excpol-interix.adb,
	a-intnam-hpux.ads, a-intnam-linux.ads, a-intnam-dummy.ads,
	a-intnam-os2.ads, a-numaux-libc-x86.ads, a-intnam-interix.ads,
	a-intnam-solaris.ads, a-caldel-vms.adb, a-calend-vms.ads,
	a-intnam-vms.ads, a-excpol-abort.adb, a-intnam-mingw.ads,
	a-intnam-vxworks.ads, a-numaux-vxworks.ads, s-osinte-unixware.adb,
	s-osinte-unixware.ads, s-osinte-lynxos-3.adb, s-osinte-lynxos-3.ads,
	s-osinte-hpux.ads, s-osinte-solaris-posix.ads, a-intnam-freebsd.ads,
	s-osinte-freebsd.adb, s-osinte-freebsd.ads, s-osinte-lynxos.adb,
	s-osinte-lynxos.ads, s-tpopsp-lynxos.adb, s-osinte-tru64.adb,
	s-osinte-tru64.ads, s-tpopsp-posix-foreign.adb, s-vxwork-alpha.ads,
	s-osinte-aix.adb, s-osinte-aix.ads, s-osinte-aix-fsu.ads,
	s-osinte-irix.adb, s-osinte-irix.ads, s-interr-sigaction.adb,
	s-osinte-irix-athread.ads, s-osinte-hpux-dce.adb,
	s-osinte-hpux-dce.ads, s-osinte-posix.adb, s-osinte-linux.ads,
	s-vxwork-m68k.ads, s-osinte-linux-fsu.ads, s-vxwork-mips.ads,
	s-osinte-dummy.ads, s-interr-dummy.adb, s-osinte-os2.adb,
	s-osinte-os2.ads, s-osprim-os2.adb, s-osinte-interix.ads,
	s-osprim-unix.adb, s-vxwork-ppc.ads, s-osinte-solaris.adb,
	s-osinte-solaris.ads, s-osprim-solaris.adb, s-tpopsp-solaris.adb,
	s-vxwork-sparcv9.ads, s-osinte-solaris-fsu.ads, s-interr-vms.adb,
	s-osinte-vms.adb, s-osinte-vms.ads, s-osprim-vms.adb,
	s-osprim-vms.ads, s-tpopde-vms.adb, s-tpopde-vms.ads,
	s-osprim-mingw.adb, s-vxwork-xscale.ads, s-interr-vxworks.adb,
	s-osinte-vxworks.adb, s-osinte-vxworks.ads, s-osprim-vxworks.adb,
	s-tfsetr-vxworks.adb, s-tpopsp-vxworks.adb, s-intman-posix.adb,
	s-osinte-fsu.adb, s-osprim-posix.adb, s-tfsetr-default.adb,
	s-tpopsp-posix.adb, s-traces-default.adb, s-trafor-default.adb,
	s-trafor-default.ads, s-tratas-default.adb, a-numaux-x86.adb,
	a-numaux-x86.ads, a-astaco.adb, a-astaco.ads, a-caldel.adb,
	a-caldel.ads, a-charac.ads, a-chlat1.ads, a-chlat9.ads, a-colien.adb,
	a-colien.ads, a-colire.adb, a-colire.ads, a-comlin.adb, a-cwila1.ads,
	a-cwila9.ads, ada.ads, a-decima.adb, a-diocst.ads, a-direio.adb,
	a-dynpri.adb, a-dynpri.ads, a-excpol.adb, a-flteio.ads, a-fwteio.ads,
	a-inteio.ads, a-interr.adb, a-intnam.ads, a-intsig.adb, a-intsig.ads,
	a-ioexce.ads, a-iwteio.ads, a-lfteio.ads, a-lfwtio.ads, a-liteio.ads,
	a-liwtio.ads, a-llftio.ads, a-llfwti.ads, a-llitio.ads, a-lliwti.ads,
	a-ncelfu.ads, a-ngcefu.adb, a-ngcefu.ads, a-ngcoty.adb, a-ngelfu.adb,
	a-ngelfu.ads, a-nlcefu.ads, a-nlcoty.ads, a-nlelfu.ads, a-nllcef.ads,
	a-nllcty.ads, a-nllefu.ads, a-nscefu.ads, a-nscoty.ads, a-nselfu.ads,
	a-nucoty.ads, a-nudira.adb, a-nuelfu.ads, a-nuflra.adb, a-numaux.ads,
	a-numeri.ads, a-reatim.adb, a-retide.adb, a-retide.ads, a-sequio.adb,
	a-sequio.ads, a-sfteio.ads, a-sfwtio.ads, a-siocst.ads, a-siteio.ads,
	a-siwtio.ads, a-ssicst.ads, a-ssitio.ads, a-ssiwti.ads, a-stmaco.ads,
	a-storio.adb, a-strbou.adb, a-strfix.adb, a-string.ads, a-strmap.adb,
	a-strsea.adb, a-strsup.adb, a-strunb.ads, a-ststio.adb, a-stunau.adb,
	a-stunau.ads, a-stwibo.adb, a-stwifi.adb, a-stwifi.ads, a-stwima.adb,
	a-stwise.adb, a-stwisu.adb, a-suteio.adb, a-suteio.ads, a-swuwti.adb,
	a-swuwti.ads, a-teioed.adb, a-ticoau.adb, a-ticoau.ads, a-ticoio.adb,
	a-tideau.adb, a-tideio.adb, a-tienau.adb, a-tienio.adb, a-tifiio.adb,
	a-tiflio.adb, a-tigeau.adb, a-tigeau.ads, a-tiinio.adb, a-timoau.adb,
	a-timoio.adb, a-timoio.ads, a-tiocst.ads, a-titest.adb, a-titest.ads,
	a-witeio.adb, a-wtcoau.adb, a-wtcoau.ads, a-wtcoio.adb, a-wtcoio.ads,
	a-wtcstr.ads, a-wtdeau.adb, a-wtdeio.adb, a-wtenau.adb, a-wtenio.adb,
	a-wtfiio.adb, a-wtflio.adb, a-wtgeau.adb, a-wtinau.adb, a-wtinio.adb,
	a-wtinio.ads, a-wtmoau.adb, a-wtmoio.adb, a-wttest.adb, calendar.ads,
	dec.ads, dec-io.adb, dec-io.ads, directio.ads, errno.c, g-bubsor.adb,
	g-bubsor.ads, g-busora.adb, g-busora.ads, g-busorg.adb, g-busorg.ads,
	g-casuti.adb, g-casuti.ads, g-debuti.ads, g-heasor.adb, g-heasor.ads,
	g-hesora.adb, g-hesora.ads, g-hesorg.adb, g-hesorg.ads, g-htable.adb,
	g-htable.ads, g-io.adb, g-io.ads, g-io_aux.adb, g-io_aux.ads,
	g-memdum.adb, g-memdum.ads, g-sestin.ads, g-signal.ads, g-signal.adb,
	gnat.ads, g-souinf.ads, g-speche.adb, g-speche.ads, g-table.adb,
	g-table.ads, g-thread.adb, g-thread.ads, ioexcept.ads, i-vxwoio.adb,
	i-vxwoio.ads, math_lib.adb, s-assert.adb, s-assert.ads, s-asthan.ads,
	s-bitops.adb, s-bitops.ads, s-boarop.ads, s-carsi8.adb, s-carsi8.ads,
	s-carun8.adb, s-carun8.ads, s-casi16.adb, s-casi16.ads, s-casi32.adb,
	s-casi32.ads, s-casi64.adb, s-casi64.ads, s-casuti.adb, s-casuti.ads,
	s-caun16.adb, s-caun16.ads, s-caun32.adb, s-caun32.ads, s-caun64.adb,
	s-caun64.ads, s-direio.adb, s-direio.ads, sequenio.ads, s-errrep.adb,
	s-errrep.ads, s-exnint.adb, s-exnint.ads, s-exnllf.adb, s-exnllf.ads,
	s-exnlli.adb, s-exnlli.ads, s-expint.adb, s-expint.ads, s-explli.adb,
	s-explli.ads, s-expllu.adb, s-expllu.ads, s-expmod.adb, s-expmod.ads,
	s-expuns.adb, s-expuns.ads, s-fore.adb, s-fore.ads, s-geveop.adb,
	s-geveop.ads, s-htable.adb, s-htable.ads, s-imgbiu.adb, s-imgbiu.ads,
	s-imgboo.adb, s-imgboo.ads, s-imgcha.adb, s-imgcha.ads, s-imgdec.adb,
	s-imgdec.ads, s-imgenu.adb, s-imgenu.ads, s-imgint.adb, s-imgint.ads,
	s-imgllb.adb, s-imgllb.ads, s-imglld.adb, s-imglld.ads, s-imglli.adb,
	s-imglli.ads, s-imgllu.adb, s-imgllu.ads, s-imgllw.adb, s-imgllw.ads,
	s-imgrea.ads, s-imguns.adb, s-imguns.ads, s-imgwiu.adb, s-imgwiu.ads
	s-interr.ads, s-io.adb, s-mantis.adb, s-mantis.ads, s-osprim.ads,
	s-pack03.adb, s-pack03.ads, s-pack05.adb, s-pack05.ads, s-pack06.adb,
	s-pack06.ads, s-pack07.adb, s-pack07.ads, s-pack09.adb, s-pack09.ads,
	s-pack10.adb, s-pack10.ads, s-pack11.adb, s-pack11.ads, s-pack12.adb,
	s-pack12.ads, s-pack13.adb, s-pack13.ads, s-pack14.adb, s-pack14.ads,
	s-pack15.adb, s-pack15.ads, s-pack17.adb, s-pack17.ads, s-pack18.adb,
	s-pack18.ads, s-pack19.adb, s-pack19.ads, s-pack20.adb, s-pack20.ads,
	s-pack21.adb, s-pack21.ads, s-pack22.adb, s-pack22.ads, s-pack23.adb,
	s-pack23.ads, s-pack24.adb, s-pack24.ads, s-pack25.adb, s-pack25.ads,
	s-pack26.adb, s-pack26.ads, s-pack27.adb, s-pack27.ads, s-pack28.adb,
	s-pack28.ads, s-pack29.adb, s-pack29.ads, s-pack30.adb, s-pack30.ads,
	s-pack31.adb, s-pack31.ads, s-pack33.adb, s-pack33.ads, s-pack34.adb,
	s-pack34.ads, s-pack35.adb, s-pack35.ads, s-pack36.adb, s-pack36.ads,
	s-pack37.adb, s-pack37.ads, s-pack38.adb, s-pack38.ads, s-pack39.adb,
	s-pack39.ads, s-pack40.adb, s-pack40.ads, s-pack41.adb, s-pack41.ads,
	s-pack42.adb, s-pack42.ads, s-pack43.adb, s-pack43.ads, s-pack44.adb,
	s-pack44.ads, s-pack45.adb, s-pack45.ads, s-pack46.adb, s-pack46.ads,
	s-pack47.adb, s-pack47.ads, s-pack48.adb, s-pack48.ads, s-pack49.adb,
	s-pack49.ads, s-pack50.adb, s-pack50.ads, s-pack51.adb, s-pack51.ads,
	s-pack52.adb, s-pack52.ads, s-pack53.adb, s-pack53.ads, s-pack54.adb,
	s-pack54.ads, s-pack55.adb, s-pack55.ads, s-pack56.adb, s-pack56.ads,
	s-pack57.adb, s-pack57.ads, s-pack58.adb, s-pack58.ads, s-pack59.adb,
	s-pack59.ads, s-pack60.adb, s-pack60.ads, s-pack61.adb, s-pack61.ads,
	s-pack62.adb, s-pack62.ads, s-pack63.adb, s-pack63.ads, s-scaval.adb,
	s-scaval.ads, s-sequio.adb, s-sequio.ads, s-stache.adb, s-stache.ads,
	s-stratt.adb, s-stratt.ads, s-strcom.adb, s-strcom.ads, s-strops.adb,
	s-strops.ads, s-taasde.ads, s-tadeca.adb, s-tadeca.ads, s-tadert.adb,
	s-tadert.ads, s-taenca.adb, s-taenca.ads, s-taprob.adb, s-taprob.ads,
	s-tarest.adb, s-tarest.ads, s-tasdeb.adb, s-tasdeb.ads, s-tasini.adb,
	s-tasini.ads, s-taskin.adb, s-taskin.ads, s-tasque.adb, s-tasque.ads,
	s-tasren.ads, s-tasres.ads, s-tassta.adb, s-tassta.ads, s-tasuti.adb,
	s-tasuti.ads, s-tataat.adb, s-tataat.ads, s-tpinop.adb, s-tpinop.ads,
	s-tpoben.adb, s-tpoben.ads, s-tpobop.ads, s-tporft.adb, s-tposen.ads,
	s-traces.adb, s-traces.ads, s-tratas.adb, s-tratas.ads, s-valint.ads,
	s-unstyp.ads, s-veboop.adb, s-veboop.ads, s-vector.ads, s-vercon.adb,
	s-vercon.ads, s-wchcnv.adb, s-wchcnv.ads, s-wchjis.adb, s-wchjis.ads,
	s-wchstw.adb, s-wchstw.ads, s-wchwts.adb, s-wchwts.ads, s-widboo.adb,
	s-widboo.ads, s-widcha.adb, s-widcha.ads, s-widenu.adb, s-widenu.ads,
	s-widlli.adb, s-widlli.ads, s-widllu.adb, s-widllu.ads, s-wwdcha.ads,
	s-wwdenu.adb, s-wwdwch.ads, text_io.ads, s-stchop.ads, s-stchop.adb,
	s-stchop-vxworks.adb, a-intnam-darwin.ads, s-osinte-darwin.adb,
	s-osinte-darwin.ads, s-vxwork-x86.ads, a-numaux-darwin.ads,
	a-numaux-darwin.adb, a-chzla1.ads, a-chzla9.ads, a-lfztio.ads,
	a-liztio.ads, a-llfzti.ads, a-llizti.ads, a-sfztio.ads, a-siztio.ads,
	a-ssizti.ads, a-stzbou.adb, a-stzfix.adb, a-stzfix.ads, a-stzmap.adb,
	a-stzsea.adb, a-stzsup.adb, a-swunau.adb, a-swunau.ads, a-szuzti.adb,
	a-szuzti.ads, a-tiunio.ads, a-wwunio.ads, a-ztcoau.adb, a-ztcoau.ads,
	a-ztcoio.adb, a-ztcoio.ads, a-ztcstr.ads, a-ztdeau.adb, a-ztdeio.adb,
	a-ztenio.adb, a-ztexio.adb, a-ztfiio.adb, a-ztflio.adb, a-ztgeau.adb,
	a-ztinau.adb, a-ztinio.adb, a-ztinio.ads, a-ztmoau.adb, a-ztmoio.adb,
	a-zttest.adb, a-zzunio.ads, g-utf_32.adb: Fix header style.
	"GNU Ada" to GNAT, use proper casing for RUN-TIME.

2005-06-14  Jose Ruiz  <ruiz@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* a-sytaco.ads, a-sytaco.adb (Suspension_Object): These objects are no
	longer protected objects. They have been replaced by lower-level
	suspension objects made up by a mutex and a condition variable (or
	their equivalent given a particular OS) plus some internal data to
	reflect the state of the suspension object.
	(Initialize, Finalize): Add this initialization procedure for
	Suspension_Object, which is a controlled type.
	(Finalize): Add the finalization procedure for Suspension_Object,
	which is a controlled type.

	* a-sytaco-vxworks.ads, a-sytaco-vxworks.adb: Remove this version of
	Ada.Synchronous_Task_Control because there is no longer a need for a
	VxWorks specific version of this package. Target dependencies
	has been moved to System.Task_Primitives.Operations.

	* s-osinte-mingw.ads (pCRITICAL_SECTION): Remove this type which is no
	longer needed.
	(InitializeCriticalSection, EnterCriticalSection,
	LeaveCriticalSection, DeleteCriticalSection): Replace the type
	pCriticalSection by an anonymous access type so that we avoid problems
	of accessibility to local objects.

	* s-taprop.ads, s-taprop-posix.adb, s-taprop-vxworks.adb,
	s-taprop-mingw.adb, s-taprop-vms.adb, s-taprop-solaris.adb,
	s-taprop-os2.adb, s-taprop-dummy.adb, s-taprop-hpux-dce.adb,
	s-taprop-linux.adb, s-taprop-irix.adb, s-taprop-irix-athread.adb,
	s-taprop-tru64.adb, s-taprop-lynxos.adb (Elaboration Code): No longer
	set the environment task mask here.
	(Current_State): Add this function that returns the state of the
	suspension object.
	(Set_False): Add this procedure that sets the state of the suspension
	object to False.
	(Set_True): Add this procedure that sets the state of the suspension
	object to True, releasing the task that was suspended, if any.
	(Suspend_Until_True): Add this procedure that blocks the calling task
	until the state of the object is True. Program_Error is raised if
	another task is already waiting on that suspension object.
	(Initialize): Add this procedure for initializing the suspension
	object. It initializes the mutex and the condition variable which are
	used for synchronization and queuing, and it sets the internal state
	to False.
	(Finalize): Add this procedure for finalizing the suspension object,
	destroying the mutex and the condition variable.

	* s-taspri-posix.ads, s-taspri-vxworks.ads, s-taspri-mingw.ads,
	s-taspri-vms.ads, s-taspri-solaris.ads, s-taspri-os2.ads,
	s-taspri-dummy.ads, s-taspri-hpux-dce.ads, s-taspri-linux.ads,
	s-taspri-tru64.ads, s-taspri-lynxos.ads (Suspension_Object): New object
	which provides a low-level abstraction (using operating system
	primitives) for Ada.Synchronous_Task_Control.
	This object is made up by a mutex (for ensuring mutual exclusion), a
	condition variable (for queuing threads until the condition is
	signaled), a Boolean (State) indicating whether the object is open,
	and a Boolean (Waiting) reflecting whether there is a task already
	suspended on this object.

	* s-intman.ads, s-intman-irix.adb, s-intman-irix-athread.adb,
	s-intman-dummy.adb, s-intman-solaris.adb, s-intman-vms.adb,
	s-intman-vms.ads, s-intman-mingw.adb,
	(Initialize_Interrupts): Removed, no longer used.

	* s-inmaop-posix.adb, s-inmaop-vms.adb, s-inmaop-dummy.adb,
	(Setup_Interrupt_Mask): New procedure.

	* s-intman-vxworks.ads, s-intman-vxworks.adb:  Update comments.

	* s-inmaop.ads (Setup_Interrupt_Mask): New procedure

	* s-interr.adb: Add explicit call to Setup_Interrupt_Mask now that
	this is no longer done in the body of s-taprop
	(Server_Task): Explicitely test for Pending_Action in case
	System.Parameters.No_Abort is True.

	* s-taasde.adb: Add explicit call to Setup_Interrupt_Mask now that this
	is no longer done in the body of s-taprop

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* system-unixware.ads, system-linux-ia64.ads, system-freebsd-x86.ads,
	system-lynxos-ppc.ads, system-lynxos-x86.ads, system-linux-x86_64.ads,
	system-tru64.ads, system-aix.ads, system-vxworks-sparcv9.ads,
	system-vxworks-xscale.ads, system-solaris-x86.ads, system-irix-o32.ads,
	system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
	system-linux-x86.ads, system-vxworks-mips.ads, system-vxworks-mips.ads,
	system-os2.ads, system-interix.ads, system-solaris-sparc.ads,
	system-solaris-sparcv9.ads, system-vms.ads, system-mingw.ads,
	system-vms-zcx.ads, system-vxworks-ppc.ads, system.ads,
	system-darwin-ppc.ads, system-vxworks-x86.ads, system-linux-ppc.ads,
	system-linux-hppa.ads, system-vms_64.ads,
	system-vxworks-alpha.ads: Minor comment update for
	AI-362 (unit is Pure).

	* a-chahan.ads, a-chahan.adb: Move Wide_Wide functions to Conversions
	Add pragma Pure_05 for AI-362
	Make remaining conversion functions obsolescent in Ada 95

	* impunit.adb: Change a-swunha to a-swuwha and a-szunha to a-szuzha
	Make Ada.Wide_Characters[.Unicode] available in Ada 95 mode
	Add entries for a-wichun and a-zchuni
	Add a-widcha a-zchara for AI-395
	Add a-chacon (Ada.Characters.Conversions) to list of Ada 2005 routines

	* Makefile.rtl: Change a-swunha to a-swuwha and a-szunha to a-szuzha
	Add entries for a-wichun.o and a-zchuni.o
	Entries for a-widcha.o and a-zchara.o
	Add entry for a-chacon.o

	* a-ztenau.adb: Add with of Ada.Characters.Conversions

	* a-chacon.ads, a-chacon.adb: New files.

	* a-taside.adb, a-exstat.adb, a-excach.adb: Add warnings off to allow
	categorization violations.

	* a-strmap.ads: Add pragma Pure_05 for AI-362
	* a-strmap.ads: Add note on implicit categorization for AI-362

	* a-tgdico.ads, a-taside.ads: Add pragma Preelaborate_05 for AI-362

	* par-prag.adb: Dummy entry for pragma Persistent_BSS
	Set Ada_Version_Explicit, for implementation of AI-362
	Add processing for pragma Pure_05 and Preelaborate_05
	Add entry for Assertion_Policy pragma

	* sem.adb: Make sure predefined units are compiled with GNAT_Mode true
	when needed for proper processing of categorization stuff

	* sem_cat.adb:
	For several cases, make errors in preealborate units warnings,
	instead of errors, if GNAT_Mode is set. For AI-362.

	* sem_elab.adb (Check_Elab_Call): Call to non-static subprogram in
	preelaborate unit is now warning if in GNAT mode

	* s-stoele.ads: Document AI-362 for pragma preelaborate

2005-06-14  Doug Rupp  <rupp@adacore.com>

	* s-parame-vms.ads, s-parame-hpux.ads, s-parame-vms-restrict.ads,
	s-parame-ae653.ads, s-parame.ads, s-parame-vxworks.ads:
	Default_Exception_Msg_Max_Length: new parameter.

	* a-except.ads: (Exception_Msg_Max_Length): Set to
	System.Parameters.Default_Exception_Msg_Max_Length
	Add pragma Preelaborate_05 for AI-362
	Add warnings off to allow categorization violations for AI-362

2005-06-14  Vincent Celier  <celier@adacore.com>

	* gnatsym.adb: Adapt to modification of package Symbols: procedure
	Process is now in package Processing.

	* symbols.ads, symbols.adb:
	(Processing): New package, containing procedure Process

	* symbols-vms-alpha.adb:
	Replaced by symbols-vms.adb and symbols-processing-vms-alpha.adb

	* symbols-vms.adb, symbols-processing-vms-alpha.adb,
	symbols-processing-vms-ia64.adb: New files.

2005-06-14  Pascal Obry  <obry@adacore.com>

	* mlib-tgt-mingw.adb (Build_Dynamic_Library): Replace the previous
	implementation. This new version generates the proper DllMain routine
	to initialize the SAL. The DllMain is generated in Ada and compiled
	before being added as option to the library build command.

2005-06-14  Doug Rupp  <rupp@adacore.com>
	    Pascal Obry  <obry@adacore.com>

	* adaint.c (__gnat_to_canonical_file_spec): Check for error returns in
	call to decc$translate_vms.
	(__gnat_locate_regular_file): Check if the path_val contains quotes. We
	need to remove those quotes before catenating the filename.
	(__gnat_locate_exec_on_path): improvements to the Win32 section:
	* avoid allocating the memory twice for better efficiency;
	* allocate 32K buffer for environment expansion as suggested by MSDN;
	* prepend ".;" to the path so that current directory is searched too.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* a-except.adb (Exception_Identity): return Null_Id for null occurrence
	instead of raising CE (AI-241)
	Add warnings off to allow categorization violations for AI-362

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* ali-util.adb, gnatbind.adb: Remove references to
	Force_RM_Elaboration_Order.

	* switch-b.adb: Remove recognition of -f switch

2005-06-14  Pascal Obry  <obry@adacore.com>

	* a-stzunb.adb, a-stwiun.adb, a-strunb.adb (Realloc_For_Chunk): New
	implementation which is slightly more efficient.

2005-06-14  Gary Dismukes  <dismukes@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): When an initialized
	allocator's designated type is a class-wide type, and compiling for
	Ada 2005, emit a run-time check that the accessibility level of the
	type given in the allocator's expression is not deeper than the level
	of the allocator's access type.

	(Tagged_Membership): Modified to gives support to abstract interface
	types.

	* a-tags.ads, a-tags.adb (type Type_Specific_Data): Add component
	Access_Level.
	(Descendant_Tag): New predefined function
	(Is_Descendant_At_Same_Level): New predefined function
	(Get_Access_Level): New private function
	(Set_Access_Level): New private procedure
	(IW_Membership): New function. Given the tag of an object and the tag
	associated with an interface, evaluate if the object implements the
	interface.
	(Register_Interface_Tag): New procedure used to initialize the table of
	interfaces used by the IW_Membership function.
	(Set_Offset_To_Top): Initialize the Offset_To_Top field in the prologue
	of the dispatch table.
	(Inherit_TSD): Modified to copy the table of ancestor tags plus the
	table of interfaces of the parent.
	(Expanded_Name): Raise Tag_Error if the passed tag equals No_Tag.
	(External_Tag): Raise Tag_Error if the passed tag equals No_Tag.
	(Parent_Tag): Return No_Tag in the case of a root-level tagged type,
	and raise Tag_Error if the passed tag equalis No_Tag, to conform with
	Ada 2005 semantics for the new predefined function.

	* exp_attr.adb (Expand_N_Attribute, case Attribute_Input): Generate
	call to Descendant_Tag rather than Internal_Tag.
	(Expand_N_Attribute, case Attribute_Output): Emit a check to ensure that
	the accessibility level of the attribute's Item parameter is not deeper
	than the level of the attribute's prefix type. Tag_Error is raised if
	the check fails. The check is only emitted for Ada_05.
	(Find_Stream_Subprogram): If a TSS exists on the type itself for the
	requested stream attribute, use it.
	(Expand_N_Attribute_Reference): If the designated type is an interface
	then rewrite the referenced object as a conversion to force the
	displacement of the pointer to the secondary dispatch table.
	(Expand_N_Attribute_Reference, case 'Constrained): Return false if this
	is a dereference of an object with a constrained partial view.

	* exp_ch5.adb (Expand_N_Return_Statement): When a function's result
	type is a class-wide type, emit a run-time check that the accessibility
	level of the returned object is not deeper than the level of the
	function's master (only when compiling for Ada 2005).

	* exp_disp.ads, exp_disp.adb (Ada_Actions, Action_Is_Proc,
	Action_Nb_Arg): Add entries for new Get_Access_Level and
	Set_Access_Level routines in these tables.
	(Make_DT): Generate a call to set the accessibility level of the
	tagged type in its TSD.
	(Make_DT): Code cleanup. The functionality of generating all the
	secondary dispatch tables has been moved to freeze_record_type.
	(Make_Abstract_Interface_DT): Minor code cleanup.
	(Set_All_DT_Position): Code cleanup. As part of the code cleanup
	this subprogram implements a new algorithm that provides the
	same functionality and it is more clear in case of primitives
	associated with abstract interfaces.
	(Set_All_Interfaces_DTC_Entity): Removed. As part of the code
	clean up, the functionality of this subprogram is now provided
	by Set_All_DT_Position.
	(Write_DT): New subprogram: a debugging procedure designed to be called
	within gdb to display the dispatch tables associated with a tagged
	type.
	(Collect_All_Interfaces): New subprogram that collects the whole list
	of interfaces that are directly or indirectly implemented by a tagged
	type.
	(Default_Prim_Op_Position): New subprogram that returns the fixed
	position in the dispatch table of the default primitive operations.
	(Expand_Interface_Actuals): New subprogram to generate code that
	displaces all the actuals corresponding to class-wide interfaces to
	reference the interface tag of the actual object.
	(Expand_Interface_Conversion): New subprogram. Reference the base of
	the object to give access to the interface tag associated with the
	secondary dispatch table.
	(Expand_Interface_Thunk): New subprogram that generates the code of the
	thunk. This is required for compatibility with the C+ ABI.
	(Make_Abstract_Interface_DT): New subprogram that generate the
	declarations for the secondary dispatch tables associated with an
	abstract interface.
	(Set_All_Interfaces_DTC_Entity): New subprogram that sets the DTC_Entity
	attribute for each primitive operation covering interface subprograms
	(Expand_Dispatching_Call, Fill_DT_Entry, Make_DT, Set_All_DT_Position):
	These subprograms were upgraded to give support to abstract interfaces

	* rtsfind.ads (type RE_Id): Add RE_Descendant_Tag,
	RE_Is_Descendant_At_Same_Level, RE_Get_Access_Level, and
	RE_Set_Access_Level.
	(RE_Unit_Table): Add entries for new Ada.Tags operations.
	Add support to call the followig new run-time subprograms:
	IW_Membership, Register_Interface_Tag, and Set_Offset_To_Top

	* sem_ch3.adb (Constant_Redeclaration): Allow a deferred constant to
	match its full declaration when both have an access definition with
	statically matching designated subtypes.
	(Analyze_Component_Declaration): Delete commented out code that was
	incorrectly setting the scope of an anonymous access component's type.
	(Process_Discriminants): Set Is_Local_Anonymous_Access for the type of
	an access discriminant when the containing type is nonlimited.
	(Make_Incomplete_Type_Declaration): Create an incomplete type
	declaration for a record type that includes self-referential access
	components.
	(Check_Anonymous_Access_Types): Before full analysis of a record type
	declaration, create anonymous access types for each self-referential
	access component.
	(Analyze_Component_Declaration, Array_Type_Declaration): Indicate that
	an access component in this context is a Local_Anonymous_Access, for
	proper accessibility checks.
	(Access_Definition): Set properly the scope of the anonymous access type
	created for a stand-alone access object.
	(Find_Type_Of_Object): An object declaration may be given with an access
	definition.
	(Complete_Subprograms_Derivation): New subprogram used to complete
	type derivation of private tagged types implementing interfaces.
	In this case some interface primitives may have been overriden
	with the partial-view and, instead of re-calculating them, they
	are included in the list of primitive operations of the full-view.
	(Build_Derived_Record_Type): Modified to give support to private
	types implemening interfaces.
	(Access_Definition): Reject ALL on anonymous access types.
	(Build_Derived_Record_Type): In the case of Ada 2005, allow a tagged
	type derivation to occur at a deeper accessibility level than the
	parent type.
	For the case of derivation within a generic body however, disallow the
	derivation if the derived type has an ancestor that is a formal type
	declared in the formal part of an enclosing generic.
	(Analyze_Object_Declaration): For protected objects, remove the check
	that they cannot contain interrupt handlers if not declared at library
	level.
	(Add_Interface_Tag_Components): New subprogram to add the tag components
	corresponding to all the abstract interface types implemented by a
	record type or a derived record type.
	(Analyze_Private_Extension_Declaration, Build_Derived_Record_Type,
	Derived_Type_Declaration, Find_Type_Name, Inherit_Components,
	Process_Full_View, Record_Type_Declaration): Modified to give
	support to abstract interface types
	(Collect_Interfaces): New subprogram that collects the list of
	interfaces that are not already implemented by the ancestors
	(Process_Full_View): Set flag Has_Partial_Constrained_View appropriately
	when partial view has no discriminants and full view has defaults.
	(Constrain_Access): Reject a constraint on a general access type
	if the discriminants of the designated type have defaults.
	(Access_Subprogram_Declaration): Associate the Itype node with the inner
	full-type declaration or subprogram spec. This is required to handle
	nested anonymous declarations.
	(Analyze_Private_Extension_Declaration, Build_Derived_Record_Type,
	Derived_Type_Declaration, Find_Type_Name, Inherit_Components,
	Process_Full_View, Record_Type_Declaration): Modified to give
	support to abstract interface types
	(Derive_Subprograms): Addition of a new formal to indicate if
	we are in the case of an abstact-interface derivation
	(Find_Type_Of_Subtype_Indic): Moved from the body of the package
	to the specification because it is requied to analyze all the
	identifiers found in a list of interfaces

	* debug.adb: Complete documentation of flag "-gnatdZ"

	* exp_ch3.adb: Implement config version of persistent_bss pragma
	(Check_Stream_Attributes): Use Stream_Attribute_Available instead of
	testing for TSS presence to properly enforce visibility rules.
	(Freeze_Record_Type): Code cleanup. Modified to call the subprogram
	Make_Abstract_Interfaces_DT to generate the secondary tables
	associated with abstract interfaces.
	(Build_Init_Procedure): Modified to initialize all the tags
	corresponding.
	(Component_Needs_Simple_Initialization): Similar to other tags,
	interface tags do not need initialization.
	(Freeze_Record_Type): Modified to give support to abstract interface
	types.
	(Expand_N_Object_Declaration): Do not generate an initialization for
	a scalar temporary marked as internal.

	* exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Handle properly an
	in-out parameter that is a component in an initialization procedure,
	whose constraint might depend on discriminants, and that may be
	misaligned because of packing or representation clauses.
	(Is_Legal_Copy): New predicate to determine whether a possibly
	misaligned in-out actual can actually be passed by copy/return. This
	is an error in case the type is by_reference, and a warning if this is
	the consequence of a DEC import pragma on the subprogram.
	(Expand_Call, Freeze_Subprogram): Modified to give support to abstract
	interface types
	(Expand_Inlined_Call): Mark temporary generated for the return value as
	internal, so that no useless scalar normalization is generated for it.
	(Expand_N_Subprogram_Declaration): Save unanalyzed body so calls to
	null procedure can always be inlined.
	(Expand_N_Subprogram_Declaration): If this is the declaration of a null
	procedure, generate an explicit empty body for it.

	* exp_util.ads, exp_util.adb (Find_Interface_ADT): New subprogram.
	Given a type implementing an interface, returns the corresponding
	access_disp_table value.
	(Find_Interface_Tag): New subprogram. Given a type implementing an
	interface, returns the record component containing the tag of the
	interface.
	(Find_Interface_Tag): New overloaded subprogram. Subsidiary to the
	previous ones that return the corresponding tag and access_disp_table
	entities.
	(Is_Predefined_Dispatching_Operation): Determines if a subprogram
	is a predefined primitive operation.
	(Expand_Subtype_From_Expr): If the expression is a selected component
	within an initialization procedure, compute its actual subtype, because
	the component may depend on the discriminants of the enclosing record.

	* i-cpp.ads, i-cpp.adb:
	This package has been left available for compatibility with previous
	versions of the frontend. As part of the new layout this is now a
	dummy package that uses declarations available at a-tags.ads

	* par-ch3.adb (P_Identifier_Declarations): Give an error for use of
	"constant access" and "aliased [constant] access" when not compiling
	with -gnat05.
	Suppress Ada 2005 keyword warning if -gnatwY used
	(P_Identifier_Declarations): Add support for object declarations with
	access definitions.
	(Private_Extension_Declaration): Complete the documentation
	(P_Derived_Type_Def_Or_Private_Ext_Decl): Fill the inteface_list
	attribute in case of private extension declaration
	(P_Type_Declaration): Mark as "abstract" the type declarations
	corresponding with protected, synchronized and task interfaces
	(P_Declarative_Items): "not" and "overriding" are overriding indicators
	for a subprogram or instance declaration.

	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Verify that an
	instantiation that is a dispatching operation has controlling access
	parameters that are null excluding.
	Save and restore Ada_Version_Explicit, for implementation of AI-362
	(Validate_Derived_Type_Instance): Add check for abstract interface
	types.
	(Analyze_Formal_Package): Establish Instantiation source for the copy of
	the generic that is created to represent the formal package.
	(Analyze_Package_Instantiation): Instantiate body immediately if the
	package is a predefined unit that contains inlined subprograms, and
	we are compiling for a Configurable_Run_Time.
	(Instantiate_Formal_Subprogram): Indicate that null default subprogram
	If the program has a null default, generate an empty body for it.

	* sem_ch6.adb, sem_ch9.adb (Analyze_Subprograms_Declaration): Update
	error message condition, null procedures are correctly detected now.
	(New_Overloaded_Entity): Bypass trivial overriding indicator check
	for subprograms in the context of protected types. Instead, the
	indicator is examined in Sem_Ch9 while analysing the subprogram
	declaration.
	(Check_Overriding_Indicator): Check consistency of overriding indicator
	on subprogram stubs as well.
	(Analyze_Subprogram_Declaration): Diagnose null procedures declared at
	the library level.
	(Analize_Subprogram_Specification): When analyzing a subprogram in which
	the type of the first formal is a concurrent type, replace this type
	by the corresponding record type.
	(Analyze_Subprogram_Body): Undo the previous work.
	(Analyze_Procedure_Call): If the call has the form Object.Op, the
	analysis of the prefix ends up analyzing the call itself, after which
	we are done.
	(Has_Interface_Formals): New subprogram subsidiary to analyze
	subprogram_specification that returns true if some non
	class-wide interface subprogram is found
	(New_Overloaded_Entity): Modified to give support to abstract
	interface types
	(Conforming_Types): In Ada 2005 mode, conformance checking of anonymous
	access to subprograms must be recursive.
	(Is_Unchecked_Conversion): Improve the test that recognizes
	instantiations of Unchecked_Conversion, and allows them in bodies that
	are to be inlined by the front-end. When the body comes from an
	instantiation, a reference to Unchecked_Conversion will be an
	Expanded_Name, even though the body has not been analyzed yet.
	Replace Is_Overriding and Not_Overriding in subprogram_indication with
	Must_Override and Must_Not_Override, to better express intent of AI.
	(Analyze_Subprogram_Body): If an overriding indicator is given, check
	that it is consistent with the overrinding status of the subprogram
	at this point.
	(Analyze_Subprogram_Declaration): Indicate that a null procedure is
	always inlined.
	If the subprogram is a null procedure, indicate that it does not need
	a completion.

	* sem_disp.adb (Check_Controlling_Type): Give support to entities
	available through limited-with clauses.
	(Check_Dispatching_Operation): A stub acts like a body, and therefore is
	allowed as the last primitive of a tagged type if it has no previous
	spec.
	(Override_Dispatching_Operation, Check_Dispatching_Operation): Modified
	to give support to abstract interface types

	* sem_res.adb (Valid_Conversion): Perform an accessibility level check
	in the case where the target type is an anonymous access type of an
	object or component (that is, when Is_Local_Anonymous_Access is true).
	Prevent the special checks for conversions of access discriminants in
	the case where the discriminant belongs to a nonlimited type, since
	such discriminants have their accessibility level defined in the same
	way as a normal component of an anonymous access type.
	(Resolve_Allocator): When an allocator's designated type is a class-wide
	type, check that the accessibility level of type given in the
	allocator's expression or subtype indication is not statically deeper
	than the level of the allocator's access type.
	(Check_Discriminant_Use): Diagnose discriminant given by an expanded
	name in a discriminant constraint of a record component.
	(Resolve_Explicit_Dereference): Do not check whether the type is
	incomplete when the dereference is a use of an access discriminant in
	an initialization procedure.
	(Resolve_Type_Conversion): Handle conversions to abstract interface
	types.
	(Valid_Tagged_Conversion): The conversion of a tagged type to an
	abstract interface type is always valid.
	(Valid_Conversion): Modified to give support to abstract interface types
	(Resolve_Actuals): Enable full error reporting on view conversions
	between unrelated by_reference array types.
	The rule for view conversions of arrays with aliased components is
	weakened in Ada 2005.
	Call to obsolescent subprogram is now considered to be a violation of
	pragma Restrictions (No_Obsolescent_Features).
	(Check_Direct_Boolean_Operator): If the boolean operation has been
	constant-folded, there is nothing to check.
	(Resolve_Comparison_Op, Resolve_Equality_Op, Resolve_Boolean_Op): Defer
	check on possible violation of restriction No_Direct_Boolean_Operators
	until after expansion of operands, to prevent spurious errors when
	operation is constant-folded.

	* sem_type.ads, sem_type.adb (Covers, Intersect_Types, Specific_Type,
	Has_Compatible_Type): Modified to give support to abstract interface
	types.
	(Interface_Present_In_Ancestor): New function to theck if some ancestor
	of a given type implements a given interface

	* sem_ch4.adb (Analyze_Call): Handle properly an indirect call whose
	prefix is a parameterless function that returns an access_to_procedure.
	(Transform_Object_Operation): Handle properly function calls of the
	form Obj.Op (X), which prior to analysis appear as indexed components.
	(Analyze_One_Call): Complete the error notification to help new Ada
	2005 users.
	(Analyze_Allocator): For an allocator without an initial value, where
	the designated type has a constrained partial view, a discriminant
	constraint is illegal.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* a-textio.adb (Set_Col): Fix two errors noticed recently, having to
	do with treatment of Set_Col when positioned at end of line character.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* atree.adb: (Elist*): Protect against uninitialized field

2005-06-14  Ed Schonberg  <schonberg@adacore.com>

	* checks.adb (Install_Null_Excluding_Check): Do not generate checks
	for an attribute reference that returns an access type.
	(Apply_Discriminant_Check): No need for check if (designated) type has
	constrained partial view.

	(Apply_Float_Conversion_Check): Generate a short-circuit expression for
	both bound checks, rather than a conjunction.
	(Insert_Valid_Check): If the expression is an actual that is an indexed
	component of a bit-packed array, force expansion of the packed element
	reference, because it is specifically inhibited elsewhere.

2005-06-14  Vincent Celier  <celier@adacore.com>

	* clean.adb (Clean_Project): Correctly delete executable specified as
	absolute path names.

	* make.adb (Gnatmake): Allow relative executable path names with
	directory information even when project files are used.
	(Change_To_Object_Directory): Fail gracefully when unable to change
	current working directory to object directory of a project.
	(Gnatmake): Remove exception handler that could no longer be exercized
	(Compile_Sources.Compile): Use deep copies of arguments, as some of them
	may be deallocated by Normalize_Arguments.
	(Collect_Arguments): Eliminate empty arguments

	* gnatcmd.adb (All_Projects): New Boolean flag, initialized to False,
	and set to True when -U is used for GNAT PRETTY or GNAT METRIC.
	(Check_Project): Return False when Project is No_Project. Return True
	when All_Projects is True.
	(GNATCmd): Recognize switch -U for GNAT PRETTY and GNAT METRIC and set
	All_Projects to True.
	Minor reformatting

2005-06-14  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* einfo.ads, einfo.adb (Is_Local_Anonymous_Access): New flag on
	anonymous access types, to indicate that the accessibility level of
	the type is determined by that of the enclosing declaration.
	(Has_Persistent_BSS): New flag
	(Set_Is_Primitive_Wrapper): Upgrade the barrier to allow the usage
	of this attribute with functions.
	(Is_Primitive_Wrapper): Remove the barrier.
	(Has_Specified_Stream_Input, Has_Specified_Stream_Output,
	Has_Specified_Stream_Read, Has_Specified_Stream_Write):
	New subprograms.
	(Set_Has_Specified_Stream_Input, Set_Has_Specified_Stream_Output,
	Set_Has_Specified_Stream_Read, Set_Has_Specified_Stream_Write):
	New subprograms.
	(Is_Pure_Unit_Access_Type): New flag
	(Abstract_Interfaces): Complete the assertion to cover all usages.
	(Set_Is_Interface): Complete the assertion to cover all usages.
	(Is_Primitive_Wrapper): New attribute.
	(Is_Obsolescent): Now applies to all entities (though it is only set
	for subprograms currently)
	New flag:  Has_Constrained_Partial_View, to implemente Ada 2005 AI-363,
	which solves various problems concerning access subtypes.
	(Has_Persistent_BSS): New flag
	(Is_Primitive_Wrapper, Set_Primitive_Wrapper): Code cleanup.
	Remove these subprograms because this attribute is currently
	not used.
	New entity flags:
	Has_Specified_Stream_Input (Flag190)
	Has_Specified_Stream_Output (Flag191)
	Has_Specified_Stream_Read (Flag192)
	Has_Specified_Stream_Write (Flag193)
	Present in all type and subtype entities. Set for a given view if the
	corresponding stream-oriented attribute has been defined by an
	attribute definition clause. When such a clause occurs, a TSS is set
	on the underlying full view; the flags are used to track visibility of
	the attribute definition clause for partial or incomplete views.
	(Is_Pure_Unit_Access_Type): New flag
	Clarify use of Is_Internal.
	(Is_Primitive_Wrapper): New attribute present in primitive subprograms
	internally generated to wrap the invocation of tasks and protected
	types that implement interfaces.
	(Implementation_Base_Type): Documentation correction
	(Is_Obsolescent): Now applies to all entities (though it is only set
	for subprograms currently)
	New flag:  Has_Constrained_Partial_View, to implement Ada 2005 AI-363,
	which solves various problems concerning access subtypes.

	* exp_ch9.adb (Type_Conformant_Parameters): Introduce mode conformance
	for examined parameters. Identify unequal parameter list lengths as
	non-conformant parameters.
	(Overriding_Possible): Do not check for "All" qualifier in declaration
	of controlling access parameter, following prescription of AI-404.
	(Build_Entry_Wrapper_Spec, Build_Entry_Wrapper_Body): New subprograms
	that build the procedure body that wraps an entry invocation
	(Build_Corresponding_Record, Build_Protected_Sub_Specification,
	Expand_N_Protected_Body, Expand_N_Protected_Type_Declaration,
	Expand_N_Task_Body, Expand_N_Task_Type_Declaration): Modified to
	give support to abstract interface types

	* freeze.adb (Freeze_Entity): Issue error message if
	Is_Pure_Unit_Access_Type set, unless we are in Ada 2005 mode and the
	type has no storage pool (Ada 2005) AI-366.
	Also modified to give support to abstract interface types
	(Freeze_Subprogram): Issue an error for a dispatching subprogram with an
	Inline_Always pragma.

	* par-ch9.adb (P_Task_Items): Reserved words "not" or "overriding" may
	now begin an entry declaration.
	(P_Entry_Or_Subprogram_With_Indicator): New procedure in
	P_Protected_Operation_Declaration_Opt. Parse an entry declaration or
	a subprogram declaration preceded by an overriding indicator.
	(P_Protected_Operation_Declaration_Opt): Add case for parsing entry
	declarations or subprogram declarations preceded by reserved words
	"not" or "overriding".
	(P_Entry_Declaration): Update comment. Parse and check overriding
	indicator, set semantic flags of entry declarations.
	(P_Task): New error message in case of private applied
	to a task type declaration.
	(P_Protected): New error message in case of private applied
	to a task type declaration.

	* sem_ch7.adb (Preserve_Full_Attributes): Modified to handle the case
	in which the full view of a type implementing an interface is a
	concurrent type.
	(Has_Overriding_Pragma): Remove obsolete implementation of AI-218.
	Declare_Inherited_Private_Subprograms): If an explicit operation
	overrides an operation that is inherited in the private part, mark the
	explicit one as overriding, to enable overriding indicator checks.
	(Preserve_Full_Attributes): Propagate Is_Unchecked_Union attribute from
	full view to partial view, to simplify handling in back-end.

	* sprint.adb: Print interface lists where needed: derived types,
	protected types, task types.
	output "is null" for null procedures. Part of implementation of

	* sem_cat.adb (Validate_Access_Type_Declaration): Implement AI-366
	relaxation of rules for access types in pure, shared passive partitions.

	* exp_strm.adb (Build_Mutable_Record_Read_Procedure): Reorganize to
	first read discriminants into temporary objects, performing checks on
	the read values, then possibly performing discriminant checks on the
	actual (if it is constrained), and only finally reading the components
	into a constrained temporary object.
	(Build_Elementary_Input_Call): Adjust the specific circuitry for the
	case of reading discriminants of a mutable record type to recognize
	the new form of the code generated by
	Build_Mutable_Record_Read_Procedure.

	* exp_tss.ads, exp_tss.adb (Make_Init_Proc_Name): Reimplement in terms
	of a simple call to Make_TSS_Name.
	(Make_TSS_Name_Local): Add the TSS name as the last thing in the name
	buffer, in order for Is_TSS to work correctly on local TSS names.

	* sem_attr.ads, sem_attr.adb (Resolve_Attribute, case 'Access): Use flag
	Is_Local_Anonymous_Access to check legaliy of attributes in the
	context of  access components and stand-alone access objects.
	(Stream_Attribute_Available): In Ada 95 mode, a stream attribute is
	treated as available for a limited private type if there is an
	attribute_definition_clause that applies to its full view, but not in
	other cases where the attribute is available for the full view
	(specifically, the sole fact that the full view is non-limited does not
	make the attribute available for the partial view).
	(Build_Access_Subprogram_Type): Diagnose attempt to apply 'access to a
	non-overloaded intrinsic subprogram.
	(Check_Stream_Attribute): Reject an attribute reference for an
	unavailable stream attribute even if the prefix is not a limited type
	(case of a 'Input attribute reference for an abstract, non-classwide
	type)
	(Stream_Attribute_Available): New function to determine whether a stream
	attribute is available at a place.
	(Check_Attribute): Use Stream_Attribute_Available instead of just
	testing for TSS presence on the implementation base type.
	(Analyze_Attribute): Modified to give support to task interfaces.
	(Analyze_Access_Attribute): Add error check for use of an Access (or
	Unrestricted_Access) attribute with a subprogram marked as
	Inline_Always.
	(Analyze_Attribute, case Attribute_Address): Add error check for use of
	an Address attribute with a subprogram marked as Inline_Always.
	Update Eval_Attribute to handle new value of Width from AI-395

	* sem_ch13.adb (Analyze_Stream_TSS_Definition): New subprogram.
	(Analyze_Attribute_Definition_Clause, cases Input, Output, Read, Write):
	Factor common code across the stream-oriented attribute circcuits into
	a new subprogram, Analyze_Stream_TSS_Definition. The new uniform
	processing is functionally identical to the previous duplicated one,
	except that an expression that denotes an abstract subprogram will now
	be rejected, as mandated by AI-195 item 5.

	* sem_util.ads, sem_util.adb (Type_Access_Level): Use flag
	Is_Local_Anonymous_Access to apply accessibility checks to access
	components and stand-alone access objects.
	(Has_Discriminant_Dependent_Constraint): Moved to spec for use
	elsewhere.
	(Is_Potentially_Persistent_Type): New function
	(Is_Dependent_Component_Of_Mutable_Object): If the enclosing object is
	a heap-object whose type has a constrained partial view, the object is
	unconstrained and the component may depend on a discriminant, making its
	renaming illegal.

	* sinfo.ads, sinfo.adb
	(Must_Not_Override): Flag applicable to N_Entry_Declaration.
	(Must_Override): Flag applicable to N_Entry_Declaration.
	Indicate that interface_list can appear in single task and single
	protected declarations.
	Replace Is_Overriding and Not_Overriding with Must_Override and
	Must_Not_Override, to better express intent of AI.
	Is_Overriding, Not_Overriding: Ada2005 flags that indicate the presence
	of an overriding indicator in a subprogram or instance.
	Ada 2005 (AI-248) Null_Present can appear in a procedure specification.
	Add the overriding indicator [[not] overriding] construct to the
	following grammar productions:
	 ENTRY_DECLARATION
	 GENERIC_INSTANTIATION
	 SUBPROGRAM_SPECIFICATION

	* par-ch10.adb (P_Compilation_Unit): Subprogram declaration or body
	can start with an overriding indicator.

	* par-ch6.adb (P_Subprogram): Recognize overriding indicator, and set
	flags accordingly on subrogram specifications or instances.

	* sem_ch8.adb:
	(Analyze_Subprogram_Renaming): For a renaming_as_body, verify that the
	overriding_indicator, if present, is consistent with status of spec.
	Improve error message for null-excluding checks on controlling access
	parameters.
	(Check_In_Previous_With_Clause): Protect the frontend against
	previously reported critical errors in the context clauses.
	Save and restore Ada_Version_Explicit, for implementation of AI-362
	(Analyze_Subprogram_Renaming): If the new entity is a dispatching
	operation verify that controlling formals of the renamed entity that
	are access parameters are explicitly non-null.
	(Find_Expanded_Name): Improve error message when prefix is an illegal
	reference to a private child unit.

	* exp_imgv.adb, s-imgwch.ads, s-imgwch.adb, s-valwch.adb,
	s-valwch.ads, s-widwch.adb, s-widwch.ads, s-wwdcha.adb, s-wwdwch.adb:
	Rewrite to correspond to new wide character names in AI-395

	* par-ch12.adb (P_Formal_Subprogram_Declaration): Recognize null
	default procedures.

2005-06-14  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* errout.ads, errout.adb (Error_Msg_NW): Only emit warning on user
	code, not on the bodies of predefined operations, to cut down on
	spurious noise.

2005-06-14  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Aggr_Size_OK): An array with no components can always
	be expanded in place. The size computation does not require a
	subtraction, which would raise an exception on a compiler built with
	assertions when the upper bound is Integer'first.
	(Flatten): For an array of composite components, take into account the
	size of the components to determine whether it is safe to expand the
	array into a purely positional representation.

2005-06-14  Thomas Quinot  <quinot@adacore.com>

	* exp_ch2.adb (Param_Entity): Take the case of an expanded_name
	denoting a formal parameter into account.

2005-06-14  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch7.adb (Find_Node_To_Be_Wrapped): If the node appears within
	the entry_call alternative of a conditional entry call, wrap the
	conditional entry call itself.

2005-06-14  Nicolas Setton  <setton@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_dbug.ads, exp_dbug.adb (Get_Variant_Part): Fix the encoding of
	the "simple_choice" member in a variant record, in accordance with the
	description in the package spec: the information output for a constant
	should be "S number", not "SS number".
	(Get_Encoded_Name): Return at once if not generating code. Avoids name
	overflow problem when compiling with -gnatct, for ASIS/gnatmetrics.

2005-06-14  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): For an
	RACW without any primitives, do not generate the if statement for
	dispatching by name in the PolyORB/DSA case, as it would be malformed
	(it would have an Elsif_Parts list that is not No_List, but with a
	length of 0).

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* exp_intr.adb, par-ch5.adb: Minor fix to error message text

2005-06-14  Jose Ruiz  <ruiz@adacore.com>

	* fe.h: Add entry for Opt.Exception_Locations_Suppressed so that gigi
	can determine whether pragma Suppress_Exception_Locations is in effect.

	* utils2.c (build_call_raise): Do not pass the file name to the
	exception handler if pragma Suppress_Exception_Locations is in effect.
	(build_allocator): Add and process arg IGNORE_INIT_TYPE.

2005-06-14  Emmanuel Briot  <briot@adacore.com>

	* g-debpoo.adb (Deallocate, Dereference): Improve output.

2005-06-14  Nicolas Roche  <roche@adacore.com>

	* g-diopit.adb (Wildcard_Iterator): Return directly if Path is equal
	to ""
	(Next_Level): Fix minor bug in handling of ../dir case
	(Read): Add dir separator to Directory name so that "" is understood as
	 "/"

2005-06-14  Pascal Obry  <obry@adacore.com>

	* g-dynhta.ads, g-dynhta.adb (Reset): Free the table itself after
	releasing the items.

2005-06-14  Vincent Celier  <celier@adacore.com>
	    Cyrille Comar  <comar@adacore.com>

	* g-os_lib.ads, g-os_lib.adb (Non_Blocking_Spawn): Two new versions
	with output file descriptor and with output file name.
	(Dup, Dup2): Now global procedures as they are used by two subprograms
	(Copy): Allocate the 200K buffer on the heap rather than on the stack.

2005-06-14  Thomas Quinot  <quinot@adacore.com>

	PR ada/6717
	* g-socket.ads, g-socket.adb (Inet_Addr): Special case the all-ones
	broadcast address.
	(Create_Selector): Bind listening socket used to create the signalling
	socket pair to 127.0.0.1 to limit the scope for 'theft' of connection.
	Set listen backlog to 1 to ensure that we detect socket theft by a
	failure of our own connect(2) call.
	(Check_Selector): Improve documentation of the selector mechanism.
	(Broadcast_Inet_Addr): New constant.

2005-06-14  Gary Dismukes  <dismukes@adacore.com>

	* layout.adb (Discrimify): Remove resetting of Vtype to the underlying
	type which turns out to be an incomplete and incorrect fix.
	(Layout_Array_Type): Use Underlying_Type when checking whether the scope
	of the type is declared in a record (for determination of insertion
	type).
	(SO_Ref_From_Expr): Test whether Vtype denotes a partial or full view of
	a private type and ensure that the primary entity is used for the type
	of the newly created function's V formal by taking the Etype of the
	view.

2005-06-14  Javier Miranda  <miranda@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* lib-load.ads, lib-load.adb (Load_Unit): Addition of a new parameter
	that indicates if we are parsing a compilation unit found in a
	limited-with clause.
	It is use to avoid the circularity check.

	* par.ads, par.adb (Par): Addition of a new parameter to indicate if
	we are parsing a compilation unit found in a limited-with clause. This
	is use to avoid the circularity check.

	* par-load.adb (Load): Indicate Lib.Load_Unit if we are loading the
	unit as a consequence of parsing a limited-with clause. This is used
	to avoid the circularity check.

	* sem_ch10.adb: Suppress Ada 2005 unit warning if -gnatwY used
	(Analyze_Context): Limited-with clauses are now allowed
	in more compilation units.
	(Analyze_Subunit_Context, Check_Parent): Protect the frontend
	againts previously reported critical errors in context clauses
	(Install_Limited_Withed_Unit): Code cleanup plus static detection
	of two further errors: renamed subprograms and renamed packages
	are not allowed in limited with clauses.
	(Install_Siblings): Do not install private_with_clauses on the package
	declaration for a non-private child unit.
	(Re_Install_Parents): When a parent of the subunit is reinstalled,
	reset visibility of child units properly.
	(Install_Withed_Unit): When a child unit appears in a with_clause of its
	parent, it is immediately visible.

2005-06-14  Ed Schonberg  <schonberg@adacore.com>
	    Emmanuel Briot  <briot@adacore.com>

	* lib-xref.ads, lib-xref.adb (Generate_Definition): Treat any entity
	declared within an inlined body as referenced, to prevent spurious
	warnings.
	(Output_One_Ref): If an entity renames an array component, indicate in
	the ALI file that this aliases (renames) the array. Capture as well
	function renamings that rename predefined operations.
	Add information about generic parent for package and subprogram
	instances.
	(Get_Type_Reference): For a subtype that is the renaming of an actual in
	an instantiation, use the first_subtype to ensure that we don't generate
	cross-reference information for internal types.
	For objects and parameters of a generic private type, retain the '*'
	indicator to distinguish such an entity from its type.

	* ali.ads (Xref_Entity_Record): New fields Iref_File_Num and Iref_Line,
	to store information about instantiated entities.

	* ali.adb (Scan_ALI): Add support for parsing the reference to the
	generic parent

	* xref_lib.adb (Skip_To_Matching_Closing_Bracket): New subprogram
	(Parse_Identifier_Info, Parse_Token): Add support for the generic parent
	information.

2005-06-10  Doug Rupp  <rupp@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>

	* Make-lang.in: Add initialize.o when needed.
	Remove obsolete references to RT_FLAGS.
	Add missing dependencies for sdefault.o

	* initialize.c: New file.

	* init.c [VMS] Declare ADA$ externs weak to fix build problem in IVMS.
	[VMS] cond_signal_table: Fix problem in declaration.
	[VMS] __gnat_error_handler: rewrite.
	Move all __gnat_initialize() routines to initialize.c
	Specialize the former "hpux" section to "hppa hpux", as this is what the
	section really is here for and we now have other hpux ports that need
	different contents.
	(__gnat_adjust_context_for_raise) i386-linux: First version of this
	function for this target. Adjust PC by one in the machine context. This
	adjustment was previously done in the MD_FALLBACK_FRAME_STATE_FOR, but
	it is more reliable to do that in the signal handler itself.
	(__gnat_install_handler) i386-linux: Set SA_SIGINFO in the sigaction
	flags, so that the handler is passed the context structure to adjust
	prior to the raise.
	(__gnat_error_handler) i386-linux: Adjust the signature to match what a
	SA_SIGINFO sigaction should look like. Call
	__gnat_adjust_context_for_raise before actually raising. Cleanup unused
	Machine_State_Operations stuff.
	Add conditional code so that the x86_64 is also supported.

2005-06-14  Pascal Obry  <obry@adacore.com>

	* mdll.adb (Get_Dll_Name): New routine that returns the DLL name given
	the library name.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* opt.ads, opt.adb: New flags for persistent_bss mode
	Add Ada_Version_Explicit, for implementation of AI-362
	Add Assertions_Enabled_Config and associated handling
	Needed since setting can be changed with Assertion_Policy pragma
	Add new flag Warn_On_Ada_2005_Compatibility

	* switch-c.adb: Recognize -gnatwy/Y
	Set Ada_Version_Explicit, for implementation of AI-362
	The -gnatg switch now includes -gnatyu

	* usage.adb: Add -gnatwy/Y
	Remove wrong asterisk on -gnatwX line
	Add line for -gnatyu switch

2005-06-14  Vincent Celier  <celier@adacore.com>

	* osint.adb (Add_Default_Search_Dirs): Put source and object
	directories of project files before directories coming from
	ADA_INCLUDE_PATH and ADA_OBJECTS_PATH.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	PR ada/15613
	* par-ch2.adb (Scan_Pragma_Argument): New procedure
	(P_Pragma): Implement RM 2.8(4) check for no pos args after named args

2005-06-14  Vincent Celier  <celier@adacore.com>

	* prep.adb (Preprocess): Ignore error when scanning the first token of
	a line.

2005-06-14  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Suffix_For): Change default suffix for C++ to ".cpp"
	(Check_Stand_Alone_Library): If the specified reference symbol file does
	not exist, only issue a warning when the symbol policy is not
	Controlled. And, when symbol policy is Compliant, set the symbol
	policy to Autonomous.

2005-06-14  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Pre_Parse_Context_Clause): Call Set_Is_Not_Last_In_List
	when the project file in a with clause is not the last one, that is the
	project file name is followed by a comma.
	* prj-pp.adb: (First_With_In_List): New Boolean global variable
	(Print): Issue list of project files separated by commas in with clauses
	according to the values returned by Is_Not_Last_In_List.
	* prj-tree.ads, prj-tree.adb: (Is_Not_Last_In_List): New function
	(Set_Is_Not_Last_In_List): New procedure

2005-06-14  Eric Botcazou  <ebotcazou@adacore.com>

	* s-atacco.ads: Put a pragma No_Strict_Aliasing on Object_Pointer.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* scng.adb: Add call to new Check_EOF routine
	(Accumulate_Checksum): Properly handle wide wide char >= 2 ** 24
	Add some comments regarding wide character handling

	* style.ads, styleg.ads, styleg.adb: Implement new style switch -gnatyu

	* stylesw.ads, stylesw.adb: Implement new style switch -gnatyu

	* g-utf_32.ads, g-utf_32.adb (Is_UTF_32_Non_Graphic): Other_Format
	characters are now considered graphic characters and hence yield false
	in this call.

	* nmake.adt: Modify header so that xnmake does not generate output
	files with multiple blank lines.

	* treeprs.adt: Remove a blank line so that output from xtreeprs does
	not have an extra blank line

2005-06-14  Gary Dismukes  <dismukes@adacore.com>

	* sem_aggr.adb (Aggregate_Constraint_Checks): Apply a conversion to the
	expression when the component type is an anonymous access type to
	ensure that appropriate accessibility checks are done.

	* sem_ch5.adb (Analyze_Assignment): Apply a implicit conversion to the
	expression of an assignment when the target object is of an anonymous
	access type. This ensures that required accessibility checks are done.
	(One_Bound): Move the check for type Universal_Integer to
	Process_Bounds.
	(Process_Bounds): Check whether the type of the preanalyzed range is
	Universal_Integer, and in that case set Typ to Integer_Type prior
	to setting the type of the original range and the calls to One_Bound.

2005-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_case.adb (Expand_Others_Choice): Improve warning.

2005-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_eval.adb (Subtypes_Statically_Match): Use discriminant
	constraint of full view if present, when other type is discriminated.
	(Eval_Relational_Op): Recognize tests of pointer values against Null,
	when the pointer is known to be non-null, and emit appropriate warning.

2005-06-14  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	PR ada/10671
	* sem_prag.adb: Implement pragma Persistent_BSS
	Remove obsolete pragma Persistent_Data, Persistent_Object
	Set Ada_Version_Explicit, for implementation of AI-362
	Test Ada_Version_Explicit for Preelaborate_05 and Pure_05
	Add processing for pragma Pure_05 and Preelaborate_05
	Add processing for Assertion_Policy pragma
	Add pragma identifiers for Assert
	(Analyze_Pragma, case Assert): Check number of arguments
	(Process_Inline): Additional guard against an illegal program, where the
	argument of the pragma is undefined, and warnings on redundant
	constructs are enabled.
	(Analyze_Pragma, case Obsolescent): Allow an optional second argument
	Ada_05 to this pragma, specifying that the pragma is only active in
	Ada_05 mode.
	(Check_Arg_Order): New procedure
	Add appropriate calls to this procedure throughout
	Also throughout, check entity name before doing any other checks

	* snames.h snames.ads, snames.adb: Add pragma Persistent_BSS
	Remove obsolete pragma Persistent_Data, Persistent_Object
	Add entries for pragma Pure_05 and Preelaborate_05
	Add entries for Assertion_Policy pragma and associated names
	Add some names for pragma argument processing

	* tbuild.ads, tbuild.adb: (Make_Linker_Section_Pragma): New function

2005-06-14  Ed Schonberg  <schonberg@adacore.com>

	* sem_warn.adb (Warn_On_Known_Condition): If the constant expression
	appears within a negation (either from source or as a rewriting of
	inequality) adjust text of warning accordingly.

2005-06-14  Thomas Quinot  <quinot@adacore.com>

	* s-strxdr.adb: Follow AI95-00132

2005-06-14  Arnaud Charlet  <charlet@adacore.com>

	* s-tasren.adb (Exceptional_Complete_Rendezvous): Fix race condition.

2005-06-14  Arnaud Charlet  <charlet@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>

	* s-tposen.adb, s-tpobop.adb
	(Exceptional_Complete_Rendezvous): Save the occurrence and not only
	the exception id.
	(PO_Do_Or_Queue): Before queuing a task on an entry queue we check that
	there is no violation of the Max_Entry_Queue_Length restriction (if it
	has been set); Program_Error is raised otherwise.
	(Requeue_Call): Before requeuing the task on the target entry queue we
	check that there is no violation of the Max_Entry_Queue_Length
	restriction (if it has been set); Program_Error is raised otherwise.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* styleg.adb: Fix several remaining problems in -gnatyu switch
	Blank line count not reset at start
	Scanning outside source buffer in some cases
	Confusing message for blanks at end of file
	Non-empty blank lines not recognized

	* nmake.adt: Modify header so that xnmake does not generate output
	files with multiple blank lines.

	* treeprs.adt: Remove a blank line so that output from xtreeprs does
	not have an extra blank line

2005-06-14  Sergey Rybin  <rybin@adacore.com>

	* styleg-c.adb (Body_With_No_Spec): Remove ':' from warning message.

2005-06-14  Doug Rupp  <rupp@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* vms_conv.ads, vms_conv.adb: Remove "Library" command.
	Update copyright.

	* vms_data.ads: Add entry for -gnaty/Y [NO]ADA_2005_COMPATIBILITY
	Remove "Library" command.
	Change keyword for style check -gnatyd from NOCRLF to
	DOS_LINE_ENDINGS.
	Remove useless second style check keyword NONE
	Remove help documentation for inexistent style check keyword
	RM_COLUMN_LAYOUT.
	Add help documentation for style check keywords DOS_LINE_ENDINGS,
	UNNECESSARY_BLANK_LINES and XTRA_PARENS
	Add UNNECESSARY_BLANK_LINES for -gnatyu
	Add qualifiers /ALL_PROJECTS (-U) for GNAT PRETTY and GNAT METRIC

	* ug_words: Add entry for -gnaty/Y [NO]ADA_2005_COMPATIBILITY

2005-06-14  Vincent Celier  <celier@adacore.com>

	* makegpr.adb (Compile_Link_With_Gnatmake): Invoke gnatmake with -d if
	gprmake was invoked with -d.
	(Compile_Sources): If -d was used, output the "completed ..." message
	for each compilation.
	(Scan_Arg): Recognize new switch -d
	When -c and at least one main is specified, set
	Unique_Compile to True to guarantee that no other sources will be
	compiled.

2005-06-14  Matthew Heaney  <heaney@adacore.com>

	* a-swunha.ads, a-swunha.adb: Removed. Replaced by a-swuwha.ad[sb]
	* a-swuwha.ads, a-swuwha.adb: New files

	* a-szunha.ads, a-szunha.adb: Removed, replaced by a-szuzha.ad[sb]
	* a-szuzha.ads, a-szuzha.adb: New files.

	* a-rbtgso.adb, a-crbtgo.ads, a-crbtgo.adb, a-crbtgk.ads,
	a-crbtgk.adb, a-crbltr.ads, a-coorse.ads, a-coorse.adb, a-convec.ads,
	a-convec.adb, a-coinve.ads, a-coinve.adb, a-cohata.ads, a-cohama.ads,
	a-cohama.adb, a-ciorse.ads, a-ciorse.adb, a-cihama.ads, a-cihama.adb,
	a-cidlli.ads, a-cidlli.adb, a-chtgop.ads, a-chtgop.adb, a-cdlili.ads,
	a-cdlili.adb, a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cohase.adb,
	a-cohase.ads, a-ciorma.ads, a-coorma.ads, a-ciormu.ads, a-coormu.ads,
	a-swunha.adb, a-stunha.adb, a-ciorma.adb, a-coorma.adb, a-shcain.ads,
	a-shcain.adb, a-chtgke.ads, a-chtgke.adb, a-stwiha.ads, a-stwiha.adb,
	a-strhas.adb, a-stzhas.adb: synchronized to the latest version of the
	Ada 2005 RM.

2005-06-10  Eric Botcazou  <ebotcazou@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>
	    Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    Pascal Obry  <obry@adacore.com>

	* gigi.h: (build_allocator): Add arg IGNORE_INIT_TYPE.

	* trans.c (call_to_gnu): Issue a warning for users of Starlet when
	making a temporary around a procedure call because of non-addressable
	actual parameter.
	(process_freeze_entity): If entity is a private type, capture size
	information that may have been computed for the full view.
	(tree_transform, case N_Allocator): If have initializing expression,
	check type for Has_Constrained_Partial_View and pass that to
	build_allocator.
	(tree_transform, case N_Return_Statement): Pass extra arg to
	build_allocator.

	* decl.c (annotate_value): Remove early return if -gnatR is not
	specified.
	(gnat_to_gnu_field): Don't make a packable type for a component clause
	if the position is byte aligned, the field is aliased, and the clause
	size isn't a multiple of the packable alignment. It serves no useful
	purpose packing-wise and would be rejected later on.
	(gnat_to_gnu_entity, case object): Pass extra arg to build_allocator.

	PR ada/20515
	(gnat_to_gnu_entity): Remove use of macro _WIN32 which is wrong in the
	context of cross compilers. We use TARGET_DLLIMPORT_DECL_ATTRIBUTES
	instead.
	(create_concat_name): Idem.

2005-06-10  Robert Dewar  <dewar@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>
	    Ben Brosgol  <brosgol@adacore.com>
	    Cyrille Comar  <comar@adacore.com>
	    Sergey Rybin  <rybin@adacore.com>
	    Pascal Obry  <obry@adacore.com>

	* gnat_rm.texi: Add documentation for pragma Persistent_BSS
	Document second argument (Ada_05) of pragma Obsolescent
	Add note that call to subprogram marked with pragma Obsolescent
	is now considered to be a violation of program Restrictions
	(No_Obsolescent_Features).
	(Implementation Defined Pragmas) <Machine_Attribute>: Make it clear
	that only machine-dependent attributes are supported.

	* gnat_ugn.texi:
	Commented out menu lines and empty section for gnatclean examples
	Document -gnatwy/Y
	Fix some over long lines
	Clarify and enhance documentation of ADA_PROJECT_PATH.
	Rework section 2.11.2(3) about linking with a non-GNU compiler.
	Mention new switch -fcallgraph-info.
	Mention new switch -fstack-usage.
	For gnatpp, replace '-notab' with '-N' and add this option to Index
	Corrected VMS example.
	VMS keyword for style check -gnatyd is DOS_LINE_ENDINGS, no NOCRLF
	Minor reformatting
	Add documentation for -gnatyu switch (unnecessary blank lines)
	Document new switch -U for GNAT PRETTY and GNAT METRIC
	Add note about Stdcall being handled as C convention on non Windows OS.
	Remove some junk typo in description of gnatbind -S switch
	Remove reference to Extensions_Allowed pragma
	Document the new order of the directories to be searched (source and
	object directories of project files before directories in ADA_*_PATH
	environment variables.

	* g-trasym.ads: Document that IRIX is supported

2005-06-10  Arnaud Charlet  <charlet@adacore.com>

	* Makefile.in: Add initialize.o when needed.
	Adapt to new VMS package body Symbols and subunits
	No specialized version of a-sytaco is needed for VxWorks.

	* a-wichun.ads, a-wichun.adb, a-zchuni.ads, a-zchuni.adb: New files.
	* a-zchara.ads, a-widcha.ads: New files.

	* system-hpux-ia64.ads: New file.

	* i-vxwork-x86.ads, i-vxwork.ads (intContext): Add this function which
	is imported from the VxWorks kernel.

2005-06-14  Robert Dewar  <dewar@adacore.com>

	* g-soliop-mingw.ads, g-soccon-vms.adb, a-swmwco.ads, exp_smem.adb,
	fmap.adb, a-szmzco.ads, s-traent-vms.adb, s-traent-vms.ads,
	a-direio.ads, a-exctra.ads, a-exexda.adb, a-exextr.adb, a-stream.ads,
	s-restri.ads, s-restri.adb, s-traent.adb, s-traent.ads, a-slcain.adb,
	a-stzhas.ads, a-tiinau.adb, comperr.adb, exp_ch11.adb, g-boubuf.adb,
	g-calend.adb, g-debpoo.ads, g-moreex.ads, gprep.adb, g-regpat.ads,
	i-cexten.ads, i-os2thr.ads, makeutl.ads, memroot.adb, mlib-prj.adb,
	namet.adb, namet.ads, prj-makr.adb, prj-proc.adb, sem_dist.adb,
	sem_elim.ads, s-valint.adb, s-vallli.adb, s-vallli.adb, s-vallli.ads,
	s-valllu.adb, s-valllu.ads, s-valrea.adb, s-valrea.ads, scn.adb,
	s-tasinf.adb, targparm.adb, uname.adb, uname.ads, xnmake.adb,
	xsinfo.adb, a-direct.ads: Remove extra blank lines. Minor reformatting.

2005-06-14  Thomas Quinot  <quinot@adacore.com>

	* xeinfo.adb: Fix typo in comment

2005-06-14  Javier Miranda  <miranda@adacore.com>

	* repinfo.ads: Fix typo in comment

2005-06-14  Gary Dismukes  <dismukes@adacore.com>

	* s-finimp.adb (Parent_Tag): Delete this imported function (function
	Parent_Tag is now in the visible part of Ada.Tags).
	(Get_Deep_Controller): Call Ada.Tags.Parent_Tag directly instead of
	using imported function.

2005-06-14  Bernard Banner  <banner@adacore.com>

	* vxaddr2line.adb: Add support for Windows hosted x86 vxworks. Should
	also apply for handling support for VxSim 653.

2005-06-14  Eric Botcazou  <ebotcazou@adacore.com>

	* xsnames.adb: Add automatic generation of snames.h.

2005-06-14  Thomas Quinot  <quinot@adacore.com>

	* gen-soccon.c: Add IP_MULTICAST_IF constant
	Minor reformatting and adjustments to prevent warnings.

2005-06-14  Pascal Obry  <obry@adacore.com>

	* seh_init.c: Do not include <sys/stat.h>. This is not needed.

2005-06-03  Andrew Pinski  <pinskia@physics.uc.edu>

	* trans.c (gnat_gimplify_expr): Call
	recompute_tree_invarant_for_addr_expr when we change
	the operand of the ADDR_EXPR.

2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* misc.c: Don't include errors.h.

2005-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* raise.c (db): Add ATTRIBUTE_PRINTF_2.

2005-05-29  Kazu Hirata  <kazu@cs.umass.edu>

	* cal.c, decl.c, init.c, raise.c, trans.c, utils2.c: Fix
	comment typos.
	* gnat_rm.texi, gnat_ugn.texi: Fix typos.

2005-05-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR ada/20270
	* Makefile.in: Make TGT_LIB behave correctly.

2005-04-23  DJ Delorie  <dj@redhat.com>

	* misc.c: Adjust warning() callers.

2005-04-16  Laurent Guerby  <laurent@guerby.net>

	PR ada/18847
	* a-nudira.adb (Value): Check for valid string.
	* a-nuflra.adb (Value): Likewise.

2005-04-11  Richard Sandiford  <rsandifo@redhat.com>

	* lang.opt: Refer to the GCC internals documentation instead of c.opt.

2005-04-10  Kazu Hirata  <kazu@cs.umass.edu>

	* adaint.c, init.c, tracebak.c: Fix comment typos.
	* gnat-style.texi, gnat_rm.texi, gnat_ugn.texi: Fix typos.

2005-04-07  Laurent Guerby  <laurent@guerby.net>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* Makefile.in: Add make ifeq define for hppa linux tasking support.
	* system-hpux.ads: Define Signed_Zeros to be True.
	* system-linux-hppa.ads, s-osinte-linux-hppa.ads: New files.

2005-04-01  Kazu Hirata  <kazu@cs.umass.edu>

	* adaint.c, cal.c, decl.c, gigi.h, gmem.c, init.c, link.c,
	raise.c, tracebak.c, trans.c, utils2.c, utils.c: Fix comment
	typos.

2005-03-30  Tom Tromey  <tromey@redhat.com>

	* decl.c (gnat_substitute_in_type): Don't handle FILE_TYPE.

2005-03-30  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* adaint.c (_gnat_set_close_on_exec): Mark parameters unused.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Real_Literal): Generate warning if static
	fixed-point expression has value that is not a multiple of the Small
	value.

	* opt.ads (Warn_On_Bad_Fixed_Value): New flag

	* s-taprop-tru64.adb (RT_Resolution): Return an integer number of
	nanoseconds.

	* ug_words: Add entry for [NO_]BAD_FIXED_VALUES for -gnatwb/-gnatwB

2005-03-29  Vincent Celier  <celier@adacore.com>

	* mlib-tgt-vms-ia64.adb, mlib-tgt-vms-alpha.adb
	(Build_Dynamic_Library.Version_String): Return the empty string when
	Lib_Version is empty or when the symbol policy is not Autonomous.

	* symbols-vms-alpha.adb (Finalize): For symbol policy Compliant, when
	a symbol is not in the reference symbol file, increase the Major ID
	and set the Minor ID to 0.
	Use gsmatch=lequal instead of gsmatch=equal

2005-03-29  Doug Rupp  <rupp@adacore.com>

	* adaint.c (__gnat_to_canonical_file_spec [VMS]): Check for logical
	name and translate.

2005-03-29  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads, a-tags.adb (Get_TSD): Subprogram removed.
	(Inherit_DT): The first formal has been redefined as a Tag.
	This allows us the removal of the subprogram Get_TSD.
	(TSD): Replace the call to Get_TSD by the actual code.

	* exp_disp.ads, exp_disp.adb: Remove support to call Get_TSD.
	(Make_DT): Upgrade the call to Inherit_TSD according to the
	new interface: the first formal is now a Tag.

	* i-cpp.ads, i-cpp.adb (CPP_Inherit_DT): The first formal has been
	redefined as a Tag.
	This change allows us to remove the subprogram Get_TSD.
	(CPP_Get_TSD): Subprogram removed.
	(TSD): Replace the call to CPP_Get_TSD by the actual code.

	* rtsfind.ads: Remove support to call the run-time
	subprogram Get_TSD

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* errutil.adb, errout.adb:
	Minor comment updates on Line_Terminator references

	* par-ch10.adb: Add ??? comment about line terminator

	* styleg.adb (Check_Line_Terminator): Add check for new switch -gnatyd
	(check dos line terminator).
	(Check_Line_Max_Length): New procedure, split off from the existing
	Check_Line_Terminator routine. Separating this out allows -gnatyf to
	be properly recognized.

	* styleg.adb: Add ??? comment for line terminator reference

	* scng.adb (Check_End_Of_Line): Fix bug of -gnatyf being ignored
	(Check_End_Of_Line): Add -gnatyd handling (check dos line terminators)

	* styleg.ads (Check_Line_Terminator): Add check for new switch -gnatyd
	(check dos line terminator).
	(Check_Line_Max_Length): New procedure, split off from the existing
	Check_Line_Terminator routine. Separating this out allows -gnatyf to
	be properly recognized.

	* stylesw.ads, stylesw.adb:
	Add handling for new -gnatyd switch (check dos line terminator)

	* switch-c.adb: Recognize new -gnatyd switch (check dos line terminator)
	Recognize -gnatwb/-gnatwB switches
	Include Warn_On_Bad_Fixed_Value for -gnatg

	* usage.adb:
	Add line for new -gnatyd switch (check dos line terminator)

	* usage.adb: Add lines for -gnatwb/-gnatwB

	* vms_data.ads: Add entry for NOCRLF (-gnatyd)

	* vms_data.ads: [NO_]BAD_FIXED_VALUES synonym for -gnatwb/-gnatwB

	* gnat_ugn.texi: Fix overlong lines
	Document new -gnatyd switch
	Document new -gnatwb/-gnatwB switches

2005-03-29  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Has_Unconstrained_UU_Component): Use the base type in
	order to retrieve the component list of the type, before examining
	individual components.

	* sem_type.adb (Covers): Types are compatible if one is the base type
	of the other, even though their base types might differ when private
	views are involved.

2005-03-29  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Add_RAST_Features, PolyORB version): Set the From_Any,
	To_Any and TypeCode TSSs on RAS types directly using Set_TSS, instead
	of using Set_Renaming_TSS. This ensures that the TSS bodies are not
	analyzed if expansion is disabled (which could otherwise cause spurious
	error messages if expansion has been disabled due to previous
	(unrelated) errors).

	* sem_prag.adb (Analyze_Pragma, case Asynchronous): If RAS expansion
	is disabled, the entity denoted by the argument is the access type
	itself, not an underlying record type, so there is no need to go back
	to the Corresponding_Remote_Type.

2005-03-29  Gary Dismukes  <dismukes@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_intr.adb (Expand_Dispatching_Constructor_Call): New procedure to
	expand a call to an instance of
	Ada.Tags.Generic_Dispatching_Constructor into a dispatching call to the
	Constructor actual of the instance. A class-wide membership
	check is also generated, to ensure that the tag passed to the instance
	denotes a type in the class.
	(Expand_Intrinsic_Call): Call Expand_Dispatching_Constructor in the case
	of Name_Generic_Dispatching_Constructor.

	* Makefile.rtl: Add a-tgdico.ads to the list of library units (new Ada
	05 unit for AI-260-02).

	* a-tgdico.ads: New file.

	* impunit.adb (Non_Imp_File_Names_05): Add entry "a-tgdico" for new
	predefined Ada 05 generic unit Ada.Tags.Generic_Dispatching_Constructor.

	* snames.ads, snames.adb (Preset_Names): Add entry for
	Generic_Dispatching_Constructor.

	PR ada/20300
	* sem_ch8.adb (Find_Direct_Name): Go to root type for check of
	character type cases.
	(Analyze_Subprogram_Renaming): Add special handling for
	the case of renaming of stream attributes when the renaming denotes a
	generic formal subprogram association for an abstract formal subprogram.
	Check that the attribute is a primitive stream attribute (and not
	a class-wide stream attribute) and then rewrite the attribute name
	as the name of the appropriate compiler-generated stream primitive.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* exp_util.adb (Remove_Side_Effects): Properly propagate arguments to
	recursive calls.
	(Is_Possibly_Unaligned_Object): Correct typo that
	resulted in inaccurate result for unaligned scalars within records.

2005-03-29  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Record_Type): If the type of the component is an
	itype whose parent is controlled and not yet frozen, do not create a
	freeze node for the itype if expansion is disabled.

2005-03-29  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Don't fail if the main project file is declared
	as having no Ada sources. Do not display message "no sources to
	compile" in quiet output.

2005-03-29  Doug Rupp  <rupp@adacore.com>

	* Makefile.in [VMS] (EXTRA_GNATTOOLS): Add vms_help and gnat.hlp as
	extra tools.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* par-ch12.adb (P_Generic): Give better msg for illegal private generic
	child.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* par-ch3.adb (P_Type_Declaration): Fix bad error recovery after
	missing TYPE Improve the error message generated when compiling a
	limited interface in Ada83 or Ada95 mode.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* par-ch4.adb (P_Name): When a bad attribute is returned, return error,
	rather than proceed ahead using a junk attribute name.

2005-03-29  Vincent Celier  <celier@adacore.com>

	* prj.ads, prj.adb: (Project_Data): Add new component Display_Name

	* prj-part.adb (Parse_Single_Project): Set the location of a project
	on its defining identifier, rather than on the reserved word "project".

	* prj-proc.adb (Expression): Adapt to the fact that default of external
	references may be string expressions, not always literal strings.
	(Recursive_Process): Set Display_Name equal to Name
	when Location is No_Location, that is when there is no actual file.
	Get the Display_Name of the project from the source, when it is not a
	virtual project.
	(Process): Use the Display_Name in error messages

	* prj-strt.adb (External_Reference): Allow default to be string
	expressions, not only literal strings.

2005-03-29  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Stand_Alone_Library): Do not forbid the symbol
	file and the reference symbol file to be the same file.

2005-03-29  Thomas Quinot  <quinot@adacore.com>

	* sem_cat.adb (Validate_Remote_Types_Type_Conversion): Perform check to
	forbid conversion of a local access-to-subprogram type to a remote one.

	* sem_util.adb (Wrong_Type): For a record type that is the expanded
	equivalent type for a remote access-to-subprogram type, go back to the
	original RAS entity when displaying an error message, so the casing is
	the original source casing.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* sem_ch11.adb (Analyze_Raise_Statement): Change message for warning
	on param update.

2005-03-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Do not generate an actual
	subtype if code is being pre-analyzed, to prevent un-expanded
	references to protected formals, among others.
	(Analyze_Explicit_Dereference): If the overloaded prefix includes some
	interpretation that can be a call, include the result of the call as a
	possible interpretation of the dereference.

	* sem_ch5.adb (Process_Bounds): Determine type of range by
	pre-analyzing a copy of the original range, and then analyze the range
	with the expected type.

	* sem_res.adb (Check_Parameterless_Call): For an explicit dereference
	with an overloaded prefix where not all interpretations yield an
	access to subprogram, do not rewrite node as a call.
	(Resolve_Explicit_Dereference): Recognize the previous case and rewrite
	the node as a call once the context identifies the interpretation of
	the prefix whose call yields the context type.
	(Valid_Conversion): For the case of a conversion between
	local access-to-subprogram types, check subtype conformance using
	Check_Subtype_Conformant instead of Subtype_Conformant, to have a more
	detailed error message.

2005-03-29  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Set_Formal_Mode): If the subtype has a non_null
	indicator, indicate that the formal can never be null.
	(Process_Formals): If a formal has a non_null indicator, insert the
	resulting subtype immediately before the enclosing subprogram decl,
	and not at the beginning of the corresponding declarative part, to
	prevent access before elaboration (Ada2005).

2005-03-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	PR ada/19956
	* utils.c (finish_record_type): Use variable_size when setting sizes.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* xtreeprs.adb, xnmake.adb: Use Stream_IO instead of Text_IO to
	guarantee Unix style line terminators for the output files, even when
	running on windows.

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* a-direct.ads, a-direct.adb (Start_Search): Free allocated search
	buffer if an exception is raised.

2005-03-29  Ed Falis  <falis@adacore.com>

	* cio.c: Undefine putchar and getchar for VTHREADS: incompatible with
	VxWorks 653 1.4

2005-03-29  Robert Dewar  <dewar@adacore.com>

	* sem_util.ads: Minor reformatting
	* gnat_rm.texi: Minor editing.

2005-03-29  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Variable>: Rework comment.
	* trans.c (tree_transform) <N_Identifier>: Use correct predicates.

2005-03-24  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* adaint.c (__gnat_portable_spawn): Adjust cast.

2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>

	* misc.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.

2005-03-17  Pascal Obry  <obry@adacore.com>

	* adaint.h, adaint.c (__gnat_waitpid): Moved to expect.c where it is
	used.

	* expect.c (__gnat_waitpid): Moved here from adaint.c.
	Reimplement under Win32 using Win32 API.

	(__gnat_kill) [Win32]: Properly close the process handle before leaving
	this routine.

2005-03-17  Eric Botcazou  <ebotcazou@adacore.com>

	* ada-tree.h: (DECL_RENAMING_GLOBAL_P): New predicate.
	(DECL_RENAMED_OBJECT): New accessor macro.
	(SET_DECL_RENAMED_OBJECT): New setter macro.

	* decl.c (gnat_to_gnu_entity) <E_Variable>: Stabilize the renamed
	object in all cases.  Attach the renamed object to the VAR_DECL.
	(gnat_to_gnu_field): Do not lift the record wrapper if the size of the
	field is not prescribed.

	* misc.c (gnat_handle_option): Handle -gnatO separately.
	(gnat_print_decl) <VAR_DECL>: New case.
	Print the DECL_RENAMED_OBJECT node.

	* lang.opt:  Declare separate -gnatO option.

	* trans.c (tree_transform) <N_Identifier>: If the object is a renaming
	pointer, replace it with the renamed object.
	<N_Validate_Unchecked_Conversion>: Warn for a conversion to a fat
	pointer type if the source is not a fat pointer type whose underlying
	array has the same non-zero alias set as that of the destination array.

2005-03-17  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads, a-tags.adb (Get_Expanded_Name): Removed.
	(Get_Inheritance_Depth): Removed.
	(Set_Inheritance_Depth): Removed.

	* rtsfind.ads, exp_disp.ads, exp_disp.adb: Remove support to call the
	subprogram Get_Expanded_Name because it is not referenced by the
	frontend.

	* i-cpp.ads, i-cpp.adb (CPP_Get_Expanded_Name): Removed.
	(CPP_Get_Inheritance_Depth): Removed.
	(CPP_Set_Inheritance_Depth): Removed.

	* tbuild.ads, tbuild.adb (Make_DT_Component): Removed.

2005-03-17  Robert Dewar  <dewar@adacore.com>

	* checks.adb (Apply_Array_Size_Check): Completely remove this for GCC
	3, since we now expect GCC 3 to do all the work.

2005-03-17  Javier Miranda  <miranda@adacore.com>

	* einfo.adb (First_Private_Entity, Set_First_Private_Entity): Addition
	of one barrier to avoid wrong usage of this attribute.

	* sem_ch12.adb (Formal_Entity): Fix erroneous usage of the attribute
	First_Private_Entity.

	* sem_ch7.adb (Install_Visible_Declarations): Add a barrier to protect
	the subprogram against wrong usage.
	Adapt the code to traverse the entities in the
	scope of a record_type because in addition to its usage regarding
	packages, this subprogram is also called by Expand_N_Freeze_Entity
	to install the visible declarations of the enclosing scope of a
	record_type_with_private to establish the proper visibility before
	freezing the entity and related subprograms.

2005-03-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch2.adb (In_Assignment_Context): Recognize slice assignments to
	entry formals.

2005-03-17  Thomas Quinot  <quinot@adacore.com>

	* exp_ch3.adb (Check_Attr): New subprogram.
	(Check_Stream_Attribute): Move the code for 13.13.2(9/1) enforcement
	into a new Check_Attr subprogram, in order to provide a more
	explanatory error message (including the name of the missing attribute).
	(Stream_Operation_OK): Renamed from Stream_Operations_OK. This
	subprogram determines whether a default implementation exists for a
	given stream attribute.
	(Make_Predefined_Primitive_Specs, Predefined_Primitive_Bodies):
	Determine whether to generate a default implementation for each stream
	attribute separately, as this depends on the specific attribute.

	* exp_strm.adb (Make_Field_Attribute): For the case of an illegal
	limited extension where a stream attribute is missing for a limited
	component (which will have been flagged in Exp_Ch3.Sem_Attr), do not
	generate a bogus reference to the missing attribute to prevent
	cascaded errors. Instead, generate a null statement.

	* sem_attr.adb (Check_Stream_Attribute): A stream attribute is
	available for a limited type if it has been specified for an ancestor
	of the type.

2005-03-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): handle the case when the renamed
	entity is an operator.

2005-03-17  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb (Get_PCS_Name): Move from Exp_Dist body to Sem_Dist
	spec, to make this predicate available to other units.

	* rtsfind.adb (Check_RPC): Use Sem_Dist.Get_PCS_Name instead of
	reimplementing it.

	* sem_ch8.adb: Disable expansion of remote access-to-subprogram types
	when no distribution runtime library is available.

	* sem_res.adb, sem_dist.adb: Disable expansion of remote
	access-to-subprogram types when no distribution runtime library is
	available.
	(Get_PCS_Name): Move from Exp_Dist body to Sem_Dist spec, to make this
	predicate available to other units.

	* sem_dist.ads (Get_PCS_Name): Move from Exp_Dist body to Sem_Dist
	spec, to make this predicate available to other units.

2005-03-17  Vincent Celier  <celier@adacore.com>

	* make.adb (Insert_Project_Sources): Make sure the Q is always
	initialized.

	* prj-nmsc.adb (Check_Ada_Naming_Scheme_Validity): Check Naming against
	the default for the tree, not the global default naming.

	* prj-proc.adb (Recursive_Process): No need to put the default naming
	in the project data, it's already there.

2005-03-17  Doug Rupp  <rupp@adacore.com>

	* Makefile.in: (ia64-hp-*vms*): Use s-crtl-vms64.ads.

	* 5xcrtl.ads: Renamed to...
	* s-crtl-vms64.ads: ...this new file

2005-03-17  Robert Dewar  <dewar@adacore.com>

	PR ada/19519
	* namet.adb (Copy_One_Character): Set proper wide character encoding
	for upper half character if we have upper half encoding.

2005-03-17  Robert Dewar  <dewar@adacore.com>

	* par.adb (Par): Improved msg for attempt to recompile predefined unit

2005-03-17  Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb (New_Stream_Function, New_Stream_Procedure): For a
	tagged limited type, the TSS is a newly built renaming declaration:
	insert it using Set_TSS, not Copy_TSS.

2005-03-17  Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Try_Primitive_Operation, Class_Wide_Operation and
	Try_Object_Operation): Analyze the object that is accessible
	through the prefix of the subprogram call before we apply
	the transformation of the object-operation notation.

2005-03-17  Jose Ruiz  <ruiz@adacore.com>

	* s-taprob.adb (Initialize_Protection): Initialize the protected
	object's owner to Null_Task.
	(Lock): If pragma Detect_Blocking is in effect and the caller of this
	procedure is already the protected object's owner then Program_Error
	is raised. In addition the protected object's owner is updated.
	(Lock_Read_Only): If pragma Detect_Blocking is in effect and the caller
	of this procedure is already the protected object's owner then
	Program_Error is raised.
	In addition the protected object's owner is updated.
	(Unlock): Remove the ownership of the protected object.

	* s-taprob.ads (Protection): Add the field Owner, used to store the
	protected object's owner.
	This component is needed for detecting one type of potentially blocking
	operations (external calls on a protected subprogram with the same
	target object as that of the protected action). Document the rest of
	the components.

	* s-tposen.adb, s-tpoben.adb (Initialize_Protection_Entries):
	Initialize the protected object's owner to Null_Task.
	(Lock_Read_Only_Entries): If pragma Detect_Blocking is in effect and the
	caller of this procedure is already the protected object's owner then
	Program_Error is raised.
	Do not raise Program_Error when this procedure is called from a
	protected action.
	(Unlock_Entries): Remove the ownership of the protected object.
	(Lock_Entries): If pragma Detect_Blocking is in effect and the caller
	of this procedure is already the protected object's owner then
	Program_Error is raised.
	Do not raise Program_Error when this procedure is called from
	a protected action.

	* s-tposen.ads, s-tpoben.ads (Protection_Entries): Add the field Owner,
	used to store the protected object's owner.

	* s-tpobop.adb (Protected_Entry_Call): If pragma Detect_Blocking is in
	effect and this procedure (a potentially blocking operation) is called
	from whithin a protected action, Program_Error is raised.
	(Timed_Protected_Entry_Call): If pragma Detect_Blocking is in effect
	and this procedure (a potentially blocking operation) is called from
	whithin a protected action, Program_Error is raised.

2005-03-17  Vincent Celier  <celier@adacore.com>
	    Nicolas Setton  <setton@adacore.com>

	* mlib-tgt-darwin.adb (Build_Dynamic_Library): Remove the "-fini"
	switch, not supported by the linker on Darwin. Add '_' before
	<library>init, as this character is added unconditionally by the
	compiler.
	(Is_Archive_Ext): Replace the wrong library extension ".dyld" by the
	correct one ".dylib". This fixes detection of the archive files when
	building library projects.

2005-03-17  Vincent Celier  <celier@adacore.com>

	* switch-m.adb (Normalize_Compiler_Switches): Recognize switches
	-gnat83, -gnat95 and -gnat05.

2005-03-17  Vasiliy Fofanov  <fofanov@adacore.com>

	* gnat_ugn.texi: Document gnatmem restriction

2005-03-17  Thomas Quinot  <quinot@adacore.com>

	* snames.adb: Document new TSS names introduced by exp_dist/exp_tss
	cleanup

2005-03-17  Robert Dewar  <dewar@adacore.com>

	* s-interr.ads, s-interr.adb, sem_ch3.adb, prj.ads, prj.adb,
	a-interr.adb, a-interr.ads, s-interr-sigaction.adb, s-interr-dummy.adb,
	s-interr-vms.adb, s-interr-vxworks.adb: Minor reformatting

	* casing.adb: Comment improvements

2005-03-17  Pascal Obry  <obry@adacore.com>

	* g-expect.adb: Minor reformatting.

2005-03-15  Zack Weinberg  <zack@codesourcery.com>

	* Make-lang.in (doc/gnat_ugn_unw.info, doc/gnat_rm.info)
	(doc/gnat_ugn_unw.dvi, doc/gnat_rm.dvi): Add gcc-vers.texi
	to dependencies.

2005-03-15  Vincent Celier  <celier@adacore.com>

	* mlib-tgt-darwin.adb (Library_Exist_For, Library_File_Name_For):
	Add new parameter In_Tree to specify the project tree: needed
	by the project manager. Adapt to changes in project manager
	using new parameter In_Tree.

2005-03-15  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in (ada/treeprs.ads, ada/einfo.h, ada/sinfo.h,
	ada/nmake.adb, ada/nmake.ads): Use unique subdirectories of
	ada/bldtools to avoid make -jN failures.

2005-03-15  Eric Botcazou  <ebotcazou@adacore.com>

	* trans.c (gnat_to_gnu) <N_Return_Statement>: Set gnu_result
	to NULL_TREE on entry.

2005-03-15  Robert Dewar  <dewar@adacore.com>

	* system-unixware.ads, system-linux-ia64.ads, system-freebsd-x86.ads,
	system-lynxos-ppc.ads, system-lynxos-x86.ads, system-linux-x86_64.ads,
	system-tru64.ads, system-aix.ads, system-vxworks-sparcv9.ads,
	system-vxworks-xscale.ads, system-solaris-x86.ads, system-irix-o32.ads,
	system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
	system-linux-x86.ads, system-vxworks-mips.ads, system-os2.ads,
	system-interix.ads, system-solaris-sparc.ads,
	system-solaris-sparcv9.ads, system-vms.ads, system-mingw.ads,
	system-vms-zcx.ads, system-vxworks-ppc.ads, system-vxworks-alpha.ads,
	system-vms_64.ads, system-darwin-ppc.ads, system-vxworks-x86.ads,
	system-linux-ppc.ads, system-linux-alpha.ads, system-linux-sparc.ads,
	system-linux-s390.ads, system-linux-s390x.ads: Add line defining
	Compiler_System_Version to be False.

	* opt.ads: Add new flag Opt.Address_Is_Private

	* targparm.ads, targparm.adb: Set new flag Opt.Address_Is_Private
	Add new parameter Compiler_System_Version to avoid checking for
	completeness of parameters when compiler is compiling itself.
	Allows old versions of GNAT to be compiled with new compiler.

2005-03-15  Eric Botcazou  <ebotcazou@adacore.com>

	* s-osinte-tru64.ads, s-osinte-tru64.adb (Get_Stack_Base): New function
	(Hide_Yellow_Zone): New procedure to hide the Yellow Zone of the
	calling thread.
	(Stack_Base_Available): New flag.
	(Get_Page_Size): New overloaded functions imported from C.
	(PROT_NONE, PROT_READ, PROT_WRITE, PROT_EXEC, PROT_ALL,
	PROT_ON, PROT_OFF): New constants.
	(mprotect): New function imported from C.
	(pthread_teb_t): New record type.

	* s-taprop-tru64.adb: (Enter_Task): Invoke Hide_Yellow_Zone.
	(Create_Task): Account for the Yellow Zone and the guard page.

2005-03-15  Vincent Celier  <celier@adacore.com>

	* mlib-tgt-tru64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb,
	mlib-tgt-hpux.adb, mlib-tgt-linux.adb, mlib-tgt-solaris.adb,
	mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb, mlib-tgt-mingw.adb,
	mlib-tgt-vxworks.adb, mlib-tgt-lynxos.adb (Library_Exist_For,
	Library_File_Name_For): Add new parameter In_Tree
	to specify the project tree: needed by the project manager.
	Adapt to changes in project manager using new parameter In_Tree.
	Remove local imports, use functions in System.CRTL.

	* make.adb, clean.adb, gnatcmd.adb (Project_Tree): New constant needed
	to use the project manager.

	* makeutl.ads, makeutl.adb (Linker_Options_Switches): New parameter
	In_Tree to designate the project tree. Adapt to changes in the project
	manager, using In_Tree.

	* mlib-prj.ads, mlib-prj.adb (Build_Library, Check_Library,
	Copy_Interface_Sources): Add new parameter In_Tree to specify the
	project tree: needed by the project manager.
	(Build_Library): Check that Arg'Length >= 6 before checking if it
	contains "--RTS=...".

	* mlib-tgt.ads, mlib-tgt.adb (Library_Exist_For,
	Library_File_Name_For): Add new parameter In_Tree to specify the
	project tree: needed by the project manager.

	* prj.ads, prj.adb: Major modifications to allow several project trees
	in memory at the same time.
	Change tables to dynamic tables and hash tables to dynamic hash
	tables. Move tables and hash tables from Prj.Com (in the visible part)
	and Prj.Env (in the private part). Move some constants from the visible
	part to the private part. Make other constants deferred.
	(Project_Empty): Make it a variable, not a function
	(Empty_Project): Add parameter Tree. Returns the data with the default
	naming data of the project tree Tree.
	(Initialize): After updating Std_Naming_Data, copy its value to the
	component Naming of Project Empty.
	(Register_Default_Naming_Scheme): Use and update the default naming
	component of the project tree, instead of the global variable
	Std_Naming_Data.
	(Standard_Naming_Data): Add defaulted parameter Tree. If project tree
	Tree is not defaulted, return the default naming data of the Tree.
	(Initial_Buffer_Size): Constant moved from private part
	(Default_Ada_Spec_Suffix_Id, Default_Ada_Body_Suffix_Id, Slash_Id); new
	variables initialized in procedure Initialize.
	(Add_To_Buffer): Add two in out parameters to replace global variables
	Buffer and Buffer_Last.
	(Default_Ada_Spec_Suffix, Default_Body_Spec_Suffix, Slash): New
	functions.
	Adapt to changes to use new type Project_Tree_Ref and dynamic tables and
	hash tables.
	(Initialize, Reset, register-Default_Namng-Scheme): Add a new parameter
	for the project tree.
	(Project_Tree_Data, Project_Tree_Ref, No_Project): Declare types and
	constant at the beginning of the package spec, so that they cane be used
	in subprograms before their full declarations.
	(Standard_Naming_Data): Add defaulted parameter of type Project_Node_Ref
	(Empty_Project): Add parameter of type Project_Node_Ref
	(Private_Project_Tree_Data): Add component Default_Naming of type
	Naming_Data.
	(Buffer, Buffer_Last): remove global variables
	(Add_To_Buffer): Add two in out parameters to replace global variables
	Buffer and Buffer_Last.
	(Current_Packages_To_Check): Remove global variable
	(Empty_Name): Move to private part
	(No-Symbols): Make it a constant
	(Private_Project_Tree_Data): New type for the private part of the
	project tree data.
	(Project_Tree_Data): New type for the data of a project tree
	(Project_Tree_Ref): New type to designate a project tree
	(Initialize, Reset, register-Default_Namng-Scheme): Add a new parameter
	for the project tree.

	* prj-attr.ads: Add with Table; needed, as package Prj no longer
	imports package Table.

	* prj-com.adb: Remove empty, no longer needed body

	* prj-com.ads: Move most of the content of this package to package Prj.

	* prj-dect.ads, prj-dect.adb (Parse): New parameters In_Tree to
	designate the project node tree and Packages_To_Check to replace
	global variable Current_Packages_To_Check.
	Add new parameters In_Tree and Packages_To_Check to local subprograms,
	when needed. Adapt to changes in project manager with project node tree
	In_Tree.

	* prj-env.ads, prj-env.adb: Add new parameter In_Tree to designate the
	project tree to most subprograms. Move tables and hash tables to
	private part of package Prj.
	Adapt to changes in project manager using project tree In_Tree.

	* prj-makr.adb (Tree): New constant to designate the project node tree
	Adapt to change in project manager using project node tree Tree

	* prj-nmsc.ads, prj-nmsc.adb (Check_Stand_Alone_Library): Correctly
	display the Library_Src_Dir and the Library_Dir.
	Add new parameter In_Tree to designate the project node tree to most
	subprograms. Adapt to changes in the project manager, using project tree
	In_Tree.
	(Check_Naming_Scheme): Do not alter the casing on platforms where
	the casing of file names is not significant.
	(Check): Add new parameter In_Tree to designate the

	* prj-pars.ads, prj-pars.adb (Parse): Add new parameter In_Tree to
	designate the project tree.
	Declare a project node tree to call Prj.Part.Parse and Prj.Proc.Process

	* prj-part.ads, prj-part.adb (Buffer, Buffer_Last): Global variables,
	to replace those that were in the private part of package Prj.
	Add new parameter In__Tree to designate the project node tree to most
	subprograms. Adapt to change in Prj.Tree with project node tree In_Tree.
	(Post_Parse_Context_Clause): When specifying the project node of a with
	clause, indicate that it is a limited with only if there is "limited"
	in the with clause, not necessarily when In_Limited is True.
	(Parse): Add new parameter In_Tree to designate the project node tree

	* prj-pp.ads, prj-pp.adb (Pretty_Print): Add new parameter In_Tree to
	designate the project node tree. Adapt to change in Prj.Tree with
	project node tree In_Tree.

	* prj-proc.ads, prj-proc.adb (Recursive_Process): Specify the project
	tree In_Tree in the call to function Empty_Process to give its initial
	value to the project data Processed_Data.
	Add new parameters In_Tree to designate the project tree and
	From_Project_Node_Tree to designate the project node tree to several
	subprograms. Adapt to change in project manager with project tree
	In_Tree and project node tree From_Project_Node_Tree.

	* prj-strt.ads, prj-strt.adb (Buffer, Buffer_Last): Global variables,
	to replace those that were in the private part of package Prj.
	Add new parameter In_Tree to designate the project node tree to most
	subprograms. Adapt to change in Prj.Tree with project node tree In_Tree.

	* prj-tree.ads, prj-tree.adb: Add new parameter of type
	Project_Node_Tree_Ref to most subprograms.
	Use this new parameter to store project nodes in the designated project
	node tree.
	(Project_Node_Tree_Ref): New type to designate a project node tree
	(Tree_Private_Part): Change table to dynamic table and hash tables to
	dynamic hash tables.

	* prj-util.ads, prj-util.adb: Add new parameter In_Tree to designate
	the project tree to most subprograms. Adapt to changes in project
	manager using project tree In_Tree.

	* makegpr.adb (Project_Tree): New constant needed to use project
	manager.

2005-03-15  Olivier Hainque  <hainque@adacore.com>

	* s-intman-posix.adb (Notify_Exception): Adjust signature, as handler
	for sigactions with SA_SIGINFO set. Call
	__gnat_adjust_context_for_raise before raising, to perform the
	potentially required adjustments to the machine context for the GCC
	unwinder.

	* raise.h (__gnat_adjust_context_for_raise): New prototype.

	* init.c (__gnat_adjust_context_for_raise) HPUX: Initial revision.
	Adjust PC by one in the provided machine context.
	(__gnat_install_handler) HPUX: Set SA_SIGINFO in the sigaction flags,
	so that the handler is passed the context structure to adjust prior to
	the raise.
	(__gnat_error_handler) HPUX: Adjust the signature to match what an
	SA_SIGINFO sigaction should look like. Call
	__gnat_adjust_context_for_raise before actually raising.
	(__gnat_adjust_context_for_raise): Default noop to help PC
	adjustments before raise from signal handlers.
	(__gnat_error_handler): Indirectly call a predicate function to
	determine if a condition should be resignaled or not.
	(__gnat_set_resignal_predicate): User interface to modify the predicate.
	(__gnat_default_resignal_p): Default GNAT predicate.

2005-03-15  Doug Rupp  <rupp@adacore.com>

	* adaint.c: Prefix #include of VMS system header files with vms/
	[VMS] (HOST_EXECUTABLE_SUFFIX, HOST_OBJECT_SUFFIX): Define for VMS.
	Do not define a dummy function "convert_addresses" under Darwin,
	not needed.

	* tb-alvms.c, expect.c: Prefix #include of VMS system header files
	with vms/

2005-03-15  Nicolas Setton  <setton@adacore.com>

	* tracebak.c: Under Darwin, use the same unwinding mechanisms as under
	PPC/AIX.

2005-03-15  Robert Dewar  <dewar@adacore.com>

	* a-reatim.ads, a-reatim.adb: Add functions Minutes and Seconds for
	AI-386.

	* a-retide.ads: Minor comment changes

2005-03-15  Robert Dewar  <dewar@adacore.com>

	* a-stzunb.adb, a-stzunb.adb a-stzunb.ads, a-stzunb.ads,
	a-stwiun.ads, a-stwiun.adb, a-strunb.ads, a-strunb.adb: Move
	Realloc_For_Chunk to private part of package.
	New subprograms for AI-301

	* a-szuzti.adb, a-suteio.adb, a-swuwti.adb: Improve efficiency of
	Get_Line procedure.
	Avoid unnecessary use of Get/Set_Wide_String

2005-03-15  Robert Dewar  <dewar@adacore.com>

	PR ada/13470
	* a-stunau.ads, a-stunau.adb:
	Change interface to allow efficient (and correct) implementation
	The previous changes to allow extra space in unbounded strings had
	left this interface a bit broken.

	* a-suteio.adb: Avoid unnecessary use of Get/Set_String

	* g-spipat.ads, g-spipat.adb: New interface for Get_String
	Minor reformatting (function specs)

	* g-spitbo.adb: New interface for Get_String

	* g-spitbo.ads: Minor reformatting

	* a-swunau.ads, a-swunau.adb: New interface for Get_Wide_String

	* a-szunau.ads, a-szunau.adb: New interface for Get_Wide_Wide_String

2005-03-15  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* atree.ads, atree.adb: Add support for Elist24 field

	* atree.h: Fix wrong definition of Field27
	Add support for Elist16 field
	Add support for Elist24 field

	* einfo.ads, einfo.adb (Abstract_Interfaces,
	Set_Abstract_Interfaces): New subprograms.
	(Abstract_Interface_Alias, Set_Abstract_Interface_Alias): New
	subprograms.
	(Access_Disp_Table, Set_Access_Disp_Table): Modified to handle a list of
	entities rather than a single node.
	(Is_Interface, Set_Is_Interface): New subprogram
	(First_Tag_Component): New syntesized attribute
	(Next_Tag_Component): New synthesized attribute
	(Write_Entity_Flags): Upgraded to write Is_Interface
	(Write_Field24_Name): Upgraded to write Abstract_Interfaces
	(Write_Field25_Name): Upgraded to write Abstract_Interface_Alias
	(Task_Body_Procedure): New subprogram to read this attribute.
	(Set_Task_Body_Procedure): New subprogram to set this attribute.
	(Has_Controlled_Component): Now applies to all entities.
	This is only a documentation change, since it always worked to apply
	this to other than composite types (yielding false), but now this is
	official.
	Update documentation on Must_Be_Byte_Aligned for new spec

	* tbuild.adb, exp_dist.adb, exp_disp.adb, exp_ch3.ads, exp_ch3.adb,
	exp_attr.adb, exp_aggr.adb, exp_ch4.adb, exp_ch5.adb: Upgrade all the
	uses of the Access_Disp_Table attribute to reference the first dispatch
	table associated with a tagged type. As
	part of the implementation of abstract interface types,
	Access_Disp_Table has been redefined to contain a list of dispatch
	tables (rather than a single dispatch table).
	Similarly, upgrade all the references to Tag_Component by the
	new attribute First_Tag_Component.
	(Find_Inherited_TSS): Moved to exp_tss.
	Clean up test in Expand_N_Object_Declaration for cases
	where we need to do a separate assignment of the initial value.
	(Expand_N_Object_Declaration): If the expression in the
	declaration of a tagged type is an aggregate, no need to generate an
	additional tag assignment.
	(Freeze_Type): Now a function that returns True if the N_Freeze_Entity
	is to be deleted.
	Bit packed array ops are only called if operands are known to be
	aligned.
	(Component_Equality): When returning an N_Raise_Program_Error statement,
	ensure that its Etype is set to Empty to avoid confusing GIGI (which
	expects that only expressions have a bona fide type).
	(Make_Tag_Ctrl_Assignment): Use Build_Actual_Subtype to correctly
	determine the amount of data to be copied.

	* par.adb (P_Interface_Type_Definition): New subprogram that parses the
	new syntax rule of Ada 2005 interfaces (for AI-251 and AI-345):
	    INTERFACE_TYPE_DEFINITION ::=
	      [limited | task | protected | synchronized] interface
		[AND interface_list]

	* par-ch3.adb (P_Type_Declaration): Modified to give support to
	interfaces.
	(P_Derived_Type_Def_Or_Private_Ext_Decl): Modified to give support to
	interfaces.
	(P_Interface_Type_Definition): New subprogram that parses the new
	syntax rule of Ada 2005 interfaces
	(P_Identifier_Declarations): fix two occurrences of 'RENAMES' in error
	messages by the correct RENAMES (quotes removed).

	* sem_prag.adb: Upgrade all the references to Tag_Component by the new
	attribute First_Tag_Component.

	* sinfo.ads, sinfo.adb: Remove OK_For_Stream flag, not used, not needed
	(Interface_List, Set_Interface_List): New subprograms.
	(Interface_Present, Set_Interface_Present): New subprograms.
	(Limited_Present, Set_Limited_Present): Available also in derived
	type definition nodes.
	(Protected_Present, Set_Protected_Present): Available also in
	record type definition and
	derived type definition nodes.
	(Synchronized_Present, Set_Synchronized_Present): New subprograms.
	(Task_Present, Set_Task_Present): New subprogram.
	(Task_Body_Procedure): Removed.
	(Set_Task_Body_Procedure): Removed.
	These subprogram have been removed because the attribute
	Task_Body_Procedure has been moved to the corresponding task type
	or task subtype entity to leave a field free to store the list
	of interfaces implemented by a task (for AI-345)
	Add Expression field to N_Raise_Statement node for Ada 2005 AI-361
	(Null_Exclusion_Present): Change to Flag11, to avoid conflict with
	expression flag Do_Range_Check
	(Exception_Junk): Change to Flag7 to accomodate above change
	(Box_Present, Default_Name, Specification, Set_Box_Present,
	Set_Default_Name, Set_Specification): Expand the expression
	"X in N_Formal_Subprogram_Declaration" into the corresponding
	two comparisons. Required to use the csinfo tool.

	* exp_ch11.adb (Expand_N_Raise_Statement): Deal with case where
	"with string" given.

	* sem_ch11.adb (Analyze_Raise_Statement): Handle case where string
	expression given.

	* par-ch11.adb (P_Raise_Statement): Recognize with string expression
	in 2005 mode

	* exp_ch9.adb (Build_Task_Proc_Specification): Modified to use entity
	attribute Task_Body_Procedure rather than the old semantic field that
	was available in the task_type_declaration node.

	* par-ch12.adb (P_Formal_Type_Definition): Modified to handle formal
	interface type definitions.
	(P_Formal_Derived_Type_Definition): Modified to handle the list of
	interfaces.

	* par-ch9.adb (P_Task): Modified to handle the list of interfaces in a
	task type declaration.
	(P_Protected): Modified to handle the list of interfaces in a
	protected type declaration.

2005-03-15  Doug Rupp  <rupp@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* bindgen.adb (Gen_Main_C): Change WBI __posix_exit to decc$posix_exit
	(Gen_Output_File_C): Likewise.
	(Gen_Main_C): Issue #include <stdlib.h> to avoid warning

2005-03-15  Thomas Quinot  <quinot@adacore.com>

	* checks.adb (Get_E_First_Or_Last): When the expression being retrieved
	is an N_Raise_Constraint_Error node, create a new copy of it without
	going through a call to Duplicate_Subexpr.

2005-03-15  Eric Botcazou  <ebotcazou@adacore.com>
	    Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    Nicolas Setton  <setton@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	PR ada/19900
	PR ada/19408
	PR ada/19140
	PR ada/20255
	* decl.c (gnat_to_gnu_field): Reject aliased components with a
	representation clause that prescribes a size not equal to the rounded
	size of their types.
	(gnat_to_gnu_entity, case E_Component): Always look at
	Original_Record_Component if Present and not the entity.
	(gnat_to_gnu_entity, case E_Record_Subtype): Rework handling of subtypes
	of tagged extension types by not making field for components that are
	inside the parent.
	(gnat_to_gnu_entity) <E_Record_Type>: Fix typo in the alignment formula
	(gnat_to_gnu_entity) <E_Variable>: Do not convert again the
	expression to the type of the object when the object is constant.
	Reverse defer_debug_incomplete_list before traversing it, so that trees
	are processed in the order at which they were added to the list. This
	order is important when using the stabs debug format.
	If we are deferring the output of debug information, also defer this
	output for a function return type.
	When adding fields to a record, prevent emitting debug information
	for incomplete records, emit the information only when the record is
	complete.
	(components_to_record): New parameter defer_debug.
	(gnat_to_gnu_entity, case E_Array_Subtype): Call copy_alias_set.
	(gnat_to_gnu_field_decl): New function.
	(substitution_list, annotate_rep): Call it.
	(gnat_to_gnu_entity, case E_Record_Subtype): Likewise.
	(gnat_to_gnu_entity, case E_Record_Type): Likewise.
	No longer update discriminants to not be a COMPONENT_REF.
	(copy_alias_set): Strip padding from input type; also handle
	unconstrained arrays properly.

	* gigi.h (write_record_type_debug_info): New function.
	Convert to use ANSI-style prototypes. Remove unused
	declarations for emit_stack_check, elab_all_gnat and
	set_second_error_entity.
	(gnat_to_gnu_field_decl): New decl.

	* utils.c (write_record_type_debug_info): New function.
	(finish_record_type): Delegate generation of debug information to
	write_record_type_debug_info.
	(update_pointer_to): Remove unneeded calls to rest_of_decl_compilation.
	(update_pointer_to): Fix pasto.
	(convert) <UNION_TYPE>: Accept slight type variations when
	converting to an unchecked union type.

	* exp_ch13.adb (Expand_N_Freeze_Entity): If Freeze_Type returns True,
	replace the N_Freeze_Entity with a null statement.

	* freeze.adb (Freeze_Expression): If the freeze nodes are generated
	within a constrained subcomponent of an enclosing record, place the
	freeze nodes in the scope stack entry for the enclosing record.
	(Undelay_Type): New Subprogram.
	(Set_Small_Size): Pass T, the type to modify; all callers changed.
	(Freeze_Entity, Freeze_Record_Type): Change the way we handle types
	within records; allow them to have freeze nodes if their base types
	aren't frozen yet.

	* exp_util.adb (Remove_Side_Effects): Properly test for
	Expansion_Delayed and handle case when it's inside an
	N_Qualified_Expression.

	* sem_ch3.adb (Derived_Type_Declaration): New predicate
	Comes_From_Generic, to recognize accurately that the parent type in a
	derived type declaration can be traced back to a formal type, because
	it is one or is derived from one, or because its completion is derived
	from one.
	(Constrain_Component_Type): If component comes from source and has no
	explicit constraint, no need to constrain in in a subtype of the
	enclosing record.
	(Constrain_Access, Constrain_Array): Allow itypes to be delayed.
	Minor change to propagate Is_Ada_2005 flag

	* trans.c (gnat_to_gnu, case N_Aggregate): Verify that
	Expansion_Delayed is False.
	(assoc_to_constructor): Ignore fields that have a
	Corresponding_Discriminant.
	(gnat_to_gnu) <N_Return_Statement>: Restructure. If the
	function returns "by target", dereference the target pointer using the
	type of the actual return value.
	<all>: Be prepared for a null gnu_result.
	(processed_inline_subprograms): Check flag_really_no_inline
	instead of flag_no_inline.
	(set_second_error_entity): Remove unused function.
	(gnat_to_gnu, case N_Selected_Component): Call
	gnat_to_gnu_field_decl.
	(assoc_to_constructor): Likewise.

2005-03-15  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* exp_pakd.adb (Create_Packed_Array_Type): Do not set
	Must_Be_Byte_Aligned for cases where we do not need to use a
	System.Pack_nn unit.

	* exp_ch6.adb (Expand_Call): Call Expand_Actuals for functions as well
	as procedures.
	Needed now that we do some processing for IN parameters as well. This
	may well fix some unrelated errors.
	(Expand_Call): Handle case of unaligned objects (in particular those
	that come from packed arrays).
	(Expand_Inlined_Call): If the subprogram is a renaming as body, and the
	renamed entity is an inherited operation, re-expand the call using the
	original operation, which is the one to call.
	Detect attempt to inline parameterless recursive subprogram.
	(Represented_As_Scalar): Fix to work properly with private types
	(Is_Possibly_Unaligned_Object): Major rewrite to get a much more
	accurate estimate. Yields True in far fewer cases than before,
	improving the quality of code that depends on this test.

	* exp_util.adb (Kill_Dead_Code): For a package declaration, iterate
	over both visible and private declarations to remove them from tree,
	and mark subprograms declared in package as eliminated, to prevent
	spurious use in subsequent compilation of generic units in the context.

	* exp_util.ads: Minor cleanup in variable names

	* sem_eval.ads, sem_eval.adb: Minor reformatting
	(Compile_Time_Known_Bounds): New function

2005-03-15  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch7.adb (Convert_View): Use base types of underlying types when
	determining whether an unchecked conversion is needed for the argument
	of an initialization call.

2005-03-15  Ed Schonberg  <schonberg@adacore.com>

	* exp_intr.adb (Expand_Unc_Conversion): As a target type, use the type
	that appears in the instantiation rather than the internal subtype
	generated in the wrapper package, to avoid anomalies in gigi when the
	target is derived from a private type whose full view is an access type.

2005-03-15  Robert Dewar  <dewar@adacore.com>

	* exp_smem.adb, sem_attr.adb: Remove OK_For_Stream flag, not used,
	not needed.
	Add documentation to replace the use of this flag
	Fix kludge for Maximum_Alignment on x86 so that it does not apply to
	the x86_64.

2005-03-15  Thomas Quinot  <quinot@adacore.com>

	* exp_tss.ads, exp_tss.adb (Find_Inherited_TSS): New subprogram, moved
	here from exp_attr so it can be shared between exp_attr and exp_dist.
	(TSS_Names): Renamed from OK_TSS_Names. This array contains the list of
	all TSS names, not a subset thereof, and the previous name introduced
	an unnecessarily confusion that a distinction might exist between
	"OK" TSS names and some "not OK" TSS names.

2005-03-15  Doug Rupp  <rupp@adacore.com>

	* gnatchop.adb (Locate_Executable): Normalize the possibly VMS style
	Command_Name.

2005-03-15  Pascal Obry  <obry@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/20226
	PR ada/20344
	* init.c (__gnat_initialize): Do not call __gnat_install_SEH_handler()
	when IN_RTS. This is to work around a bootstrap path problem.

	* misc.c (gnat_parse_file): Create a SEH (Structured Exception Handler)
	table and pass it to __gnat_install_SEH_handler().
	(gnat_handle_option): Accept OPT_fRTS_, not OPT_fRTS.

	* lang.opt: Fix specification of -fRTS=.

2005-03-15  Doug Rupp  <rupp@adacore.com>
	    Bernard Banner  <banner@adacore.com>
	    Vincent Celier  <celier@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	PR ada/6852
	This change works fine when gnatlib is built from the gcc directory,
	but does not work when using the libada Makefile, since GCC_FOR_TARGET
	is not passed to ada/Makefile.in, so more work is needed by a
	Makefile/configure expert.

	* Makefile.in(gnatlib): Use $(GCC_FOR_TARGET) for compiling library.
	set GMEM_LIB on ia64 linux to add optional support for gnatmem.
	Setup gnatlink switch -M for x86_64 linux, as it is already setup
	for Linux x86.
	(gnatlib-shared-default): Use GNATLIBCFLAGS as well.
	Run ranlib on libgccprefix.a
	Define PREFIX_OBJS for Darwin, to build libgccprefix.
	(ADA_INCLUDE_SRCS): Split Ada packages.

2005-03-15  Robert Dewar  <dewar@adacore.com>

	* Make-lang.in: Add g-utf_32 unit for gnat and gnatbind

	* impunit.adb: Add GNAT.UTF_32

	* scng.adb: Use gnat.utf_32 instead of widechar for utf_32 stuff

	* widechar.ads, widechar.adb: Remove redundant UTF-32 tables (scng
	now uses GNAT.UTF_32).

	* g-utf_32.ads, g-utf_32.adb: This is a new unit with full
	capabilities for categorizing characters using Unicode categories

2005-03-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Build_Ancestor_Name): If the ancestor is an
	instantiation that has been rewritten as a package body, retrieve spec
	to generate proper name for implicit_with_clause.
	(Install_Parents): Recognize a parent that is an instantiation but has
	been rewritten as a package declaration during analysis.

2005-03-15  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Instantiate_Object): If the analysis of the actual
	parameter reported some error we immediately return. This improves the
	behaviour of the frontend in case of errors.
	(Install_Parent, Remove_Parent): Introduce new flag
	Parent_Unit_Visible, to preserve the proper visibility of the ultimate
	ancestor of a generic child unit, when the child is being instantiated.
	(Inline_Instance_Body): If we are compiling the private
	part or the body of a child unit, restore the proper visibility of the
	parents after compiling the instance body.

2005-03-15  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	PR ada/15608
	* sem_util.adb (Get_Task_Body_Procedure): Type may be the completion
	of a private type, in which case it is underlying_type that denotes
	the proper task. Also modified to use the new entity attribute
	that is directly available in the task type and task subtype entities
	(Build_Actual_Subtype_Of_Component): Handle properly multidimensional
	arrays when other dimensions than the first are constrained by
	discriminants of an enclosing record.
	(Insert_Explicit_Dereference): If the prefix is an indexed component or
	a combination of indexed and selected components, find ultimate entity
	and generate the appropriate reference for it, to suppress spurious
	warnings.
	(Note_Possible_Modification): If an entity name has no entity, return.
	(Is_Variable): A function call never denotes a variable.
	(Requires_Transient_Scope): For record types, recurse only on
	components, not on internal subtypes that may have been generated for
	constrained components.

2005-03-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Concatenation): Do not consider operators marked
	Eliminated as candidates for resolution. Both efficient, and avoids
	anomalies with operators declared in deleted code.
	(Process_Implicit_Dereference_Prefix): Use this procedure whenever
	expansion is disabled (as when compiling a generic) to prevent spurious
	warnings on prefixes of selected components.

2005-03-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Is_Private_Declaration): Verify that the declaration is
	attached to a list before checking whether it appears in the private
	declarations of the current package.
	(Make_Inequality_Operator): Insert declaration in proper declarative
	list rather than just setting the Parent field, so that
	Is_Private_Declaration can handle it properly.

2005-03-15  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): In a generic, if this is
	a renaming a body, check that the renamed subprogram in not intrinsic.
	(Find_Direct_Name): If several use_visible entities hide
	each other, and the context is a predefined file compiled through
	rtsfind, keep only the entity that comes from a predefined file.

2005-03-15  Geert Bosch  <bosch@adacore.com>

	* s-fatgen.adb (Valid): Extend special exceptions to account for long
	long float padding to also cover AMD64 and IA64.

2005-03-15  Gary Dismukes  <dismukes@adacore.com>

	* s-imgwch.adb: Add with and use of Interfaces.
	(Img_Wide_Character): Change type of Val to Unsigned_16.
	(Img_Wide_Wide_Character): Change type of Val to Unsigned_32.

2005-03-15  Matthew Gingell  <gingell@adacore.com>

	* sysdep.c: Implement __gnat_localtime_r as call to localtime_r on AIX.

2005-03-15  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Add missing lines for -gnat95 and -gnat05 switches

	* sem_ch7.adb: Minor change to propagate Is_Ada_2005 flag

	* i-c.adb: Clarify that AI-258 behavior is also intended in Ada 95

2005-03-15  Robert Dewar  <dewar@adacore.com>

	* s-bitops.adb, s-bitops.ads,
	s-taprop-os2.adb, s-intman-vms.ads, s-intman-vxworks.ads,
	s-taprop-vxworks.adb, a-caldel.ads, a-calend.adb, a-tasatt.adb,
	tbuild.ads, s-finimp.adb, s-imgwch.adb, s-intman.ads, s-intman.ads,
	s-memory.adb, s-soflin.ads, s-taasde.ads, s-taprob.adb, s-taprop.ads,
	s-taprop.ads, s-tasini.adb, s-tasini.ads, s-tasini.ads, s-tasini.ads,
	s-taskin.ads, s-tasren.adb, s-tassta.adb, s-tassta.ads, s-tassta.ads,
	s-tasuti.ads, s-tataat.ads, s-tataat.ads, s-tataat.ads, s-tataat.ads,
	s-tpoben.adb, s-tpoben.adb, s-tpobop.ads: Update comments. Minor
	reformatting.

2005-03-15  Eric Botcazou  <ebotcazou@adacore.com>

	* utils2.c (build_binary_op): Fix typo.

2005-03-15  Doug Rupp  <rupp@adacore.com>

	* s-crtl.ads (popen,pclose): New imports.

2005-03-15  Cyrille Comar  <comar@adacore.com>

	* comperr.adb (Compiler_Abort): remove references to obsolete
	procedures in the bug boxes for various GNAT builds.

2005-03-15  Vincent Celier  <celier@adacore.com>

	* snames.ads, snames.adb: Save as Unix text file, not as DOS text file

2005-03-15  Geert Bosch  <bosch@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Cyrille Comar  <comar@adacore.com>
	    Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Remove extended inline assembly example, as it was far
	too specific and long-winded to be appropriate for the GNAT User's
	Guide.
	Warn about use of GCC switches not documented in the GNAT User's Guide,
	as these may cause generated code to not conform to Ada semantics.
	Remove mention of -gdwarf-2 for sparc64, since this is now the default.
	Add documentation for -gnat95 and -gnat05 switches
	Remove paragraph documenting obsolete way to refer to third party
	libraries.
	Add a few references to Ada_05 that were missing.
	Update documentation on -gnatZ/-gnatL.
	Document limitation when using -m64 under Solaris.
	Change the "Name Casing" subsection of the pretty-printer section
	according to the changes in the dictionary processing.

	* gnat_rm.texi: Document the Ada_05 pragma.
	Section on record representation clauses describes the new more
	relaxed rules about placement of large packed bit array components.
	Add documentation of GNAT.UTF_32

2005-03-12  Daniel Berlin  <dberlin@dberlin.org>

	* misc.c (gnat_post_options): Turn off structural
	aliasing for now.

2005-03-08  Laurent Guerby  <laurent@guerby.net>

	* system-linux-sparc.ads: Fix typo in previous commit.

2005-03-07  James A. Morrison  <phython@gcc.gnu.org>
	    Laurent Guerby  <laurent@guerby.net>

	PR ada/20035
	* system-linux-sparc.ads: New.
	* Makefile.in: Add sparc linux entry.

2005-02-27  Danny Smith  <dannysmith@users.sourceforge.net>

	* seh_init.c (__gnat_SEH_error_handler): Mark third and fourth
	parameters as unused.

2005-02-26  Nathanael Nerode  <neroden@gcc.gnu.org>
	Partial merge from libada-gnattools-branch:

	2004-12-02  Nathanael Nerode  <neroden@gcc.gnu.org>
	* Makefile.in: Move gnattools{1,1re,2,3,4} and corresponding flags
	into code in gnattools/Makefile.in.  Remove direct dependencies on
	stamp-tools by tools clauses.
	2004-12-02  Nathanael Nerode  <neroden@gcc.gnu.org>
	* config-lang.in: Add gnattools to $lang_dirs.

2005-02-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR ada/19942
	* utils.c (gnat_type_for_mode): Return null instead of ICE because
	we asked for an unknown mode.

2005-02-12  Richard Henderson  <rth@redhat.com>

	* utils.c (gnat_type_for_mode): Return NULL for COMPLEX modes;
	validate SCALAR_INT_MODE_P before calling gnat_type_for_size.

2005-02-10  Andreas Jaeger  <aj@suse.de>

	* init.c (__gnat_initialize): Mark parameter as unused.

2005-02-09  Doug Rupp  <rupp@adacore.com>

	* g-expect-vms.adb (Non_Blocking_Spawn): Separate out.
	* g-enblsp-vms-alpha.adb g-enblsp-vms-ia64.adb: New subunits.

2005-02-09  Doug Rupp  <rupp@adacore.com>

	* gnatchop.adb (dup, dup2),
	g-dirope.adb (closedir, opendir, rmdir): Reference via System.CRTL.

	* gnatlbr.adb (mkdir),
	mlib-tgt-vms-ia64.adb (popen, plose):  Import with decc$ prefix.

	* s-crtl.ads (closdir, dup, dup2, opendir, rmdir): Import.

2005-02-09  Doug Rupp  <rupp@adacore.com>

	* s-tpopde-vms.adb: Add pragma Warnings (Off) for Task_Id conversions.

2005-02-09  Robert Dewar  <dewar@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Pascal Obry  <obry@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Doug Rupp  <rupp@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* g-zstspl.ads: New file.

	* a-chahan.ads, a-chahan.adb: Add declarations from AI-285

	* a-string.ads: Add pragma Ada_05 for wide_wide_space to get warning in
	Ada 95 mode
	Add definition of Wide_Wide_Space for AI-285

	* impunit.ads, impunit.adb, sem_ch10.adb: Complete rewrite and new
	interface (to support Ada 95 and Ada 2005 units).
	Add Unbounded_IO files
	Add entries for Wide_Wide packages for AI-285
	Add list of containers packages to Ada 2005 unit list

	* a-swuwti.ads, a-swuwti.adb, a-suteio.ads, a-suteio.adb: Updates to
	support new Unbounded_IO package cleanly.

	* g-utf_32.ads, g-utf_32.adb: New files.

	* Makefile.rtl: Add entry for g-utf_32
	Add new files for Unbounded_IO
	Adjust make file for new AI-285 wide wide packages
	Add AI-302 containers to the run time.

	* a-stwibo.adb, a-stwibo.ads, a-stwisu.adb, a-stwisu.ads,
	a-strbou.ads, a-strbou.adb, a-strsup.ads, a-strsup.adb: New
	subprograms for AI-301.

	* a-stwiun.adb, a-stwiun.ads: Minor reformatting.

	* a-stunau.ads: Minor comment correction

	* rtsfind.ads, rtsfind.adb: Add definitions for Wide_Wide attributes
	etc.
	Also extend Text_IO_Kludge to support Wide_Wide_Text_IO
	(Check_RPC): Update to match changes in expanded code.
	Clean up unused entity.

	* exp_ch3.ads, exp_ch3.adb: Fix various places where Wide_Wide_String
	was not taken into account.
	This includes proper initialization with Normalize_Scalars.
	(Get_Simple_Init_Val): Major rewrite for initialize scalars and
	normalize scalars cases (particularly the latter) to do a better job
	of finding invalid representations.

	* s-scaval.ads, s-scaval.adb: Add values for zero invalid values

	* s-strops.ads, s-strops.adb: Remove string normalize routines, never
	used

	* exp_dist.adb: Add support for wide wide character type
	(Expand_Receiving_Stubs_Bodies): For a package declaration that has a
	private part, generate stub bodies at the end of the private part,
	not the visible part.
	(Add_RACW_Primitive_Operations_And_Bodies): Add last missing code for
	PolyORB support.
	(Add_Obj_RPC_Receiver_Completion): Add PCS-specific subprograms and
	generic wrapper to execute final processing after completing the
	expansion of the RPC receiver for an RACW.

	* snames.h, snames.ads, snames.adb: Add definitions for wide_wide
	packages and attributes.
	(Preset_Names): Addition of the new reserved words of Ada 2005,
	that is interface, overriding and synchronized.
	(Get_Pragma_Id): Give support to the use of the new reserved word
	"interface" as a pragma name.
	(Is_Pragma_Name): Give support to the use of the new reserved word
	"interface" as a pragma name.
	(Preset_Names): Add stream_size string for the Stream_Size Ada2005
	attribute implementation.

	* exp_attr.adb (Expand_Attribute_Reference): Do not apply validity
	checks to entities that are output parameters of Asm operations.
	Handle the Stream_Size attribute.
	Add implementation of Wide_Wide_Value, Wide_Wide_Image, Wide_Wide_Width

	* exp_imgv.ads, exp_imgv.adb: Add support for wide wide character type

	* sem_attr.adb (Eval_Attribute): Raise compile-time constraint error
	for second parameter being 0.0.
	Add support for wide wide character type.
	(Analyze_Attribute, Eval_Attribute): Handle the Stream_Size attribute.

	* s-valwch.adb, s-valwch.ads, s-imgwch.ads, s-imgwch.adb,
	s-wchstw.ads, s-wchstw.adb, s-wchwts.adb, s-wchwts.ads,
	s-widwch.adb, s-widwch.ads, s-wwdcha.adb, s-wwdcha.ads,
	s-wwdenu.adb, s-wwdenu.ads, s-wwdwch.adb, s-wwdwch.ads: Add support
	for wide wide character cases.

	* cstand.adb: Create entities for Wide_Wide_Character and
	Wide_Wide_String.

	* i-c.ads, i-c.adb: Fix not raising CE for null wide strings in
	accordance with AI-258.
	Add new declarations for 16/32 bit C character types (Part of AI285)

	* einfo.ads, einfo.adb (Is_Obsolescent, Is_Ada_2005): New flag
	(Obsolescent_Warning): New field
	(Rep_Clause): New local subprogram used to share code. Returns the rep
	clause for which the name is given in parameter.
	(Has_Stream_Size_Clause): New routine.
	(Stream_Size_Clause): Idem. Implementation is based on Rep_Clause.
	(Address_Clause): Implementation is now using Rep_Clause.
	(Alignment_Clause): Idem.
	(Size_Clause): Idem.

	* lib-xref.adb (Generate_Reference): Test for reference to Ada 2005
	entity in non-Ada 2005 mode and generate warning.

	* par-prag.adb: Add handling of one argument form for pragma Ada_05.
	(Prag): Code cleanup. Remove old gnat pragma "overriding"

	* sem_prag.adb: Add handling of one argument form for pragma Ada_05
	(Analyze_Pragma, case Elaborate, Elaborate_All): Do not disable warnings
	on the named unit if the pragma is not in the current compilation unit,
	so that elaboration calls in the current unit can set up an elaboration
	dependency on the named unit, as needed.
	(Analyze_Pragma, case Obsolescent): Allow pragma to be used for library
	subprogram as well as for subprograms declared within a package.
	(Analyze_Pragma, Sig_Flags): Code cleanup. Remove support for the GNAT
	pragma overriding.

	* krunch.ads, krunch.adb: Add special handling of Wide_Wide (krunched
	to z) to avoid some instances of duplication for Wide_Wide packages.

	* namet.ads, namet.adb: Implement encoding (WWhhhhhhhh) for wide wide
	characters.

	* scn.adb: Char_Literal_Value field is now a Uint

	* scng.adb: Significant rewrite to handle new Ada 2005 features
	allowing wide and wide wide characters in program text, e.g. for
	identifiers, as described in AI-285.
	(Set_Reserved): New procedure, makes setting up keywords cleaner.
	(Initialize_Scanner): Register the new reserved words of Ada 2005.
	(Scan): Give support to the new reserved words.

	* par-ch2.adb (P_Identifier): Compiling in Ada95 mode, generate a
	warning notifying that interface, overriding, and synchronized are
	new reserved words.
	(P_Pragma): Allow the use of the new reserved word "interface" as
	a pragma name.

	* gnatls.adb, gnatbind.adb,
	ali-util.adb, binde.adb, ali.ads, ali.adb: Code cleanup. Rename
	identifiers named "interface" to "SAL_Interface".

	* bindgen.adb (Gen_Main_Ada): Add support for the new SEH
	(Structured Exception handling).
	(Gen_Main_C): Idem.

	* bindgen.adb:
	(Gen_Main_Ada): Set the default exit code if specified.
	(Gen_Main_C): Likewise.
	Part of *DC20-006.
	(Gen_Output_File_C): Remove redundant output of gnat_exit_status.
	Code cleanup. Rename identifiers named "interface" to "SAL_Interface"

	* switch-b.adb, bindusg.adb, opt.ads, vms_data.ads: Add handling of
	new -Xnnn switch.

	* mlib-prj.adb, mlib.adb: Code cleanup. Rename one identifier that
	has a collision with the new Ada 2005 "interface" reserved word.

	* par-ch3.adb (P_Defining_Identifier): Compiling in Ada95 mode,
	generate a warning notifying that interface, overriding, and
	synchronized are new reserved words.

	* scans.ads (Token_Type): Addition of the tokens corresponding to the
	new reserved words of Ada 2005: Tok_Interface, Tok_Overriding
	and Tok_Synchronized.

	* sem_res.adb (Resolve_Actuals): Change error messages to refer to
	"dispatching" rather than "primitive" operations, since dispatching
	calls are now allowed to abstract formal subprograms (which are not
	primitive).
	Char_Literal_Value field is now a Uint
	(Resolve_Slice): If the prefix is an access to an unconstrained array,
	compute the actual subtype of the designated object to impose the proper
	index constraints.
	(Resolve_Selected_Component): Do not insert an access check if the
	prefix is an access type: such a node is expanded into an explicit
	dereference, on which the access check is performed anyway. Removes
	expensive duplicate checks.
	(Resolve_Call): Use new flag Is_Obsolescent and field
	Obsolescent_Warning so that pragma Obsolescent works on library
	subprograms.
	Add support for wide wide character type
	(Resolve_Allocator): Replace the error message on wrong null-exclusion
	value by a warning message.
	(Resolve_Type_Conversion): If the mixed-mode expression is interpreted
	as fixed-point, and one of the operands is non-static and universal, it
	can only be an illegal exponentiation operation, in which case there is
	no real value to retrieve.

	* exp_strm.adb: Add support for wide wide character type
	(Build_Elementary_Input_Call): Compute the size of the stream element by
	querying the rep chain to find the Stream_Attribute attribute value.
	(Build_Elementary_Write_Call): Ditto.

	* sem_aggr.adb: Char_Literal_Value field is now a Uint
	Add support for wide wide character type
	Replace the error messages on wrong null-exclusion value by warnings
	as described in Ada 2005.
	(Resolve_Extension_Aggregate): Document the fact that the error
	message on class-wide expressions in extensions aggregates.

	* sem_case.adb: Add support for wide wide character type

	* sem_ch13.adb: Add support for wide wide character type
	(Analyze_Attribute_Definition_Clause): Handle the Stream_Size attribute.

	* sem_ch3.adb: Add support for wide wide character type
	(Process_Subtype): If constraint is illegal for the type, set Ekind of
	now-useless Itype, to prevent cascaded errors on a compiler built
	without -gnatp.

	* sem_ch8.adb: Add with and use of Sem_Disp.
	(Analyze_Subprogram_Renaming): Replace unclean uses of
	Corresponding_Spec with Corresponding_Formal_Spec (and delete setting
	of Corresponding_Spec to Empty).
	(Attribute_Renaming): Replace use of Corresponding_Spec with
	Corresponding_ Formal_Spec and simplify condition.
	(Use_One_Package): Check that scope of homonym of identifier is defined,
	before checking whether it is a wrapper package.
	Add support for wide wide character type

	* sem_eval.adb: Add support for wide wide character type.
	(Eval_Arithmetic_Op): Check for compile time known signed integer
	overflow in the non-static case.
	(Subtypes_Statically_Match): A formal scalar type and its base type do
	not statically match.

	* sem_util.adb (Collect_Primitive_Operations): Minor change of "/=" to
	"not in" for test of N_Formal_Subprogram_Declaration (which is now a
	subtype).
	(Unit_Declaration_Node): Ditto.
	(Is_Variable_Prefix):  For the case of an indexed component whose prefix
	has a packed array type, the prefix has been rewritten into a type
	conversion. Determine variable-ness from the converted expression.
	Handle wide wide character cases.

	* stand.ads: Add types Wide_Wide_Character and Wide_Wide_String

	* stringt.ads, stringt.adb: Handle full UTF-32 range.
	Remove ["0A"] from comment, since it can look like a line terminator.
	Currently we don't permit this, but this is under discussion by the
	ARG, and it is easy enough to use a different example.

	* s-wchcon.ads, s-wchcnv.ads, s-wchcnv.adb: Add new subprograms for
	handling UTF-32 encoding for wide wide character.
	Implement new brackets coding ["hhhhhhhh"]
	Add UTF-8 encodings for full UTF-32 range

	* ttypes.ads: Add definition of Standard_Wide_Wide_Character_Size

	* types.h, types.ads, types.adb: Wide_Wide_Character now has full 31
	bit range Add full UTF-32 support.
	(RT_Exception_Code): Addition of CE_Null_Not_Allowed; used to
	notify that constraint error will be raised at run-time
	because a null value is assigned to a null-excluding object.
	Remove some obsolete declarations and make Char_Code
	unsigned.

	* a-except.adb (Rcheck_30): New subprogram. Addition of the message
	corresponding to CE_Null_Not_Allowed, and adjust the output of all the
	Rcheck subprograms.

	* checks.adb (Check_Null_Not_Allowed): Replace the error message on
	wrong null-exclusion value by a warning message.
	(Enable_Range_Check): Do range check if the prefix is an
	explicit dereference whose designated object is an unconstrained array.
	Current algorithm for removing duplicate checks is over-eager in this
	case.

	* sem_ch5.adb (Analyze_Assignment): Replace the error messages on wrong
	null-exclusion value by a warning message

	* atree.h, atree.ads, atree.adb: Remove Char_Code field support
	completely. Add support for Uint2 field

	sem_ch2.adb, exp_ch11.adb, exp_dbug.adb,
	exp_prag.adb: Char_Literal_Value field is now a Uint.

	* exp_util.adb (Insert_Actions): Replace
	N_Formal_Subprogram_Declaration by
	N_Formal_{Abstract|Concrete}_Subprogram_Declaration.
	Char_Literal_Value field is now a Uint.

	* sinfo.ads, sinfo.adb (Corresponding_Formal_Spec): New function
	defined for subprogram renaming declarations. When set, the field
	indicates the defining entity of a corresponding formal subprogram
	when the renaming corresponds to a formal subprogram association in an
	instantiation.
	(Set_Corresponding_Formal_Spec): New procedure to return
	Corresponding_Formal_Spec field.
	Minor changes of "=" to "in" in tests of N_Formal_Subprogram_Declaration
	(which is now a subtype).
	Char_Literal_Value field is now a Uint

	* exp_disp.ads, exp_disp.adb (Make_DT): Generate code that moves the
	pointer to the base of the dispatch table.
	Minor changes to comments.
	(Controlling_Type): New function for determining the tagged type
	associated with a tagged primitive subprogram.
	(Expand_Dispatching_Call): Add support for a controlling actual that is
	directly a value of type Ada.Tag rather than a tagged object.

	* i-cpp.ads, i-cpp.adb, a-tags.ads, a-tags.adb: Update documentation
	describing the new layout.
	(Dispatch_Table): The expander computes the actual array size, allocates
	the Dispatch_Table record accordingly, and generates code that displaces
	the base of the record after the Typeinfo_Ptr component. The access to
	these components is done by means of local functions.
	(Offset_To_Top): New function.
	(Typeinfo_Ptr): New function.
	(Get_TSD): Modified to access the new position of the TSD.
	(Set_TSD): Modified to save the TSD in its new position.

	* par-ch12.adb (P_Formal_Subprogram_Declaration): Add parsing for the
	case of formal abstract subprograms. Add check and message for -gnat05.
	Update comments.

	* sem_ch12.adb: Add with and use for Sem_Disp.
	(Analyze_Associations): Minor change from "=" to "in" for use of
	N_Formal_Subtype_Declaration (which is now a subtype).
	(Set_Analyzed_Formal): Minor changes from "=" to "in" for uses of
	N_Formal_Subtype_Declaration (which is now a subtype).
	(Analyze_Formal_Subprogram): Add handling for
	N_Formal_Abstract_Subprogram, marking the formal as abstract and
	dispatching, setting the controlling status of the formal parameters
	and result, and issuing an error if there is no controlling type for
	the formal subprogram.
	(Instantiate_Formal_Subprogram): Rather than setting Corresponding_Spec,
	which is an unclean use of that field, we set the new field
	Corresponding_Formal_Spec to make the formal subprogram available to
	processing in Analyze_Subprogram_Declaration.
	(Analyze_Formal_{Discrete, Decimal_Fixed_Point, Fixed_Point,
	Floating_Point, Modular_Integer, Signed_Integer}_Type: Make formal type
	Constrained, so that it is is does not statically match its anonymous
	base type.

	* sem_ch6.adb (Analyze_Subprogram_Specification): Include test for
	abstract formal subprograms in error check for functions returning
	abstract types. Set scope of new designator for
	a parameterless subprogram, so that it is available when checking the
	body for nested subprograms, before full analysis of said body.
	(Analyze_Subprogram_Body): Warn on inlining bodies with nested
	subprogram only if inner one comes from source.
	(Analyze_Function_Call): If the call is given in object notation, the
	analysis of the name rewrites the node and analyzes it with the proper
	argument list. After analyzing the name, if the call has been rewritten
	and the result type is set, no further analysis is needed.
	(Analyze_Return_Type): Subsidiary to Process_Formals: analyze subtype
	mark in function specification, in a context where the formals are
	visible and hide outer homographs.

	* sem_disp.adb (Check_Controlling_Type): Relax the check for same scope
	as the tagged type for the cases of abstract formal subprograms and
	renamings of those.  Clean up spec comments.
	(Check_Dispatching_Context): Add error message to indicate "abstract
	procedure", covering the case of a call to a formal abstract procedure
	that has statically tagged operands.
	(Check_Dispatching_Call): Check for the case of an actual given by
	a tag-indeterminate function call whose type is an ancestor of the
	containing call's associated tagged type. This situation can occur
	for inherited primitives with function defaults. In this case we
	use the tagged type's tag directly as the controlling argument for
	the calls.
	(Expand_Call): Name change on call to Expand_Dispatch_Call.

	* sprint.adb (Sprint_Node_Actual): Split
	N_Formal_Subprogram_Declaration into two alternatives for the new
	cases N_Formal_Abstract_Subprogram_Declaration and
	N_Formal_Concrete_Subprogram_Declaration.
	Char_Literal_Value field is now a Uint.

	* trans.c: Get rid of junk Uint2 reference.
	Char_Literal_Value field is now a Uint.
	(gnat_to_gnu, case N_Aggregate): Check TYPE_UNCHECKED_UNION_P.
	(gigi): Correct third arg to gimplify_body.

	* ada-tree.h: (TYPE_UNCHECKED_UNION_P): New flag.
	(TYPE_LANG_FLAG_0): Check for record or union.

	* treepr.adb: Char_Literal_Value field is now a Uint

	* uintp.h, uintp.ads, uintp.adb: Add new routines UI_To_CC and
	UI_From_CC.

	* widechar.ads, widechar.adb (Is_UTF_32_Non_Graphic): New function
	Add full UTF-32 support
	Char_Code is now 32 bits

	* sinput.ads, sinput.adb (Skip_Line_Terminators): Extend to deal with
	wide character UTF_32 line terminators.
	Initialize Main_Source_File to avoid error when no main
	source is loaded.

	* errout.adb (Finalize): Do not check Num_SRef_Pragmas
	(Main_Source_File) when no main source has been loaded, to avoid
	potential crash.

2005-02-09  Robert Dewar  <dewar@adacore.com>

	* a-strunb.ads, a-strunb.adb: Add missing pragma Ada_05 statements
	Fix name of Set routine

	* a-strfix.ads, a-strfix.adb: Add new index functions from AI-301 to
	fixed packages.

	* a-stwise.ads, a-stwise.adb, a-stwifi.ads, a-stwifi.adb,
	a-strsea.ads, a-strsea.adb: Add new index functions from AI-301 to
	fixed packages

	* a-witeio.ads, a-witeio.adb, a-textio.ads, a-textio.adb: New function
	forms of Get_Line subprograms for AI-301.

	* a-wtcoau.adb, a-wtcoau.ads, a-wtcoio.adb, a-wtcoio.ads,
	a-wtedit.adb, a-wtedit.adb, a-wtedit.ads, a-wttest.adb,
	a-wttest.ads, a-strmap.ads, a-strmap.adb, a-stwima.adb,
	a-stwima.ads: Minor reformatting.

2005-02-09  Doug Rupp  <rupp@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* adaint.c, adaint.h
	[VMS] (to_ptr32): New function.
	(MAYBE_TO_PTR32): New macro.
	(__gnat_portable_spawn,__gnat_portable_no_block_spawn): Adjust argv
	for pointer size.
	[VMS] (descriptor_s, ile_s): Use __char_ptr32 for adr field.
	[VMS] (#define fork()): Remove since unneccessary.
	(__gnat_set_close_on_exec): New routine to support
	GNAT.OS_Lib.Set_Close_On_Exec.

	* g-expect.adb (Set_Up_Communications): Mark the pipe descriptors for
	the parent side as close-on-exec so that they are not inherited by the
	child.

	* g-os_lib.ads, g-os_lib.adb (Set_Close_On_Exec): New subprogram to
	set or clear the FD_CLOEXEC flag on a file descriptor.

2005-02-09  Eric Botcazou  <ebotcazou@adacore.com>
	    Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	PR ada/19386
	* decl.c:
	(gnat_to_gnu_field): Do not necessarily invoke make_packable_type
	on the field if Pragma Component_Alignment (Storage_Unit).
	(gnat_to_gnu_entity, case object): Do not treat a renaming that has
	side-effects as if it were a constant; also make SAVE_EXPR to protect
	side-effects.
	(gnat_to_gnu_entity, case E_Record_Subtype): If have _Parent, make a
	UNION_TYPE.
	(make_dummy_type): Set TYPE_UNCHECKED_UNION_P.
	(components_to_record): Test it.
	Fix improper usage of REFERENCE_CLASS_P.

	* utils2.c (build_binary_op, case MODIFY_EXPRP): Treat UNION_TYPE as
	RECORD_TYPE.

	* utils2.c: Minor reformatting.

	* utils.c (convert, case UNION_TYPE): Check TYPE_UNCHECKED_UNION;
	handle other cases like RECORD_TYPE.

	* utils.c (gnat_pushdecl): Set TREE_NO_WARNING.

2005-02-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Gen_Assign): If the expression is an aggregate for a
	component of an array of arrays in an assignment context, and the
	aggregate has component associations that require sliding on
	assignment, force reanalysis of the aggregate to generate a temporary
	before the assignment.
	(Must_Slide): Make global to the package, for use in Gen_Assign.

2005-02-09  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Composite_Equality): If a component is an
	unchecked union with no inferable discriminants, return a
	Raise_Program_Error node, rather than inserting it at the point the
	type is frozen.
	(Expand_Record_Equality, Component_Equality): Handle properly the case
	where some subcomponent is an unchecked union whose generated equality
	code raises program error.

2005-02-09  Doug Rupp  <rupp@adacore.com>

	* gnatbl.c: [VMS] (_POSIX_EXIT): Define.
	[VMS] (#define exit hack): Remove.

2005-02-09  Pascal Obry  <obry@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* init.c (__gnat_initialize): Add a new parameter eh which contains the
	address of the exception registration. The Win32 version of this
	routine calls __gnat_install_SEH_handler() to initialize the SEH
	(Structured Exception Handling) handler.
	(__gnat_error_handler) [Win32]: Removed. Not needed as we use
	SEH (Structured Exception Handling) now.
	(__gnat_install_handler) [Win32]: Nothing to do now as we use SEH.
	(__gnat_initialize for ppc-vxworks): Adjust comments and the
	preprocessor condition protecting the call to the extra eh setup
	subprogram, which is only available for the ppc target.
	(__gnat_clear_exception_count): replaced reference to
	variable taskIdCurrent by call to taskIdSelf(), cleaner.

	* seh_init.c: New file.

	* Make-lang.in: (GNAT_ADA_OBJS): Add seh_init.o.
	(GNATBIND_OBJS): Idem.

	* misc.c (gnat_parse_file): Update call to __gnat_initialize. This
	routine takes a new parameter (a pointer to the exception registration
	for the SEH (Structured Exception Handling) support.

	* raise.h: (__gnat_install_SEH_handler): New prototype.
	Update copyright notice.

	* s-tassta.adb (Task_Wrapper): Declare the exception registration
	record and initialize it by calling __gnat_install_SEH_handler.

2005-02-09  Vincent Celier  <celier@adacore.com>

	* make.adb (Gnatmake): Do not fail when the main project has no object
	directory.

2005-02-09  Doug Rupp  <rupp@adacore.com>

	* Makefile.in [VMS] (LN,LN_S): Define as cp -p
	Rename s-asthan-vms.adb to s-asthan-vms-alpha.adb.
	[VMS]: Add translations for g-enblsp.adb.

	* s-asthan-vms.adb: Removed.
	* s-asthan-vms-alpha.adb: Added.

2005-02-09  Pascal Obry  <obry@adacore.com>

	* Makefile.in (LIBGNAT_SRCS): Add seh_init.c.
	(LIBGNAT_OBJS): Add seh_init.o.

2005-02-09  Arnaud Charlet  <charlet@adacore.com>

	PR ada/16592
	* Makefile.in: Link all gnat tools with -static-libgcc, since
	-shared-libgcc is now used by default on some systems (e.g. linux with
	recent binutils).
	Remove references to Makefile.prolog/generic, no longer used.

2005-02-09  Vincent Celier  <celier@adacore.com>

	* prj-makr.adb (Process_Directory): Put file name in canonical case
	before matching against the patterns.
	If gnatname has been invoked as <prefix>-gnatname
	then invoke the compiler as <prefix>-gcc, not just "gcc".

2005-02-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Create Actual_Subtype even
	with expansion disabled. The actual subtype is needed among other
	places when the selected component appears in the context of a loop
	bound, and denotes a packed array.
	(Operator_Check): Always use the first subtype in the
	error message, to avoid the appearance of internal base types.
	(Transform_Object_Operation): Copy each actual in full
	to the parameter associations of the constructed call, rather than
	using the shallow copy mechanism of New_Copy_List. This ensures that
	the chaining of named associations is done properly.
	(Complete_Object_Operation): Rewrite node, rather than
	replacing it, so that we can trace back to the original selected
	component.

	* sem_elab.adb (Set_Elaboration_Constraint): For initialization calls,
	and calls that use object notation, if the called function is not
	declared  in a withed unit, place the elaboration constraint on the
	unit in the context that makes the function accessible.
	(Check_Elab_Subtype_Declaration): Check whether a subtype declaration
	imposes an elaboration constraint between two packages.

2005-02-09  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch7.adb (Uninstall_Declarations): Exchange full and private
	views of a private type after handling its private dependents, to
	maintain proper stack discipline between entry and exit from the
	package.

2005-02-09  Cyrille Comar  <comar@adacore.com>

	* s-finimp.adb: (Finalize_List): Optimize in the no-abort case.
	Minor reformatting.

2005-02-09  Arnaud Charlet  <charlet@adacore.com>

	* s-tporft.adb (Register_Foreign_Thread): Initialize Task_Image[_Len]
	fields for foreign threads.

2005-02-09  Doug Rupp  <rupp@adacore.com>

	* s-vaflop.adb: Add pragma Warnings (Off) to eliminate infinite
	recursion warnings when compiled with -gnatdm.

2005-02-09  Robert Dewar  <dewar@adacore.com>

	* usage.adb: Add line for switch -gnat05 (allow Ada 2005 extensions)
	Slight fix to documentation of -gnaty with no parameters

	* xr_tabls.ads: Add ??? comment for missing overall comment

	* xsinfo.adb: Make default file name be sinfo.h, since this is what
	we now use by default.

	* xsnames.adb: Adjust end of file test to look for five space followed
	by '#' instead of six spaces. The format of xsnames.adb was modified
	in the last update.

	* a-numeri.ads: Add reference to AI-388 for greek letter pi
	identifier.

	* clean.adb: Minor reformatting.

	* gnat1drv.adb, gnatfind.adb, gnatlink.adb, gnatmem.adb,
	gnatname.adb: Minor reformatting
	Add 2005 to copyright output when utility is run

	* csets.adb: Eliminate obsolete comment

	* debug.adb, g-socket.ads, i-cobol.adb: Minor reformatting throughout
	Update comments.

	* sem_eval.ads (Eval_Integer_Literal): Do not inline this, not useful.

2005-02-09  Sergey Rybin  <rybin@adacore.com>

	* gnat_ugn.texi: Add to the gnatpp section the paragraph describing
	the difference between compact and incompact layout and add the record
	representation clause to the example illustrating different layouts.
	Add the description of '-A5' gnatpp option ("align 'AT' keywords in
	component clauses").

2005-02-09  Florian Villoing  <villoing@adacore.com>

	* gnat_ugn.texi: Fix typos.
	Use @command to display 'gcc', 'gnatbind', etc. insted of @code or
	@file.
	Make proper use of @ref, @xref and @pxref to avoid duplication of "see"
	in the generated documentation.

2005-02-09  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Remove all mentions of FSU threads, which are no
	longer supported.
	Update linker wrapper when linking with non GNU C++.

2005-02-09  Pascal Obry  <obry@adacore.com>

	* gnat_ugn.texi:
	Document the procedure to debug the DllMain routine on Windows.
	Add note about -funwind-tables and mixed Ada and C/C++ programming in
	ZCX mode.
	Document new BIND qualifer /RETURN_CODES=VMS.

2005-02-09  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Wordsmithing of "GNAT and Libraries" chapter
	Edited gnatmetric chapter

2005-02-09  Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi:
	Changes to document new wide wide character support
	For AI-285
	Update documentation on Normalize_Scalars and Initialize_Scalars

2005-02-09  Pascal Obry  <obry@adacore.com>

	* s-taprop-mingw.adb, s-soflin.ads: Minor reformatting.

2005-02-09  Jose Ruiz  <ruiz@adacore.com>

	* s-osinte-vxworks.ads (taskPriorityGet): Add this function (imported
	from the VxWorks kernel) that is needed for getting the active
	priority of the different tasks.

	* s-atacco.ads, s-atacco.adb (Nothing): Remove this dummy procedure.
	Use a pragma Elaborate_Body in the spec file instead.
	Noticed by code reading.

2005-02-09  Thomas Quinot  <quinot@adacore.com>

	* exp_util.ads: Minor correction in comment.

2005-02-09  Arnaud Charlet  <charlet@adacore.com>

	* s-taprop.ads (Initialize): Update comments. Remove pragma Inline,
	since this procedure is now too complex to be worth inlining.

2005-02-09  Richard Henderson  <rth@redhat.com>

	* utils.c (gnat_define_builtin): Remove.
	(gnat_install_builtins): Use build_common_builtin_nodes.

2005-02-09  Arnaud Charlet  <charlet@adacore.com>

	* a-rbtgso.adb, a-crbtgo.ads, a-crbtgo.adb, a-crbtgk.ads,
	a-crbtgk.adb, a-crbltr.ads, a-coprnu.ads, a-coprnu.adb,
	a-coorse.ads, a-coorse.adb, a-convec.ads, a-convec.adb,
	a-contai.ads, a-coinve.ads, a-coinve.adb, a-cohata.ads,
	a-cohama.ads, a-cohama.adb, a-ciorse.ads, a-ciorse.adb,
	a-cihama.ads, a-cihama.adb, a-cidlli.ads, a-cidlli.adb,
	a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads, a-cgcaso.adb,
	a-cgarso.ads, a-cgarso.adb, a-cdlili.ads, a-cdlili.adb,
	a-cgaaso.adb, a-coormu.adb, a-ciormu.adb, a-cihase.adb,
	a-cihase.ads, a-cohase.adb, a-cohase.ads, a-ciorma.ads,
	a-coorma.ads, a-swunha.ads, a-stunha.ads, a-ciormu.ads,
	a-coormu.ads, a-rbtgso.ads, a-swunha.adb, a-stunha.adb,
	a-cgaaso.ads, a-ciorma.adb, a-coorma.adb, a-secain.adb,
	a-secain.ads, a-slcain.ads, a-slcain.adb, a-shcain.ads,
	a-shcain.adb, a-chtgke.ads, a-chtgke.adb, a-stwiha.ads,
	a-stwiha.adb, a-strhas.ads, a-strhas.adb, a-chzla1.ads,
	a-chzla9.ads, a-lfztio.ads, a-liztio.ads, a-llfzti.ads,
	a-llizti.ads, a-sfztio.ads, a-siztio.ads, a-ssizti.ads,
	a-stzbou.adb, a-stzbou.ads, a-stzfix.adb, a-stzfix.ads,
	a-stzhas.adb, a-stzhas.ads, a-stzmap.adb, a-stzmap.ads,
	a-stzsea.adb, a-stzsea.ads, a-stzsup.adb, a-stzsup.ads,
	a-stzunb.adb, a-stzunb.ads, a-swunau.adb, a-swunau.ads,
	a-szmzco.ads, a-szunau.adb, a-szunau.ads, a-szunha.adb,
	a-szunha.ads, a-szuzti.adb, a-szuzti.ads, a-tiunio.ads,
	a-wwunio.ads, a-ztcoau.adb, a-ztcoau.ads, a-ztcoio.adb,
	a-ztcoio.ads, a-ztcstr.adb, a-ztcstr.ads, a-ztdeau.adb,
	a-ztdeau.ads, a-ztdeio.adb, a-ztdeio.ads, a-ztedit.adb,
	a-ztedit.ads, a-ztenau.adb, a-ztenau.ads, a-ztenio.adb,
	a-ztenio.ads, a-ztexio.adb, a-ztexio.ads, a-ztfiio.adb,
	a-ztfiio.ads, a-ztflau.adb, a-ztflau.ads, a-ztflio.adb,
	a-ztflio.ads, a-ztgeau.adb, a-ztgeau.ads, a-ztinau.adb,
	a-ztinau.ads, a-ztinio.adb, a-ztinio.ads, a-ztmoau.adb,
	a-ztmoau.ads, a-ztmoio.adb, a-ztmoio.ads, a-zttest.adb,
	a-zttest.ads, a-zzunio.ads: New files. Part of new Ada 2005
	library.

2005-01-27  Laurent Guerby  <laurent@guerby.net>

	* Makefile.in: Fix a-intnam.ads from previous commit,
	add 2005 to copyright.
	* a-intman-rtems.ads: Renamed to...
	* a-intnam-rtems.ads:

2005-01-27  Laurent Guerby  <laurent@guerby.net>

	* Makefile.in: Rename GNAT RTEMS specific files.
	* 5rtpopsp.adb, 4rintnam.ads, 5rosinte.adb,
	5rosinte.ads, 5rparame.adb: Replaced by files below.
	* s-tpopsp-rtems.adb, a-intman-rtems.ads, s-osinte-rtems.adb,
	s-osinte-rtems.ads, s-parame-rtems.adb: Replace files above.

2005-01-27  Joel Sherrill  <joel.sherrill@oarcorp.com>
	    Laurent Guerby  <laurent@guerby.net>

	PR ada/19488
	* 5rosinte.ads: Add No_Key constant.
	* 5rtpopsp.adb: Initialize ATCB_Key with No_Key and fix style.
	* gsocket.h: Do not include <sys/socket.h> with RTEMS either.

2005-01-26  Laurent Guerby  <laurent@guerby.net>

	PR ada/19414
	* i-cobol.adb (Valid_Numeric): Handle zero length case.

2005-01-20  Richard Henderson  <rth@redhat.com>

	* Makefile.in (alpha-linux, LIBGNAT_TARGET_PAIRS): Use
	a-intnam-linux.ads and system-linux-alpha.ads.
	* a-intnam-linux-alpha.ads: Remove file.
	* s-osinte-linux-alpha.ads (SIGUNUSED, SIGSTKFLT, SIGLOST): New.
	* system-linux-alpha.ads: New file.

2005-01-18  Jakub Jelinek  <jakub@redhat.com>

	PR ada/13470
	* a-stunau.adb (Get_String): Don't return U.Reference, but Ret that is
	set to the new string.

2005-01-18  Toon Moene  <toon@moene.indiv.nluug.nl>

	* system-linux-ppc.ads: Set ZCX_By_Default and GCC_ZCX_Support
	to True.

2005-01-18  Richard Henderson  <rth@redhat.com>

	* Makefile.in (LIBGNAT_TARGET_PAIRS, TOOLS_TARGET_PAIRS, MISCLIB,
	THREADSLIB, GNATLIB_SHARED, PREFIX_OBJS, LIBRARY_VERSION): Specialize
	for alpha-linux.
	* s-osinte-linux-alpha.ads, a-intnam-linux-alpha.ads: New files.

2005-01-14  Andrew Pinski  <pinskia@physics.uc.edu>

	* system-darwin-ppc.ads (ZCX_By_Default): Change to True.
	(GCC_ZCX_Support): Likewise.

2005-01-11  Bastian Blank  <waldi@debian.org>

	* system-linux-s390.ads: Define Preallocated_Stacks.
	* system-linux-s390x.ads: Likewise.

2005-01-04  Arnaud Charlet  <charlet@adacore.com>

	* gnat_ugn.texi: Fix texi errors with null variables.

2005-01-03  Thomas Quinot  <quinot@adacore.com>

	* gen-soccon.c: New utility program to generate g-soccon.ads
	automatically.

	* socket.c, gsocket.h: Split inclusion of system header files into a
	gsocket.h file separated from socket.c, to allow reuse in gen-soccon.c.

	* g-soccon.ads, g-soccon-unixware.ads, g-soccon-tru64.ads,
	g-soccon-aix.ads, g-soccon-irix.ads, g-soccon-hpux.ads,
	g-soccon-interix.ads, g-soccon-solaris.ads, g-soccon-mingw.ads,
	g-soccon-vxworks.ads, g-soccon-freebsd.ads: Note that these files
	should not be edited by hand anymore, but should be regenerated using
	gen-soccon.

2005-01-03  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* s-atacco.ads, a-direio.adb: Protect use of 'Constrained by warnings
	on/off, since this is an obsolescent feature, for which we now generate
	a warning.

	* sem_attr.adb (Analyze_Attribute, case Constrained): Issue warning if
	warning mode is set and obsolescent usage of this attribute occurs.
	(Resolve_Access, case 'Access): Note that GNAT uses the context type to
	disambiguate overloaded prefixes, in accordance with AI-235. GNAT code
	predates, and partly motivates, the adoption of the AI.
	Implement new Ada 2005 attribute Mod

	* exp_attr.adb (Expand_N_Attribute_Reference): Implement Ada 2005
	attribute Mod.

	* par-ch4.adb (P_Name): In Ada 2005 mode, recognize new attribute Mod

	* snames.h, snames.ads, snames.adb: Add entry for No_Dependence for
	pragma restrictions.
	New entry for Ada 2005 attribute Mod.

	* par-prag.adb:
	Add recognition of new pragma Restrictions No_Dependence
	Recognize restriction No_Obsolescent_Features at parse time

	* bcheck.adb: Add circuitry for checking for consistency of
	No_Dependence restrictions.

	* lib-writ.ads, lib-writ.adb: Output new R lines for No_Dependence
	restrictions.

	* restrict.ads, restrict.adb: Add subprograms to deal with
	No_Dependence restrictions.

	* rtsfind.adb: Check that implicit with's do not violate No_Dependence
	restrictions.

	* sem_ch3.adb, sem_ch11.adb, sem_ch13.adb, lib-xref.adb,
	sem_attr.adb: Add check for new restriction No_Obsolescent_Features

	* scn.ads, prj-err.ads, prj-err.adb, ali-util.adb, gprep.adb: Add new
	dummy parameter to scng instantiation.
	Needed for new restriction No_Obsolescent_Features

	* scn.adb: (Obsolescent_Check): New procedure
	Needed for new restriction No_Obsolescent_Features

	* scng.ads, scng.adb: Always allow wide characters in Ada 2005 mode, as
	specified by AI-285, needed for implementation of AI-388 (adding greek
	pi to Ada.Numerics).
	Add new generic formal to scng, needed for new restriction
	No_Obsolescent_Features.

	* s-rident.ads: Add new restriction No_Obsolescent_Features.

	* ali.ads, ali.adb: Adjustments for reading new No_Dependence
	restrictions lines.
	(Scan_ALI): When finding an unexpected character on an R line, raise
	exception Bad_R_Line, instead of calling Fatal_Error, so that, when
	Ignore_Errors is True, default restrictions are set and scanning of the
	ALI file continues with the next line. Also, when Bad_R_Line is raised
	and Ignore_Errors is True, skip to the end of le line.

	* sem_ch10.adb: Check that explicit with's do not violate
	No_Dependence restrictions.
	(Install_Withed_Unit): Add code to implement AI-377 and diagnose
	illegal context clauses containing child units of instance.

	* sem_prag.adb: Processing and checking for new No_Dependence
	restrictions.
	(Analyze_Pragma, case Psect_Object): Call Check_Arg_Is_External_Name to
	analyze and check the External argument.

	* a-numeri.ads: Add greek letter pi as alternative spelling of Pi

2005-01-03  Robert Dewar  <dewar@adacore.com>

	* atree.adb: Add a fifth component to entities
	This allows us to add 32 flags and four new fields

	* atree.ads: Add a fifth component to entities
	This allows us to add 32 flags and four new fields

	* einfo.ads, einfo.adb: Document new fields and new flags now available
	Add routines for printing new fields

	* treepr.adb: Call routines to print out additional fields if present

2005-01-03  Arnaud Charlet  <charlet@adacore.com>

	* bld.ads, bld.adb, bld-io.ads, bld-io.adb, gprcmd.adb,
	gpr2make.ads, gpr2make.adb: Remove gpr2make, replaced by gprmake.

	* Makefile.in: Add support to build shared Ada libraries on solaris x86
	Remove gpr2make, replaced by gprmake.
	Remove references to gnatmem and libaddr2line.
	Add indepsw.adb<indepsw-linux.adb to TOOLS_TARGET_PAIRS for IA64 linux.
	(gnatlib-shared-darwin): Add "-fno-common" to GNATLIBCFLAGS.
	Add support for specialized version of Ada.Numerics.Aux for Darwin: use
	a-numaux-darwin.ads and a-numaux-darwin.adb
	Enable mlib-tgt-lynxos.adb on lynxos.

	* Make-lang.in: Remove rules for gpr2make.
	When generating sdefault.adb, do not call Relocate_Path
	on S3 for function Target_Name, as it is not a path.
	Remove references to gnatmem and libaddr2line.

	* a-numaux-darwin.ads, a-numaux-darwin.adb, g-soccon-darwin.ads: New
	files.

2005-01-03  Samuel Tardieu  <tardieu@adacore.com>

	* checks.adb (Apply_Alignment_Check): Generate a warning if an object
	address is incompatible with its base type alignment constraints when
	this can be decided statically.

2005-01-03  Olivier Hainque  <hainque@adacore.com>

	* decl.c (compatible_signatures_p): New function. The intended purpose
	is to check if two function signatures for a call-site and a callee are
	compatible enough for the call to be valid. The underlying purpose is
	to check if a call to a mapped builtin is using the right interface.
	The current code actually does not check antyhing - this a placeholder
	for future refinements.
	(gnat_to_gnu_entity) <E_Subprogram_Call>: Add preliminary bits to handle
	builtin calls for convention Intrinsic.

	* gigi.h (builtin_decl_for): Declare (new function).

	* utils.c (gnat_install_builtins): Install the target specific builtins.
	(builtin_decl_for): New function, provide a dummy body for now.

2005-01-03  Geert Bosch  <bosch@adacore.com>

	* eval_fat.adb: (Eps_Model,Eps_Denorm): Remove, no longer used.
	(Succ): Re-implement using Scaling, Exponent and Ceiling attributes.
	(Pred): Implement in terms of Succ.

	* trans.c (convert_with_check): Reimplement conversion of float to
	integer.

2005-01-03  Ed Schonberg  <schonberg@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* exp_aggr.adb (Packed_Array_Aggregate_Handled): The values of the
	bounds can be negative, and must be declared Int, not Nat.

	* sem_elim.adb (Line_Num_Match): Correct wrong code when index in an
	array is checked after using the index in the array.

	* makegpr.adb (Add_Switches): Check if there is a package for the
	processor. If there is no package, do not look for switches.

2005-01-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch3.adb (Stream_Operations_OK): Predicate to determine when the
	generation of predefined stream operations (specs and bodies) should
	proceed. Under various restrictions these subprograms must not be
	generated.

2005-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.adb:
	Declare subprogram index in Build_RPC_Receiver_Body, to reduce the
	amount of PCS-specific code in RACW stubs generation.
	(Copy_Specification): Set Etype on copied formal parameter entities, as
	this information is needed for PolyORB stubs generation.
	(PolyORB_Support.Build_Subprogram_Receiving_Stubs): Remove unused
	variable Dynamic_Async.
	(Build_Subprogram_Receiving_Stubs): Make PCS-specific
	(Build_RPC_Receiver_Specification): Make generic again, as recent
	changes have allowed RPC receivers to have the same profile for both
	variants of the PCS.
	Reorganise RPC receiver generation to reduce differences between the
	structure of GARLIC and PolyORB RPC receivers.
	(Add_Receiving_Stubs_To_Declarations): Make this subprogram
	PCS-specific.
	Simplify elaboration code for RCI packages.

	* s-parint.ads, s-parint.adb, rtsfind.ads: Reorganise RPC receiver
	generation to reduce differences between the structure of GARLIC and
	PolyORB RPC receivers.

	* s-stratt.adb: Fix typo in comment.

2005-01-03  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.ads (Make_Final_Call): Rewrite comment (was incorrectly
	copied from Make_Init_Call).

	* exp_strm.adb (Build_Mutable_Record_Read_Procedure): Do component
	reads and assignments on a temporary variable declared with appropriate
	discriminants.

2005-01-03  Robert Dewar  <dewar@adacore.com>

	* i-c.adb (To_C): Raise CE if string is null and Append_Null

2005-01-03  Robert Dewar  <dewar@adacore.com>

	* i-cstrin.adb (Update): Do not append a null in form called with a
	String. This avoids unintended behavior.

2005-01-03  Arnaud Charlet  <charlet@adacore.com>

	PR ada/17527
	* init.c: Fix warnings on Free BSD section.

2005-01-03  Arnaud Charlet  <charlet@adacore.com>

	PR ada/16949
	* sinfo.ads: Fix obsolete reference to xsinfo.spt (replaced by
	xsinfo.adb).

2005-01-03  Vincent Celier  <celier@adacore.com>

	* make.adb (Collect_Arguments_And_Compile): Do not attempt to build
	libraries when Unique_Compile is True (-u switch).
	(Gnatmake): ditto.

2005-01-03  Robert Dewar  <dewar@adacore.com>

	* namet.adb (Get_Decoded_Name_With_Brackets): Fix case of not allowing
	upper case letter or underscore after W, as allowed by spec.

2005-01-03  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-darwin.ads, s-osinte-darwin.adb: Clean up
	darwin port by using proper type definitions from header files.
	Use SIGTERM instead of SIGABRT for SIGADAABORT.

2005-01-03  Robert Dewar  <dewar@adacore.com>

	* par.adb: Enhance error message handling for configuration file
	pragmas.

2005-01-03  Robert Dewar  <dewar@adacore.com>

	* s-arit64.adb (Double_Divide): Put back changes that got accidentally
	removed during the previous update (test properly for case of dividing
	largest negative number by -1, which generates overflow).

2005-01-03  Ed Schonberg  <schonberg@adacore.com>
	    Sergey Rybin  <rybin@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): Create a separate node
	to use as the defining identifier for a formal package.
	(Remove_Parent): If the instance takes place within (an instance of)
	a sibling, preserve private declarations of common parent.

2005-01-03  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Has_Fixed_Op): New predicate in Check_Arithmetic_Pair,
	to determine whether one of the operands is a fixed-point type for
	which a user-defined multiplication or division operation might be
	defined.

	* sem_res.adb (Valid_Conversion): The legality rules for conversions
	of access types are symmetric in Ada 2005: either designated type can
	be unconstrained.

2005-01-03  Vincent Celier  <celier@adacore.com>

	* s-fileio.adb (Temp_File_Record): Change length of string component
	Name from L_tmpnam + 1 to max_path_len + 1.

2005-01-03  Arnaud Charlet  <charlet@adacore.com>

	* s-tasini.ads, s-tasini.adb (Undefer_Abortion): Handle case of
	Self_Id.Deferral_Level = 0.
	(Do_Pending_Action): Move this function to the spec.

	* s-tasren.adb (Selective_Wait [Terminate_Selected]): Call
	Do_Pending_Action explicitely when needed, in case we're using
	No_Abort restrictions.

	* s-tassta.adb (Create_Task): If Abort is not allowed, reset the
	deferral level since it will not get changed by the generated code.
	Keeping a default value of 1 would prevent some operations (e.g.
	select or delay) to proceed successfully.

2005-01-03  Ben Brosgol  <brosgol@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Cyrille Comar  <comar@adacore.com>

	* ug_words, gnat_ugn.texi: Added alpha-ivms transitioning section to
	porting guide chapter (vms version).
	Revised doc title (removed "for native platforms") and subtitle.
	Add discussion on warning flag for obsolescent features. First we
	note that it applies to obsolete GNAT features, which was previously
	omitted. Second we contrast the behavior with that of the new
	Ada 2005 AI-368 restriction No_Obsolescent_Features.
	Preliminary rewriting of GNAT & libraries chapter in order to take
	into account default project locations & new project manager
	capabilities.

2005-01-03  Robert Dewar  <dewar@adacore.com>

	* cstand.adb (Create_Operators): Clean up format and documentation of
	unary and binary operator result tables. No change in code, just
	reformatting and addition of comments.

	* errout.ads, gnatfind.adb, s-maccod.ads, sem.adb,
	sem_ch2.adb: Minor reformatting

	* atree.ads, elists.ads, lib.ads, namet.ads, nlists.ads, repinfo.ads,
	sinput.ads, stringt.ads, uintp.ads, urealp.ads: Minor clarification to
	comments for Tree_Read and Tree_Write.

2005-01-03  Pascal Obry  <obry@adacore.com>

	* exp_attr.ads: Minor reformatting.

2005-01-03  Romain Berrendonner  <berrendo@adacore.com>

	* comperr.adb (Compiler_Abort): Add specialized message for GAP
	versions.

2005-01-03  Ed Schonberg  <schonberg@adacore.com>

	* exp_pakd.adb (Create_Packed_Array_Type): Add a guard to check
	whether the ancestor type is private, as may be the case with nested
	instantiations.


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