2006-12-07  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in: Replace CROSS_COMPILE with CROSS_DIRECTORY_STRUCTURE.
	* adaint.c: Likewise.

2006-12-05  Aldy Hernandez  <aldyh@redhat.com>

	Merge from gimple-tuples-branch:
	2006-11-02  Aldy Hernandez  <aldyh@redhat.com>

	* ada-tree.h (lang_tree_node): Handle gimple tuples.
	* trans.c (gnat_gimplify_expr): Replace MODIFY_EXPR with
	GIMPLE_MODIFY_STMT.

2006-12-02  Kazu Hirata  <kazu@codesourcery.com>

	* Makefile.in, mingw32.h, trans.c: Fix comment typos.
	* gnat_rm.texi, gnat_ugn.texi: Follow spelling conventions.
	Fix typos.

2006-11-17  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/27936
	* trans.c (add_decl_expr): Do not dynamically elaborate padded objects
	if the initializer takes into account the padding.

2006-11-11  Richard Guenther  <rguenther@suse.de>

	* trans.c (maybe_stabilize_reference): Remove handling of
	FIX_CEIL_EXPR, FIX_FLOOR_EXPR and FIX_ROUND_EXPR.

2006-11-05  Arnaud Charlet  <charlet@adacore.com>

	PR ada/29707
	* s-osinte-linux-alpha.ads, s-osinte-linux-hppa.ads
	(To_Target_Priority): New function.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* a-taster.adb, s-traent-vms.adb, a-elchha.ads, a-elchha.adb,
	a-exctra.adb, ali-util.adb, exp_disp.ads, s-stalib.ads, s-traent.adb,
	s-addope.ads, s-addope.adb, a-rbtgso.adb, a-crbltr.ads, a-coprnu.adb,
	a-cgcaso.adb, a-cgarso.adb, a-cgaaso.adb, a-coormu.adb, a-ciormu.adb,
	a-rbtgso.ads, a-stunha.adb, a-stunha.adb, a-ciorma.adb, a-coorma.adb,
	a-secain.adb, a-slcain.adb, a-shcain.adb, a-stwiha.adb, a-stwiha.adb,
	a-strhas.adb, a-strhas.adb, a-stzhas.adb, a-stzhas.adb, a-szuzha.adb,
	a-chacon.adb, a-chacon.adb, a-chacon.ads, a-stboha.adb, a-swbwha.adb,
	a-szbzha.adb: Minor reformatting. Fix header.

	* a-numaux-x86.adb: Add parentheses for use of unary minus
	* a-ngcefu.adb: Supply missing parentheses for unary minus
	* a-ngcoty.adb: Add parens for use of unary minus
	* a-ngelfu.adb: Add missing parens for unary minus
	* a-tifiio.adb: Add parentheses for uses of unary minus

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Bob Duff  <duff@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_res.adb (Resolve_Unary_Op): Add warning for use of unary minus
	with multiplying operator.
	(Expected_Type_Is_Any_Real): New function to determine from the Parent
	pointer whether the context expects "any real type".
	(Resolve_Arithmetic_Op): Do not give an error on calls to the
	universal_fixed "*" and "/" operators when they are used in a context
	that expects any real type. Also set the type of the node to
	Universal_Real in this case, because downstream processing requires it
	(mainly static expression evaluation).
	Reword some continuation messages
	Add some \\ sequences to continuation messages
	(Resolve_Call): Refine infinite recursion case. The test has been
	sharpened to eliminate some false positives.
	Check for Current_Task usage now includes entry barrier, and is now a
	warning, not an error.
	(Resolve): If the call is ambiguous, indicate whether an interpretation
	is an inherited operation.
	(Check_Aggr): When resolving aggregates, skip associations with a box,
	which are priori correct, and will be replaced by an actual default
	expression in the course of expansion.
	(Resolve_Type_Conversion): Add missing support for conversion from
	a class-wide interface to a tagged type. Minor code cleanup.
	(Valid_Tagged_Converion): Add support for abstact interface type
	conversions.
	(Resolve_Selected_Component): Call Generate_Reference here rather than
	during analysis, and use May_Be_Lvalue to distinguish read/write.
	(Valid_Array_Conversion): New procedure, abstracted from
	Valid_Conversion, to incorporate accessibility checks for arrays of
	anonymous access types.
	(Valid_Conversion): For a conversion to a numeric type occurring in an
	instance or inlined body, no need to check that the operand type is
	numeric, since this has been checked during analysis of the template.
	Remove legacy test for scope name Unchecked_Conversion.

	* sem_res.ads: Minor reformatting

	* a-except.adb, a-except-2005.adb: Turn off subprogram ordering
	(PE_Current_Task_In_Entry_Body): New exception code
	(SE_Restriction_Violation): Removed, not used

	* a-except.ads:  Update comments.

	* types.h, types.ads: Add definition for Validity_Check
	(PE_Current_Task_In_Entry_Body): New exception code
	(SE_Restriction_Violation): Removed, not used

2006-10-31  Thomas Quinot  <quinot@adacore.com>

	* g-socthi-vxworks.adb (C_Gethostbyname): Fix wrong test for returned
	error status.

2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>

	* a-calend-vms.adb (Leap_Sec_Ops): Temp body for package in private
	part of Ada.Calendar: all subprogram raise Unimplemented.
	(Split_W_Offset): Temp function body, raising Unimplemented

	* a-calend.ads, a-calend-vms.ads:
	Add imported variable Invalid_TZ_Offset used to designate targets unable
	to support time zones.
	(Unimplemented): Temporary function raised by the body of new
	subprograms below.
	(Leap_Sec_Ops): New package in the private part of Ada.Calendar. This
	unit provides handling of leap seconds and is used by the new Ada 2005
	packages Ada.Calendar.Arithmetic and Ada.Calendar.Formatting.
	(Split_W_Offset): Identical spec to that of Ada.Calendar.Split. This
	version returns an extra value which is the offset to UTC.

	* a-calend.adb (Split_W_Offset): Add call to localtime_tzoff.
	(Leap_Sec_Ops): New body for package in private part of Ada.Calendar.
	(Split_W_Offset): New function body.
	(Time_Of): When a date is close to UNIX epoch, compute the time for
	that date plus one day (that amount is later substracted after
	executing mktime) so there are no problems with time zone adjustments.

	* a-calend-mingw.adb: Remove Windows specific version no longer needed.

	* a-calari.ads, a-calari.adb, a-calfor.ads, a-calfor.adb,
	a-catizo.ads, a-catizo.adb: New files.

	* impunit.adb: Add new Ada 2005 entries

	* sysdep.c: Add external variable __gnat_invalid_tz_offset.
	Rename all occurences of "__gnat_localtime_r" to
	"__gnat_localtime_tzoff".
	(__gnat_localtime_tzoff for Windows): Add logic to retrieve the time
	zone data and calculate the GMT offset.
	(__gnat_localtime_tzoff for Darwin, Free BSD, Linux, Lynx and Tru64):
	Use the field "tm_gmtoff" to extract the GMT offset.
	(__gnat_localtime_tzoff for AIX, HPUX, SGI Irix and Sun Solaris): Use
	the external variable "timezone" to calculate the GMT offset.

2006-10-31  Arnaud Charlet  <charlet@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>

	* s-osinte-posix.adb, s-osinte-linux.ads, s-osinte-freebsd.adb,
	s-osinte-freebsd.ads, s-osinte-solaris-posix.ads, s-osinte-hpux.ads,
	s-osinte-darwin.adb, s-osinte-darwin.ads, s-osinte-lynxos-3.ads,
	s-osinte-lynxos-3.adb (To_Target_Priority): New function maps from
	System.Any_Priority to a POSIX priority on the target.

	* system-linux-ia64.ads:
	Extend range of Priority types on Linux to use the whole range made
	available by the system.

	* s-osinte-aix.adb, s-osinte-aix.ads (To_Target_Priority): New
	function maps from System.Any_Priority to a POSIX priority on the
	target.
	(PTHREAD_PRIO_PROTECT): Set real value.
	(PTHREAD_PRIO_INHERIT): Now a function.
	(SIGCPUFAIL): New signal.
	(Reserved): Add SIGALRM1, SIGWAITING, SIGCPUFAIL, since these signals
	are documented as reserved by the OS.

	* system-aix.ads: Use the full range of priorities provided by the
	system on AIX.

	* s-taprop-posix.adb: Call new function To_Target_Priority.
	(Set_Priority): Take into account Task_Dispatching_Policy and
	Priority_Specific_Dispatching pragmas when determining if Round Robin
	must be used for scheduling the task.

	* system-linux-x86_64.ads, system-linux-x86.ads,
	system-linux-ppc.ads: Extend range of Priority types on Linux to use
	the whole range made available by the system.

	* s-taprop-vms.adb, s-taprop-mingw.adb, s-taprop-irix.adb,
	s-taprop-tru64.adb, s-taprop-linux.adb, s-taprop-hpux-dce.adb,
	s-taprop-lynxos.adb (Finalize_TCB): invalidate the stack-check cache
	when deallocating the TCB in order to avoid potential references to
	deallocated data.
	(Set_Priority): Take into account Task_Dispatching_Policy and
	Priority_Specific_Dispatching pragmas when determining if Round Robin
	or FIFO within priorities must be used for scheduling the task.

	* s-taprop-vxworks.adb (Enter_Task): Store the user-level task id in
	the Thread field (to be used internally by the run-time system) and the
	kernel-level task id in the LWP field (to be used by the debugger).
	(Create_Task): Reorganize to unify the calls to taskSpawn into a single
	instance, and propagate the current task options to the spawned task.
	(Set_Priority): Take into account Priority_Specific_Dispatching pragmas.
	(Initialize): Set Round Robin dispatching when the corresponding pragma
	is in effect.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* system-vms_64.ads, system-darwin-ppc.ads, system-vxworks-x86.ads,
	system-linux-hppa.ads, system-hpux-ia64.ads,
	system-lynxos-ppc.ads, system-lynxos-x86.ads, system-tru64.ads,
	system-vxworks-sparcv9.ads, system-solaris-x86.ads,
	system-irix-o32.ads, system-irix-n32.ads, system-hpux.ads,
	system-vxworks-m68k.ads, system-vxworks-mips.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.ads: Add pragma Warnings(Off,
	Default_Bit_Order) to kill constant condition warnings for references
	to this switch.

2006-10-31  Vincent Celier  <celier@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* mlib-tgt-lynxos.adb, mlib-tgt-mingw.adb, mlib-tgt-tru64.adb,
	mlib-tgt-aix.adb, mlib-tgt-irix.adb, mlib-tgt-hpux.adb,
	mlib-tgt-linux.adb, mlib-tgt-solaris.adb: Use Append_To, instead of
	Ext_To, when building the library file name

	* mlib-tgt-vxworks.adb: ditto.
	(Get_Target_Suffix): Add support for x86 targets.

	* mlib-fil.ads, mlib-fil.adb: (Append_To): New function

	* mlib-tgt-darwin.adb:
	Use Append_To, instead of Ext_To, when building the library file name
	(Flat_Namespace): New global variable.
	(No_Shared_Libgcc_Switch): Rename to No_Shared_Libgcc_Options.
	(Shared_Libgcc_Switch): Rename to With_Shared_Libgcc_Options.
	(Link_Shared_Libgcc): Delete.
	(Build_Dynamic_Library): Adjust for above changes.
	Use Opt package.
	(Build_Dynamic_Library): Pass -shared-libgcc if GCC 4 or later.

2006-10-31  Eric Botcazou  <ebotcazou@adacore.com>

	* s-taprop-solaris.adb: (Time_Slice_Val): Change type to Integer.
	(Initialize): Add type conversions required by above change.

2006-10-31  Jose Ruiz  <ruiz@adacore.com>

	* s-osinte-vxworks.ads, s-osinte-vxworks.adb:
	(getpid): New body for this function that uses the underlying taskIdSelf
	function for VxWorks 5 and VxWorks 6 in kernel mode.
	(unsigned_int): New type, modular to allow logical bit operations.
	(taskOptionsGet): New imported function.

	* s-taspri-vxworks.ads (Private_Data): Change the type for the LWP
	field to be compliant with the type used by the corresponding operating
	system primitive.

2006-10-31  Pascal Obry  <obry@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* adaint.c (__gnat_get_libraries_from_registry): Call explicitly the
	ASCII version of the registry API. This is needed as the GNAT runtime
	is now UNICODE by default.
	Include version.h.
	(get_gcc_version): Do not hardcode the return value.
	(__gnat_file_time_name): On Windows properly set the default returned
	value to -1 which corresponds to Invalid_Time.
	(__gnat_fopen): New routine. A simple wrapper on all plateforms
	 except on Windows where it does conversion for unicode support.
	(__gnat_freopen): Idem.
	(__gnat_locate_exec_on_path): If environment variable PATH does not
	exist, return a NULL pointer

	* adaint.h: (__gnat_fopen): Declare.
	(__gnat_freopen): Likewise.

	* mingw32.h (_tfreopen): Define this macro here for older MingW
	version.
	Activate the unicode support on platforms using a MingW runtime
	version 3.9 or newer.

	* s-crtl.ads (fopen): Is now an import to the wrapper __gnat_freopen.
	This is needed for proper unicode support on Windows.
	(freopen): Idem.

2006-10-31  Eric Botcazou  <ebotcazou@adacore.com>
	    Nicolas Setton  <setton@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* gigi.h: (tree_code_for_record_type): Declare.
	(add_global_renaming_pointer): Rename to record_global_renaming_pointer.
	(get_global_renaming_pointers): Rename to
	invalidate_global_renaming_pointers.
	(static_ctors): Delete.
	(static_dtors): Likewise.
	(gnat_write_global_declarations): Declare.
	(create_var_decl): Adjust descriptive comment to indicate that the
	subprogram may return a CONST_DECL node.
	(create_true_var_decl): Declare new function, similar to
	create_var_decl but forcing the creation of a VAR_DECL node.
	(get_global_renaming_pointers): Declare.
	(add_global_renaming_pointer): Likewise.

	* ada-tree.h (DECL_READONLY_ONCE_ELAB): New macro.

	* decl.c (gnat_to_gnu_entity) <case E_Function>: Don't copy the type
	tree before setting TREE_ADDRESSABLE for by-reference return mechanism
	processing.
	(gnat_to_gnu_entity): Remove From_With_Type from computation for
	imported_p.
	<E_Access_Type>: Use the Non_Limited_View as the full view of the
	designated type if the pointer comes from a limited_with clause.  Make
	incomplete designated type if it is in the main unit and has a freeze
	node.
	<E_Incomplete_Type>: Rework to treat Non_Limited_View, Full_View, and
	Underlying_Full_View similarly.  Return earlier if the full view already
	has an associated tree.
	(gnat_to_gnu_entity) <E_Record_Type>: Restore comment.
	(gnat_to_gnu_entity) <E_Record_Type>: Do not use a dummy type.
	(gnat_to_gnu_entity) <E_Variable>: Set TYPE_REF_CAN_ALIAS_ALL on the
	reference type built for objects with an address clause.
	Use create_true_var_decl with const_flag set for
	DECL_CONST_CORRESPONDING_VARs, ensuring a VAR_DECL is created with
	TREE_READONLY set.
	(gnat_to_gnu_entity, case E_Enumeration_Type): Set TYPE_NAME
	for Character and Wide_Character types. This info is read by the
	dwarf-2 writer, and is needed to be able to use the command "ptype
	character" in the debugger.
	(gnat_to_gnu_entity): When generating a type representing
	a Character or Wide_Character type, set the flag TYPE_STRING_FLAG,
	so that debug writers can distinguish it from ordinary integers.
	(elaborate_expression_1): Test the DECL_READONLY_ONCE_ELAB flag in
	addition to TREE_READONLY to assert the constantness of variables for
	elaboration purposes.
	(gnat_to_gnu_entity, subprogram cases): Change loops on formal
	parameters to call new Einfo function First_Formal_With_Extras.
	(gnat_to_gnu_entity): In type_annotate mode, replace a discriminant of a
	protected type with its corresponding discriminant, to obtain a usable
	declaration
	(gnat_to_gnu_entity) <E_Access_Protected_Subprogram_Type>: Be prepared
	for a multiple elaboration of the "equivalent" type.
	(gnat_to_gnu_entity): Adjust for renaming of add_global_renaming_pointer
	into record_global_renaming_pointer.
	(gnat_to_gnu_entity) <E_Array_Type>: Do not force
	TYPE_NONALIASED_COMPONENT to 0 if the element type is an aggregate.
	<E_Array_Subtype>: Likewise.
	(gnat_to_gnu_entity) <E_Incomplete_Subtype>: Add support for regular
	incomplete subtypes and incomplete subtypes of incomplete types visible
	through a limited with clause.
	(gnat_to_gnu_entity) <E_Array_Subtype>: Take into account the bounds of
	the base index type for the maximum size of the array only if they are
	constant.
	(gnat_to_gnu_entity, renaming object case): Do not wrap up the
	expression into a SAVE_EXPR if stabilization failed.

	* utils.c (create_subprog_decl): Turn TREE_ADDRESSABLE on the type of
	a result decl into DECL_BY_REFERENCE on this decl, now what is expected
	by lower level compilation passes.
	(gnat_genericize): New function, lowering a function body to GENERIC.
	Turn the type of RESULT_DECL into a real reference type if the decl
	has been marked DECL_BY_REFERENCE, and adjust references to the latter
	accordingly.
	(gnat_genericize_r): New function. Tree walking callback for
	gnat_genericize.
	(convert_from_reference, is_byref_result): New functions. Helpers for
	gnat_genericize_r.
	(create_type_decl): Call gnat_pushdecl before calling
	rest_of_decl_compilation, to make sure that field TYPE_NAME of
	type_decl is properly set before calling the debug information writers.
	(write_record_type_debug_info): The heuristics which compute the
	alignment of a field in a variant record might not be accurate. Add a
	safety test to make sure no alignment is set to a smaller value than
	the alignment of the field type.
	(make_dummy_type): Use the Non_Limited_View as the underlying type if
	the type comes from a limited_with clause. Do not loop on the full view.
	(GET_GNU_TREE, SET_GNU_TREE, PRESENT_GNU_TREE): New macros.
	(dummy_node_table): New global variable, moved from decl.c.
	(GET_DUMMY_NODE, SET_DUMMY_NODE, PRESENT_DUMMY_NODE): New macros.
	(save_gnu_tree): Use above macros.
	(get_gnu_tree): Likewise.
	(present_gnu_tree): Likewise.
	(init_dummy_type): New function, moved from decl.c. Use above macros.
	(make_dummy_type): Likewise.
	(tree_code_for_record_type): New function extracted from make_dummy_type
	(init_gigi_decls): Set DECL_IS_MALLOC on gnat_malloc.
	(static_ctors): Change it to a vector, make static.
	(static_dtors): Likewise.
	(end_subprog_body): Adjust for above change.
	(build_global_cdtor): Moved from trans.c.
	(gnat_write_global_declarations): Emit global constructor and
	destructor, and call cgraph_optimize before emitting debug info for
	global declarations.
	(global_decls): New global variable.
	(gnat_pushdecl): Store the global declarations in global_decls, for
	later use.
	(gnat_write_global_declarations): Emit debug information for global
	 declarations.
	(create_var_decl_1): Former create_var_decl, with an extra argument to
	 state whether the creation of a CONST_DECL is allowed.
	(create_var_decl): Behavior unchanged. Now a wrapper around
	create_var_decl_1 allowing CONST_DECL creation.
	(create_true_var_decl): New function, similar to create_var_decl but
	forcing the creation of a VAR_DECL node (CONST_DECL not allowed).
	(create_field_decl): Do not always mark the field as addressable
	if its type is an aggregate.
	(global_renaming_pointers): New static variable.
	(add_global_renaming_pointer): New function.
	(get_global_renaming_pointers): Likewise.

	* misc.c (gnat_dwarf_name): New function.
	(LANG_HOOKS_DWARF_NAME): Define to gnat_dwarf_name.
	(gnat_post_options): Add comment about structural alias analysis.
	(gnat_parse_file): Do not call cgraph_optimize here.
	(LANG_HOOKS_WRITE_GLOBALS): Define to gnat_write_global_declarations.

	* trans.c (process_freeze_entity): Don't abort if we already have a
	non dummy GCC tree for a Concurrent_Record_Type, as it might
	legitimately have been elaborated while processing the associated
	Concurrent_Type prior to this explicit freeze node.
	(Identifier_to_gnu): Do not make a variable referenced in a SJLJ
	exception handler volatile if it is of variable size.
	(process_type): Remove bypass for types coming from a limited_with
	clause.
	(call_to_gnu): When processing the copy-out of a N_Type_Conversion GNAT
	actual, convert the corresponding gnu_actual to the real destination
	type when necessary.
	(add_decl_expr): Set the DECL_READONLY_ONCE_ELAB flag on variables
	originally TREE_READONLY but whose elaboration cannot be performed
	statically.
	Part of fix for F504-021.
	(tree_transform, subprogram cases): Change loops on formal parameters to
	call new Einfo function First_Formal_With_Extras.
	(gnat_to_gnu) <N_Op_Shift_Right_Arithmetic>: Ignore constant overflow
	stemming from type conversion for the lhs.
	(Attribute_to_gnu) <Attr_Alignment>: Also divide the alignment by the
	number of bits per unit for components of records.
	(gnat_to_gnu) <N_Code_Statement>: Mark operands addressable if needed.
	(Handled_Sequence_Of_Statements_to_gnu): Register the cleanup associated
	with At_End_Proc after the SJLJ EH cleanup.
	(Compilation_Unit_to_gnu): Call elaborate_all_entities only on the main
	compilation unit.
	(elaborate_all_entities): Do not retest type_annotate_only.
	(tree_transform) <N_Abstract_Subprogram_Declaration>: Process the
	result type of an abstract subprogram, which may be an itype associated
	with an anonymous access result (related to AI-318-02).
	(build_global_cdtor): Move to utils.c.
	(Case_Statement_to_gnu): Avoid adding the choice of a when statement if
	this choice is not a null tree nor an integer constant.
	(gigi): Run unshare_save_expr via walk_tree_without_duplicates
	on the body of elaboration routines instead of mark_unvisited.
	(add_stmt): Do not mark the tree.
	(add_decl_expr): Tweak comment.
	(mark_unvisited): Delete.
	(unshare_save_expr): New static function.
	(call_to_gnu): Issue an error when making a temporary around a
	procedure call because of non-addressable actual parameter if the
	type of the formal is by_reference.
	(Compilation_Unit_to_gnu): Invalidate the global renaming pointers
	after building the elaboration routine.

2006-10-31  Bob Duff  <duff@adacore.com>

	* a-filico.adb (Finalize(List_Controller)): Mark the finalization list
	as finalization-started, so we can raise Program_Error on 'new'.

	* s-finimp.adb: Raise Program_Error on 'new' if finalization of the
	collection has already started.

	* s-finimp.ads (Collection_Finalization_Started): Added new special
	flag value for indicating that a collection's finalization has started.

	* s-tassta.adb (Create_Task): Raise Program_Error on an attempt to
	create a task whose master has already waited for dependent tasks.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* lib.adb, lib.ads: (In_Predefined_Unit): New functions

	* a-finali.ads, a-ngcoty.ads, a-strbou.ads, a-stream.ads, a-strmap.ads,
	a-strunb.ads, a-stwibo.ads, a-stwima.ads, a-stwiun.ads, a-taside.ads,
	a-coorse.ads, a-convec.ads, a-coinve.ads, a-cohama.ads, a-ciorse.ads,
	a-cihama.ads, a-cihase.ads, a-cohase.ads, a-ciorma.ads, a-coorma.ads,
	a-ciormu.ads, a-coormu.ads, a-stzbou.ads, a-stzmap.ads, a-stzunb.ads,
	a-except-2005.ads: Add pragma Preelaborable_Warning

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Jose Ruiz  <ruiz@adacore.com>

	* a-dispat.ads, a-dispat.adb, a-diroro.ads, a-diroro.adb: New files.

	* ali.adb (Get_Name): Properly handle scanning of wide character names
	encoded with brackets notation.
	(Known_ALI_Lines): Add S lines to this list.
	(Scan_ALI): Acquire S (priority specific dispatching) lines.
	New flag Elaborate_All_Desirable in unit table

	* ali.ads (Priority_Specific_Dispatching): Add this range of
	identifiers to be used for Priority_Specific_Dispatching table entries.
	(ALIs_Record): Add First_Specific_Dispatching and
	Last_Specific_Dispatching that point to the first and last entries
	respectively in the priority specific dispatching table for this unit.
	(Specific_Dispatching): Add this table for storing each S (priority
	specific dispatching) line encountered in the input ALI file.
	New flag Elaborate_All_Desirable in unit table

	* bcheck.adb: (Check_Configuration_Consistency): Add call to
	Check_Consistent_Dispatching_Policy.
	(Check_Consistent_Dispatching_Policy): Add this procedure in charge of
	verifying that the use of Priority_Specific_Dispatching,
	Task_Dispatching_Policy, and Locking_Policy is consistent across the
	partition.

	* bindgen.adb: (Public_Version_Warning): function removed.
	(Set_PSD_Pragma_Table): Add this procedure in charge of getting the
	required information from ALI files in order to initialize the table
	containing the specific dispatching policy.
	(Gen_Adainit_Ada): Generate the variables required for priority specific
	dispatching entries (__gl_priority_specific_dispatching and
	__gl_num_specific_dispatching).
	(Gen_Adainit_C): Generate the variables required for priority specific
	dispatching entries (__gl_priority_specific_dispatching and
	__gl_num_specific_dispatching).
	(Gen_Output_File): Acquire settings for Priority_Specific_Dispatching
	pragma entries.
	(Gen_Restrictions_String_1, Gen_Restrictions_String_2): Removed.
	(Gen_Restrictions_Ada, Gen_Restrictions_C, Set_Boolean): New procedures.
	(Tab_To): Removed.
	(Gen_Output_File_Ada/_C): Set directly __gl_xxx variables instead of
	a call to gnat_set_globals.
	Generate a string containing settings from
	Priority_Specific_Dispatching pragma entries.
	(Gen_Object_Files_Options): Do not include the runtime libraries when
	pragma No_Run_Time is specified.

	* init.c (__gnat_install_handler, case FreeBSD): Use SA_SIGINFO, for
	consistency with s-intman-posix.adb.
	(__gnat_error_handler, case FreeBSD): Account for the fact that the
	handler is installed with SA_SIGINFO.
	(__gnat_adjust_context_for_raise, FreeBSD case): New function for
	FreeBSD ZCX support, copied from Linux version.
	Add MaRTE-specific definitions for the linux target. Redefine sigaction,
	sigfillset, and sigemptyset so the routines defined by MaRTE.
	(__gl_priority_specific_dispatching): Add this variable that stores the
	string containing priority specific dispatching policies in the
	partition.
	(__gl_num_specific_dispatching): Add this variable that indicates the
	highest priority for which a priority specific dispatching pragma
	applies.
	(__gnat_get_specific_dispatching): Add this routine that returns the
	priority specific dispatching policy, as set by a
	Priority_Specific_Dispatching pragma appearing anywhere in the current
	partition. The input argument is the priority number, and the result
	is the upper case first character of the policy name.
	(__gnat_set_globals): Now a dummy function.
	(__gnat_handle_vms_condition): Feed adjust_context_for_raise with
	mechargs instead of sigargs, as the latter can be retrieved from the
	former and sigargs is not what we want on ia64.
	(__gnat_adjust_context_for_raise, alpha-vms): Fetch sigargs from the
	mechargs argument.
	(__gnat_adjust_context_for_raise, ia64-vms): New function.
	(tasking_error): Remove unused symbol.
	(_abort_signal): Move this symbol to the IRIX specific part since this
	is the only target that uses this definition.
	(Check_Abort_Status): Move this symbol to the IRIX specific part since
	this is the only target that uses this definition.
	(Lock_Task): Remove unused symbol.
	(Unlock_Task): Remove unused symbol.

	* lib-writ.adb (Write_ALI): Output new S lines for
	Priority_Specific_Dispatching pragmas.
	Implement new flag BD for elaborate body desirable

	* lib-writ.ads: Document S lines for Priority Specific Dispatching.
	(Specific_Dispatching): Add this table for storing the entries
	corresponding to Priority_Specific_Dispatching pragmas.
	Document new BD flag for elaborate body desirable

	* par-prag.adb (Prag): Add Priority_Specific_Dispatching to the list
	of known pragmas.

2006-10-31  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads, a-tags.adb:
	(Predefined_DT): New function that improves readability of the code.
	(Get_Predefined_Prim_Op_Address, Set_Predefined_Prim_Op_Address,
	Inherit_DT): Use the new function Predefined_DT to improve code
	readability.
	(Register_Interface_Tag): Update assertion.
	(Set_Interface_Table): Update assertion.
	(Interface_Ancestor_Tags): New subprogram required to implement AI-405:
	determining progenitor interfaces in Tags.
	(Inherit_CPP_DT): New subprogram.

	* exp_disp.adb (Expand_Interface_Thunk): Suppress checks during the
	analysis of the thunk code.
	(Expand_Interface_Conversion): Handle run-time conversion of
	access to class wide types.
	(Expand_Dispatching_Call): When generating the profile for the
	subprogram itype for a dispatching operation, properly terminate the
	formal parameters chaind list (set the Next_Entity of the last formal
	to Empty).
	(Collect_All_Interfaces): Removed. This routine has been moved to
	sem_util and renamed as Collect_All_Abstract_Interfaces.
	(Set_All_DT_Position): Hidden entities associated with abstract
	interface primitives are not taken into account in the check for
	3.9.3(10); this check is done with the aliased entity.
	(Make_DT, Set_All_DT_Position): Enable full ABI compatibility for
	interfacing with CPP by default.
	(Expand_Interface_Conversion): Add missing support for static conversion
	from an interface to a tagged type.
	(Collect_All_Interfaces): Add new out formal containing the list of
	abstract interface types to cleanup the subprogram Make_DT.
	(Make_DT): Update the code to generate the table of interfaces in case
	of abstract interface types.
	(Is_Predefined_Dispatching_Alias): New function that returns true if
	a primitive is not a predefined dispatching primitive but it is an
	alias of a predefined dispatching primitive.
	(Make_DT): If the ancestor of the type is a CPP_Class and we are
	compiling under full ABI compatibility mode we avoid the generation of
	calls to run-time services that fill the dispatch tables because under
	this mode we currently inherit the dispatch tables in the IP subprogram.
	(Write_DT): Emit an "is null" indication for a null procedure primitive.
	(Expand_Interface_Conversion): Use an address as the type of the formal
	of the internally built function that handles the case in which the
	target type is an access type.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* binde.adb (Better_Choice, Worse_Choice): Implement new preferences.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* bindusg.ads, bindusg.adb:
	Change to package and rename procedure as Display, which
	now ensures that it only outputs usage information once.

2006-10-31  Jose Ruiz  <ruiz@adacore.com>

	* cal.c: Use the header sys/time.h for VxWorks 6.2 or greater when
	using RTPs.

	* mkdir.c: Use a different version of mkdir for VxWorks 6.2 or greater
	when using RTPs.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* treepr.adb: Use new subtype N_Membership_Test

	* checks.ads, checks.adb: Add definition for Validity_Check
	(Range_Or_Validity_Checks_Suppressed): New function
	(Ensure_Valid): Test Validity_Check suppressed
	(Insert_Valid_Check): Test Validity_Check suppressed
	(Insert_Valid_Check): Preserve Do_Range_Check flag
	(Validity_Check_Range): New procedure
	(Expr_Known_Valid): Result of membership test is always valid
	(Selected_Range_Checks): Range checks cannot be applied to discriminants
	by themselves. Disabling those checks must also be done for task types,
	where discriminants may be used for the bounds of entry families.
	(Apply_Address_Clause_Check): Remove side-effects if address expression
	is non-static and is not the name of a declared constant.
	(Null_Exclusion_Static_Checks): Extend to handle Function_Specification.
	Code cleanup and new error messages.
	(Enable_Range_Check): Test for some cases of suppressed checks
	(Generate_Index_Checks): Suppress index checks if index checks are
	suppressed for array object or array type.
	(Apply_Selected_Length_Checks): Give warning for compile-time detected
	length check failure, even if checks are off.
	(Ensure_Valid): Do not generate a check on an indexed component whose
	prefix is a packed boolean array.
	* checks.adb: (Alignment_Checks_Suppressed): New function
	(Apply_Address_Clause_Check): New procedure, this is a completely
	rewritten replacement for Apply_Alignment_Check
	(Get_E_Length/Get_E_First_Or_Last): Add missing barrier to ensure that
	we request a discriminal value only in case of discriminants.
	(Apply_Discriminant_Check): For Ada_05, only call Get_Actual_Subtype for
	assignments where the target subtype is unconstrained and the target
	object is a parameter or dereference (other aliased cases are known
	to be unconstrained).

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* clean.adb, gnatname.adb, gnatsym.adb, prep.adb, prep.ads,
	prepcomp.adb, prj.ads, prj-strt.adb, sem_maps.ads,
	vms_conv.adb: Fix bad table increment values (much too small)

	* table.adb (Realloc): Make sure we get at least some new elements
	Defends against silly small values for table increment

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Bob Duff  <duff@adacore.com>

	* einfo.ads, einfo.adb (Obsolescent_Warning): Now defined on all
	entities. Move other fields around to make this possible
	(Is_Derived_Type): Add missing call to Is_Type.
	(Extra_Formals): New function for subprograms, entries, subprogram
	types.
	(Set_Extra_Formals): New procedure for subprograms, entries, subp types.
	(First_Formal_With_Extras): New function for subprogs, entries, subp
	types.
	(Write_Field28_Name): New procedure for node display of "Extra_Formals".
	Add node information for E_Return_Statement.
	(Elaborate_Body_Desirable): New flag
	(Is_Return_By_Reference_Type): Rename Is_Return_By_Reference_Type
	to be Is_Inherently_Limited_Type, because return-by-reference has
	no meaning in Ada 2005.
	(E_Return_Statement): New entity kind.
	(Return_Applies_To): Field of E_Return_Statement.
	(Is_Return_Object): New flag in object entities.
	(Is_Dynamic_Scope): Make it True for E_Return_Statement.
	(Must_Have_Preelab_Init): New flag
	(Known_To_Have_Preelab_Init): New flag
	(Is_Formal_Object): Move from Sem_Ch8 body to Einfo
	(Is_Visible_Formal): New flag on entities in formal packages.
	(Low_Bound_Known): New flag
	(Non_Limited_View, Set_Non_Limited_View): Add membership test agains
	Incomplete_Kind.
	(Write_Field17_Name): Correct spelling of Non_Limited_View. Add name
	output when Id is an incomplete subtype.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* errout.ads, errout.adb (Finalize): Implement switch -gnatd.m
	Avoid abbreviation Creat
	(Finalize): List all sources in extended mail source if -gnatl
	switch is active.
	Suppress copyright notice to file in -gnatl=f mode if -gnatd7 set
	(Finalize): Implement new -gnatl=xxx switch to output listing to file
	(Set_Specific_Warning_On): New procedure
	(Set_Specific_Warning_Off): New procedure
	Add implementation of new insertion \\
	(Error_Msg_Internal): Add handling for Error_Msg_Line_Length
	(Unwind_Internal_Type): Improve report on anonymous access_to_subprogram
	types.
	(Error_Msg_Internal): Make sure that we set Last_Killed to
	True when a message from another package is suppressed.
	Implement insertion character ~ (insert string)
	(First_Node): Minor adjustments to get better placement.

	* frontend.adb:
	Implement new -gnatl=xxx switch to output listing to file

	* gnat1drv.adb:
	Implement new -gnatl=xxx switch to output listing to file

	* opt.ads: (Warn_On_Questionable_Missing_Paren): New switch
	(Commands_To_Stdout): New flag
	Implement new -gnatl=xxx switch to output listing to file
	New switch Dump_Source_Text
	(Warn_On_Deleted_Code): New warning flag for -gnatwt
	Define Error_Msg_Line_Length
	(Warn_On_Assumed_Low_Bound): New switch

	* osint.ads, osint.adb
	(Normalize_Directory_Name): Fix bug.
	Implement new -gnatl=xxx switch to output listing to file
	(Concat): Removed, replaced by real concatenation
	Make use of concatenation now allowed in compiler
	(Executable_Prefix.Get_Install_Dir): First get the full path, so that
	we find the 'lib' or 'bin' directory even when the tool has been
	invoked with a relative path.
	(Executable_Name): New function taking string parameters.

	* osint-c.ads, osint-c.adb:
	Implement new -gnatl=xxx switch to output listing to file

	* sinput-d.adb: Change name Creat_Debug_File to Create_Debug_File

	* switch-c.adb:
	Implement new -gnatl=xxx switch to output listing to file
	Recognize new -gnatL switch
	(no longer keep in old warning about old style usage)
	Use concatenation to simplify code
	Recognize -gnatjnn switch
	(Scan_Front_End_Switches): Clean up handling of -gnatW
	(Scan_Front_End_Switches): Include Warn_On_Assumed_Low_Bound for -gnatg

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* erroutc.ads, erroutc.adb (Set_Specific_Warning_On): New procedure
	(Set_Specific_Warning_Off): New procedure
	(Warning_Specifically_Suppressed): New function
	(Validate_Specific_Warnings): New procedure
	(Output_Msg_Text): Complete rewrite to support -gnatjnn

	* err_vars.ads: Implement insertion character ~ (insert string)

2006-10-31  Bob Duff  <duff@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Build_Record_Aggr_Code): For extension aggregates, if
	the parent part is a build-in-place function call, generate assignments.
	(Expand_Record_Aggregate): Call Convert_To_Assignments if any components
	are build-in-place function calls.
	(Replace_Self_Reference): New subsidiary of
	Make_OK_Assignment_Statement, to replace an access attribute that is a
	self-reference into an access to the appropriate component of the
	target object. Generalizes previous mechanism to handle self-references
	nested at any level.
	(Is_Self_Referential_Init): Remove, not needed.
	(Is_Self_Referential_Init): New predicate to simplify handling of self
	referential components in record aggregates.
	(Has_Default_Init_Comps, Make_OK_Assignment_Statement): Add guard to
	check for presence of entity before checking for self-reference.
	(Has_Default_Init_Comps): Return True if a component association is a
	self-reference to the enclosing type, which can only come from a
	default initialization.
	(Make_OK_Assignment_Statement): If the expression is of the form
	Typ'Acc, where Acc is an access attribute, the expression comes from a
	default initialized self-referential component.
	(Build_Record_Aggr_Code): If the type of the aggregate is a tagged type
	that has been derived from several abstract interfaces we must also
	initialize the tags of the secondary dispatch tables.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb:
	(Expand_Access_To_Protected_Op): If the context indicates that an access
	to a local operation may be transfered outside of the object, create an
	access to the wrapper operation that must be used in an external call.
	(Expand_N_Attribute_Reference, case Attribute_Valid): For the AAMP
	target, pass the Valid attribute applied to a floating-point prefix on
	to the back end without expansion.
	(Storage_Size): Use the new run-time function Storage_Size to retrieve
	the allocated storage when it is specified by a per-object expression.
	(Expand_N_Attribute_Reference): Add case for Attribute_Stub_Type.
	Nothing to do here, the attribute has been rewritten during semantic
	analysis.
	(Expand_Attribute_Reference): Handle expansion of the new Priority
	attribute
	(Find_Fat_Info): Handle case of universal real
	(Expand_Access_To_Protected_Op): Fix use of access to protected
	subprogram from inside the body of a protected entry.
	(Expand_Access_To_Protected_Op): Common procedure for the expansion of
	'Access and 'Unrestricted_Access, to transform the attribute reference
	into a fat pointer.
	(Is_Constrained_Aliased_View): New predicate to help determine whether a
	subcomponent's enclosing variable is aliased with a constrained subtype.
	(Expand_N_Attribute_Reference, case Attribute_Constrained): For Ada_05,
	test Is_Constrained_Aliased_View rather than Is_Aliased_View, because
	an aliased prefix must be known to be constrained in order to use True
	for the attribute value, and now it's possible for some aliased views
	to be unconstrained.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* exp_ch2.adb: Change Is_Lvalue to May_Be_Lvalue
	(Expand_Entity_Reference): Correct error of not handling subprogram
	formals in current_value processing.

2006-10-31  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.ads, exp_ch3.adb (Expand_N_Object_Declaration): Do not
	register in the final list objects containing class-wide interfaces;
	otherwise we incorrectly register the tag of the interface in the final
	list.
	(Make_Controlling_Function_Wrappers): Add missing barrier to do not
	generate the wrapper if the parent primitive is abstract. This is
	required to report the correct error message.
	(Expand_N_Subtype_Indication): Do validity checks on range
	(Clean_Task_Names): If an initialization procedure includes a call to
	initialize a task (sub)component, indicate that the procedure will use
	the secondary stack.
	(Build_Init_Procedure, Init_Secondary_Tags): Enable full ABI
	compatibility for interfacing with CPP by default.
	(Expand_N_Object_Declaration): Only build an Adjust call when the
	object's type is a nonlimited controlled type.
	* exp_ch3.adb: Add with and use of Exp_Ch6.
	(Expand_N_Object_Declaration): Check for object initialization that is a
	call to build-in-place function and apply Make_Build_In_Place_Call_In_
	Object_Declaration to the call.
	(Freeze_Type): When the designated type of an RACW was not frozen at the
	point where the RACW was declared, validate the primitive operations
	with respect to E.2.2(14) when it finally is frozen.
	(Build_Initialization_Call,Expand_Record_Controller): Rename
	Is_Return_By_Reference_Type to be Is_Inherently_Limited_Type, because
	return-by-reference has no meaning in Ada 2005.
	(Init_Secondary_Tags): Add missing call to Set_Offset_To_Top
	to register tag of the immediate ancestor interfaces in the
	run-time structure.
	(Init_Secondary_Tags): Moved to the specification to allow the
	initialization of extension aggregates with abstract interfaces.
	(Build_Master_Renaming): Make public, for use by function declarations
	whose return type is an anonymous access type.
	(Freeze_Record_Type): Replace call to Insert_List_Before by call to
	Insert_List_Before_And_Analyze after the generation of the specs
	associated with null procedures.
	(Expand_Tagged_Root): Update documentation in its specification.
	(Init_Secondary_Tags): Update documentation.
	(Build_Init_Procedure): If we are compiling under CPP full ABI compa-
	tibility mode and the immediate ancestor is a CPP_Pragma tagged type
	then generate code to inherit the contents of the dispatch table
	directly from the ancestor.
	(Expand_Record_Controller): Insert controller component after tags of
	implemented interfaces.
	(Freeze_Record_Type): Call new procedure Make_Null_Procedure_Specs to
	create null procedure overridings when null procedures are inherited
	from interfaces.
	(Make_Null_Procedure_Specs): New procedure to generate null procedure
	declarations for overriding null primitives inherited from interfaces.
	(Is_Null_Interface_Procedure): New function in
	Make_Null_Procedure_Specs.
	(Make_Predefined_Primitive_Specs/Predefined_Primitive_Bodies): If the
	immediate ancestor of a tagged type is an abstract interface type we
	must generate the specification of the predefined primitives associated
	with controlled types (because the dispatch table of the ancestor is
	null and hence these entries cannot be inherited). This is required to
	elaborate well the dispatch table.

2006-10-31  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Bob Duff  <duff@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Type_Conversion): Handle missing interface type
	conversion.
	(Expand_N_In): Do validity checks on range
	(Expand_Selected_Component): Use updated for of Denotes_Discriminant.
	(Expand_N_Allocator): For "new T", if the object is constrained by
	discriminant defaults, allocate the right amount of memory, rather than
	the maximum for type T.
	(Expand_Allocator_Expression): Suppress the call to Remove_Side_Effects
	when the allocator is initialized by a build-in-place call, since the
	allocator is already rewritten as a reference to the function result,
	and this prevents an unwanted duplication of the function call.
	Add with and use of Exp_Ch6.
	(Expand_Allocator_Expresssion): Check for an allocator whose expression
	is a call to build-in-place function and apply
	Make_Build_In_Place_Call_In_Allocator to the call (for both tagged and
	untagged designated types).
	(Expand_N_Unchecked_Type_Conversion): Do not do integer literal
	optimization if source or target is biased.
	(Expand_N_Allocator): Add comments for case of an allocator within a
	function that returns an anonymous access type designating tasks.
	(Expand_N_Allocator): apply discriminant checks for access
	discriminants of anonymous access types (AI-402, AI-416)

2006-10-31  Bob Duff  <duff@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.ads (Expand_N_Extended_Return_Statement): New procedure.

	* exp_ch5.adb (Expand_N_Loop_Statement): Do validity checks on range
	(Expand_N_Assignment_Statement): Call
	Make_Build_In_Place_Call_In_Assignment if the right-hand side is a
	build-in-place function call. Currently, this can happen only for
	assignments that come from aggregates.
	Add -gnatd.l --Use Ada 95 semantics for limited function returns,
	in order to alleviate the upward compatibility introduced by AI-318.
	(Expand_N_Extended_Return_Statement): Add support for handling the
	return object as a build-in-place result.
	(Expand_Non_Function_Return): Implement simple return statements nested
	within an extended return.
	(Enable_New_Return_Processing): Turn on the new processing of return
	statements.
	(Expand_Non_Function_Return): For a return within an extended return,
	don't raise Program_Error, because Sem_Ch6 now gives a warning.
	(Expand_N_Extended_Return_Statement): Implement AI-318
	(Expand_Simple_Function_Return): Ditto.
	(Expand_N_If_Statement): Handle new -gnatwt warning
	(Expand_N_Case_Statement): Handle new -gnatwt warning
	(Expand_N_Assignment): Handle assignment to the Priority attribute of
	a protected object.
	(Expand_N_Assignment_Statement): Implement -gnatVe/E to control
	validity checking of assignments to elementary record components.
	(Expand_N_Return_Statement): return Class Wide types on the secondary
	stack independantly of their controlled status since with HIE runtimes,
	class wide types are not potentially controlled anymore.

	* expander.adb (Expand): Add case for new N_Extended_Return_Statement
	node kind.

	* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Avoid
	Expand_Cleanup_Actions in case of N_Extended_Return_Statement, because
	it expects a block, procedure, or task. The return statement will get
	turned into a block, and Expand_Cleanup_Actions will happen then.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Bob Duff  <duff@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.ads, exp_ch6.adb: Use new Validity_Check suppression
	capability.
	(Expand_Inlined_Call): Tagged types are by-reference types, and
	therefore should be replaced by a renaming declaration in the expanded
	body, as is done for limited types.
	(Expand_Call): If this is a call to a function with dispatching access
	result, propagate tag from context.
	(Freeze_Subprogram): Enable full ABI compatibility for interfacing with
	CPP by default.
	(Make_Build_In_Place_Call_In_Assignment): New procedure to do
	build-in-place when the right-hand side of an assignment is a
	build-in-place function call.
	(Make_Build_In_Place_Call_In_Allocator): Apply an unchecked conversion
	of the explicit dereference of the allocator to the result subtype of
	the build-in-place function. This is needed to satisfy type checking
	in cases where the caller's return object is created by an allocator for
	a class-wide access type and the type named in the allocator is a
	specific type.
	(Make_Build_In_Place_Call_In_Object_Declaration): Apply an unchecked
	conversion of the reference to the declared object to the result subtype
	of the build-in-place function. This is needed to satisfy type checking
	in cases where the declared object has a class-wide type. Also, in the
	class-wide case, change the type of the object entity to the specific
	result subtype of the function, to avoid passing a class-wide object
	without explicit initialization to the back end.
	(Register_Interface_DT_Entry): Moved outside the body of
	Freeze_Subprogram because this routine is now public; it is called from
	Check_Dispatching_Overriding to handle late overriding of abstract
	interface primitives.
	(Add_Access_Actual_To_Build_In_Place_Call): New utility procedure for
	adding an implicit access actual on a call to a build-in-place function.
	(Expand_Actuals): Test for an actual parameter that is a call to a
	build-in-place function and apply
	Make_Build_In_Place_Call_In_Anonymous_Context to the call.
	(Is_Build_In_Place_Function): New function to determine whether an
	entity is a function whose calls should be handled as build-in-place.
	(Is_Build_In_Place_Function_Call): New function to determine whether an
	expression is a function call that should handled as build-in-place.
	(Make_Build_In_Place_Call_In_Allocator): New procedure for handling
	calls to build-in-place functions as the initialization of an allocator.
	(Make_Build_In_Place_Call_In_Anonymous_Context): New procedure for
	handling calls to build-in-place functions in contexts that do not
	involve init of a separate object (for example, actuals of subprogram
	calls).
	(Make_Build_In_Place_Call_In_Object_Declaration): New procedure for
	handling calls to build-in-place functions as the initialization of an
	object declaration.
	(Detect_Infinite_Recursion): Add explicit parameter Process to
	instantiation of Traverse_Body to avoid unreferenced warning.
	(Check_Overriding_Inherited_Interfaces): Removed.
	(Register_Interface_DT_Entry): Code cleanup.
	(Register_Predefined_DT_Entry): Code cleanup.
	(Expand_Inlined_Call.Rewrite_Procedure_Call): Do not omit block around
	inlined statements if within a transient scope.
	(Expand_Inlined_Call.Process_Formals): When replacing occurrences of
	formal parameters with occurrences of actuals in inlined body, establish
	visibility on the proper view of the actual's subtype for the body's
	context.
	(Freeze_Subprogram): Do nothing if we are compiling under full ABI
	compatibility mode and we have an imported CPP subprogram because
	for now we assume that imported CPP primitives correspond with
	objects whose constructor is in the CPP side (and therefore we
	don't need to generate code to register them in the dispatch table).
	(Expand_Actuals): Introduce copy of actual, only if it might be a bit-
	aligned selected component.
	(Add_Call_By_Copy_Node): Add missing code to handle the case in which
	the actual of an in-mode parameter is a type conversion.
	(Expand_Actuals): If the call does not come from source and the actual
	is potentially misaligned, let gigi handle it rather than rejecting the
	(Expand_N_Subprogram_Body, Freeze_Subprogram): set subprograms returning
	Class Wide types as returning by reference independantly of their
	controlled status since with HIE runtimes class wide types are not
	potentially controlled anymore.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch9.adb (Update_Prival_Types): Simplify code for entity
	references that are private components of the protected object.
	(Build_Barrier_Function): Set flag Is_Entry_Barrier_Function
	(Update_Prival_Subtypes): Add explicit Process argument to Traverse_Proc
	instantiation to deal with warnings.
	(Initialize_Protection): If expression for priority is non-static, use
	System_Priority as its expected type, in case the expression has not
	been analyzed yet.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* exp_dbug.ads, exp_dbug.adb (Get_External_Name): Add missing
	initialization of Homonym_Len.
	(Fully_Qualify_Name): Remove kludge to eliminate anonymous block
	names from fully qualified name. Fixes problem of duplicate
	external names differing only in the presence of such a block name.

2006-10-31  Thomas Quinot  <quinot@adacore.com>
	    Pablo Oliveira  <oliveira@adacore.com>

	* exp_dist.adb (Get_Subprogram_Ids): This function will no more assign
	subprogram Ids, even if they are not yet assigned.
	(Build_Subprogram_Id): It is now this function that will take care of
	calling Assign_Subprogram_Ids if necessary.
	(Add_Receiving_Stubs_To_Declarations): Checking the subprograms ids
	should be done only once they are assigned.
	(Build_From_Any_Function, case of tagged types): Add missing call to
	Allocate_Buffer.
	(Corresponding_Stub_Type): New subprogram. Returns the associated stub
	type for an RACW type.
	(Add_RACW_Features): When processing an RACW declaration for which the
	designated type is already frozen, enforce E.2.2(14) rules immediately.
	(GARLIC_Support.Build_Subprogram_Receiving_Stubs): Do not perform any
	special reordering of controlling formals.

	* exp_dist.ads (Corresponding_Stub_Type): New subprogram. Returns the
	associated stub type for an RACW type.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>

	* exp_fixd.adb (Rounded_Result_Set): For multiplication and division of
	fixed-point operations in an integer context, i.e. as operands of a
	conversion to an integer type, indicate that result must be rounded.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* exp_imgv.adb (Expand_Image_Attribute): For Wide_[Wide_]Character
	cases, pass the encoding method, since it is now required by the run
	time.

	* s-valwch.ads, s-valwch.adb (Value_Wide_Wide_Character): Avoid
	assumption that Str'First = 1.
	(Value_Wide_Character): Takes EM (encoding method) parameter and passes
	it on to the Value_Wide_Wide_Character call.
	(Value_Wide_Wide_Character): Takes EM (encoding method) parameter and
	properly handles a string of the form quote-encoded_wide_char-quote.

	* s-wchcnv.adb: Minor reformatting

2006-10-31  Javier Miranda  <miranda@adacore.com>

	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Add missing
	run-time membership test to ensure that the constructed object
	implements the target abstract interface.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* exp_prag.adb (Expand_Pragma_Common_Object): Use a single
	Machine_Attribute pragma internally to implement the user pragma.
	Add processing for pragma Interface so that it is now completely
	equivalent to pragma Import.

	* sem_prag.adb (Analyze_Pragma, case Obsolescent): Extend this pragma
	so that it can be applied to all entities, including record components
	and enumeration literals.
	(Analyze_Pragma, case Priority_Specific_Dispatching): Check whether
	priority ranges are correct, verify compatibility against task
	dispatching and locking policies, and if everything is correct an entry
	is added to the table containing priority specific dispatching entries
	for this compilation unit.
	(Delay_Config_Pragma_Analyze): Delay processing
	Priority_Specific_Dispatching pragmas because when processing the
	pragma we need to access run-time data, such as the range of
	System.Any_Priority.
	(Sig_Flags): Add Pragma_Priority_Specific_Dispatching.
	Allow pragma Unreferenced as a context item
	Add pragma Preelaborable_Initialization
	(Analyze_Pragma, case Interface): Interface is extended so that it is
	now syntactically and semantically equivalent to Import.
	(Analyze_Pragma, case Compile_Time_Warning): Fix error of blowups on
	insertion characters.
	Add handling for Pragma_Wide_Character_Encoding
	(Process_Restrictions_Restriction_Warnings): Ensure that a warning
	never supercedes a real restriction, and that a real restriction
	always supercedes a warning.
	(Analyze_Pragma, case Assert): Set Low_Bound_Known if assert is of
	appropriate form.

2006-10-31  Bob Duff  <duff@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_ch7.adb (Build_Array_Deep_Procs, Build_Record_Deep_Procs,
	Make_Deep_Record_Body): Rename Is_Return_By_Reference_Type to be
	Is_Inherently_Limited_Type, because return-by-reference has no meaning
	in Ada 2005.
	(Find_Node_To_Be_Wrapped): Use new method of determining the result
	type of the function containing a return statement, because the
	Return_Type field was removed. We now use the Return_Applies_To field.

	* exp_util.ads, exp_util.adb: Use new subtype N_Membership_Test
	(Build_Task_Image_Decl): If procedure is not called from an
	initialization procedure, indicate that function that builds task name
	uses the sec. stack. Otherwise the enclosing initialization procedure
	will carry the indication.
	(Insert_Actions): Remove N_Return_Object_Declaration. We now use
	N_Object_Declaration instead.
	(Kill_Dead_Code): New interface to implement -gnatwt warning for
	conditional dead code killed, and change implementation accordingly.
	(Insert_Actions): Add N_Return_Object_Declaration case.
	Correct comment to mention N_Extension_Aggregate node.
	(Set_Current_Value_Condition): Call Safe_To_Capture_Value to avoid bad
	attempts to save information for global variables which cannot be
	safely tracked.
	(Get_Current_Value_Condition): Handle conditions the other way round
	(constant on left). Also handle right operand of AND and AND THEN
	(Set_Current_Value_Condition): Corresponding changes
	(Append_Freeze_Action): Remove unnecessary initialization of Fnode.
	(Get_Current_Value_Condition): Handle simple boolean operands
	(Get_Current_Value_Condition): Handle left operand of AND or AND THEN
	(Get_Current_Value_Condition): If the variable reference is within an
	if-statement, does not appear in the list of then_statments, and does
	not come from source, treat it as being at unknown location.
	(Get_Current_Value_Condition): Enhance to allow while statements to be
	processed as well as if statements.
	(New_Class_Wide_Subtype): The entity for a class-wide subtype does not
	come from source.
	(OK_To_Do_Constant_Replacement): Allow constant replacement within body
	of loop. This is safe now that we fixed Kill_Current_Values.
	(OK_To_Do_Constant_Replacement): Check whether current scope is
	Standard, before examining outer scopes.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* krunch.ads, krunch.adb (Krunch): New Boolean parameter VMS_On_Target.
	When True, apply VMS treatment to children of packages A, G, I and S.
	For F320-016

	* fname-uf.adb (Get_File_Name): Call Krunch with OpenVMS_On_Target

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb: Add handling of Last_Assignment field
	(Warn_Overlay): Supply missing continuation marks in error msgs
	(Freeze_Entity): Add check for Preelaborable_Initialization

	* g-comlin.adb: Add Warnings (Off) to prevent new warning

	* g-expect.adb: Add Warnings (Off) to prevent new warning

	* lib-xref.adb: Add handling of Last_Assignment field
	(Generate_Reference): Centralize handling of pragma Obsolescent here
	(Generate_Reference): Accept an implicit reference generated for a
	default in an instance.
	(Generate_Reference): Accept a reference for a node that is not in the
	main unit, if it is the generic body corresponding to an subprogram
	instantiation.

	* xref_lib.adb: Add pragma Warnings (Off) to avoid new warnings

	* sem_warn.ads, sem_warn.adb (Set_Warning_Switch): Add processing for
	-gnatwq/Q.
	(Warn_On_Useless_Assignment): Suppress warning if enclosing inner
	exception handler.
	(Output_Obsolescent_Entity_Warnings): Rewrite to avoid any messages on
	use clauses, to avoid messages on packages used to qualify, and also
	to avoid messages from obsolescent units.
	(Warn_On_Useless_Assignments): Don't generate messages for imported
	and exported variables.
	(Warn_On_Useless_Assignments): New procedure
	(Output_Obsolescent_Entity_Warnings): New procedure
	(Check_Code_Statement): New procedure

	* einfo.ads, einfo.adb (Has_Static_Discriminants): New flag
	Change name Is_Ada_2005 to Is_Ada_2005_Only
	(Last_Assignment): New field for useless assignment warning

2006-10-31  Olivier Hainque  <hainque@adacore.com>

	* g-alleve.adb (lvx, stvx): Ceil-Round the Effective Address to the
	closest multiple of VECTOR_ALIGNMENT and not the closest multiple of 16.

2006-10-31  Bob Duff  <duff@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* g-awk.adb (Default_Session, Current_Session): Compile this file in
	Ada 95 mode, because it violates the new rules for AI-318.

	* g-awk.ads: Use overloaded subprograms in every case where we used to
	have a default of Current_Session. This makes the code closer to be
	correct for both Ada 95 and 2005.

	* g-moreex.adb (Occurrence): Turn off warnings for illegal-in-Ada-2005
	code, relying on the fact that the compiler generates a warning
	instead of an error in -gnatg mode.

	* lib-xref.ads (Xref_Entity_Letters): Add entry for new
	E_Return_Statement entity kind.
	Add an entry for E_Incomplete_Subtype in Xref_Entity_Letters.

	* par.adb (P_Interface_Type_Definition): Addition of one formal to
	report an error if the reserved word abstract has been previously found.
	(SS_End_Type): Add E_Return for new extended_return_statement syntax.

	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Improve message for
	parenthesized range attribute usage
	(P_Expression_No_Right_Paren): Add missing comment about error recovery.

	* par-ch6.adb (P_Return_Object_Declaration): AI-318: Allow "constant"
	in the syntax for extended_return_statement. This is not in the latest
	RM, but the ARG is expected to issue an AI allowing this.
	(P_Return_Subtype_Indication,P_Return_Subtype_Indication): Remove
	N_Return_Object_Declaration. We now use N_Object_Declaration instead.
	(P_Return_Object_Declaration, P_Return_Subtype_Indication,
	P_Return_Statement): Parse the new syntax for extended_return_statement.

	* par-endh.adb (Check_End, Output_End_Deleted, Output_End_Expected,
	Output_End_Missing): Add error-recovery code for the new
	extended_return_statement syntax; that is, the new E_Return entry on
	the scope stack.

	* s-auxdec-vms_64.ads, s-auxdec.ads (AST_Handler): Change type from
	limited to nonlimited, because otherwise we violate the new Ada 2005
	rules about returning limited types in function Create_AST_Handler in
	s-asthan.adb.

	* sem.adb (Analyze): Add cases for new node kinds
	N_Extended_Return_Statement and N_Return_Object_Declaration.

	* sem_aggr.adb (Aggregate_Constraint_Checks): Verify that component
	type is in the same category as type of context before applying check,
	to prevent anomalies in instantiations.
	(Resolve_Aggregate): Remove test for limited components in aggregates.
	It's unnecessary in Ada 95, because if it has limited components, then
	it must be limited. It's wrong in Ada 2005, because limited aggregates
	are now allowed.
	(Resolve_Record_Aggregate): Move check for limited types later, because
	OK_For_Limited_Init requires its argument to have been resolved.
	(Get_Value): When copying the component default expression for a
	defaulted association in an aggregate, use the sloc of the aggregate
	and not that of the original expression, to prevent spurious
	elaboration errors, when the expression includes function calls.
	(Check_Non_Limited_Type): Correct code for AI-287, extension aggregates
	were missing. We also didn't handle qualified expressions. Now also
	allow function calls. Use new common routine OK_For_Limited_Init.
	(Resolve_Extension_Aggregate): Minor fix to bad error message (started
	with space can upper case letter).

	* sem_ch3.ads, sem_ch3.adb (Create_Constrained_Components): Set
	Has_Static_Discriminants flag
	(Record_Type_Declaration): Diagnose an attempt to declare an interface
	type with discriminants.
	(Process_Range_Expr_In_Decl): Do validity checks on range
	(Build_Discriminant_Constraints): Use updated form of
	Denotes_Discriminant.
	(Process_Subtype): If the subtype is a private subtype whose full view
	is a concurrent subtype, introduce an itype reference to prevent scope
	anomalies in gigi.
	(Build_Derived_Record_Type, Collect_Interface_Primitives,
	Record_Type_Declaration):  The functionality of the subprograms
	Collect_Abstract_Interfaces and Collect_All_Abstract_Interfaces
	is now performed by a single routine.
	(Build_Derived_Record_Type): If the type definition includes an explicit
	indication of limitedness, then the type must be marked as limited here
	to ensure that any access discriminants will not be treated as having
	a local anonymous access type.
	(Check_Abstract_Overriding): Issue a detailed error message when an
	abstract subprogram was not overridden due to incorrect mode of its
	first parameter.
	(Analyze_Private_Extension_Declaration): Add support for the analysis of
	synchronized private extension declarations. Verify that the ancestor is
	a limited or synchronized interface or in the generic case, the ancestor
	is a tagged limited type or synchronized interface and all progenitors
	are either limited or synchronized interfaces.
	Derived_Type_Declaration): Check for presence of private extension when
	dealing with synchronized formal derived types.
	Process_Full_View): Enchance the check done on the usage of "limited" by
	testing whether the private view is synchronized.
	Verify that a synchronized private view is completed by a protected or
	task type.
	(OK_For_Limited_Init_In_05): New function.
	(Analyze_Object_Declaration): Move check for limited types later,
	because OK_For_Limited_Init requires its argument to have been resolved.
	Add -gnatd.l --Use Ada 95 semantics for limited function returns,
	in order to alleviate the upward compatibility introduced by AI-318.
	(Constrain_Corresponding_Record): If the constraint is for a component
	subtype, mark the itype as frozen, to avoid out-of-scope references to
	discriminants in the back-end.
	(Collect_Implemented_Interfaces): Protect the recursive algorithm of
	this subprogram against wrong sources.
	(Get_Discr_Value, Is_Discriminant): Handle properly references to a
	discriminant of limited type completed with a protected type, when the
	discriminant is used to constrain a private component of the type, and
	expansion is disabled.
	(Find_Type_Of_Object): Do not treat a return subtype that is an
	anonymous subtype as a local_anonymous_type, because its accessibility
	level is the return type of the enclosing function.
	(Check_Initialization): In -gnatg mode, turn the error "cannot
	initialize entities of limited type" into a warning.
	(OK_For_Limited_Init): Return true for generated nodes, since it
	sometimes violates the legality rules.
	(Make_Incomplete_Declaration): If the type for which an incomplete
	declaration is created happens to be the currently visible entity,
	preserve the homonym chain when removing it from visibility.
	(Check_Conventions): Add support for Ada 2005 (AI-430): Conventions of
	inherited subprograms.
	(Access_Definition): If this is an access to function that is the return
	type of an access_to_function definition, context is a type declaration
	and the scope of the anonymous type is the current one.
	(Analyze_Subtype_Declaration): Add the defining identifier of a regular
	incomplete subtype to the set of private dependents of the original
	incomplete type.
	(Constrain_Discriminated_Type): Emit an error message whenever an
	incomplete subtype is being constrained.
	(Process_Incomplete_Dependents): Transform an incomplete subtype into a
	corresponding subtype of the full view of the original incomplete type.
	(Check_Incomplete): Properly detect invalid usage of incomplete types
	and subtypes.

2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>

	* g-catiio.ads, g-catiio.adb (Value): New function.
	Given an input String, try and parse a valid Time value.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* g-debpoo.adb (Is_Valid): Correctly compute Offset using
	Integer_Address arithmetic, as in Set_Valid.

2006-10-31  Arnaud Charlet  <charlet@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* gnatcmd.adb (Process_Link): Use Osint.Executable_Name instead of
	handling executable extension manually and duplicating code.

	* make.adb: Implement new -S switch
	(Gnatmake): Use new function Osint.Executable_Name instead
	of handling executable extension manually.

	* prj-util.adb (Executable_Of): Make sure that if an Executable_Suffix
	is specified, the executable name ends with this suffix.
	Take advantage of Osint.Executable_Name instead of duplicating code.

	* switch-m.adb: Recognize new gnatmake -S switch

	* targparm.ads, targparm.adb (Executable_Extension_On_Target): New
	variable.
	(Get_Target_Parameters): Set Executable_Extension_On_Target if
	available.

	* makeusg.adb: Add line for gnatmake -S switch

2006-10-31  Vincent Celier  <celier@adacore.com>

	* gnatlink.adb (Gnatlink): If gcc is not called with -shared-libgcc,
	call it with -static-libgcc, as there are some platforms, such as
	Darwin, where one of these two switches is compulsory to link.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* gnatls.adb: Take into account GPR_PROJECT_PATH, when it is defined,
	instead of ADA_PROJECT_PATH, for the project path.
	(Gnatls): When displaying the project path directories, use host dir
	specs.

	* prj-ext.adb (Prj.Ext elaboration): On VMS, only expand relative path
	names in the project path, as absolute paths may correspond to
	multi-valued VMS logical names.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* g-os_lib.ads, g-os_lib.adb (Locate_Exec_On_Path): Always return an
	absolute path name.
	(Locate_Regular_File): Ditto
	(Change_Dir): Remove, no longer used
	(Normalize_Pathname): Do not use Change_Dir to get the drive letter
	on Windows. Get it calling Get_Current_Dir.
	(OpenVMS): Remove imported boolean, no longer needed.
	(Normalize_Pathname)[VMS]: Do not resolve directory names.
	(Pid_To_Integer): New function to convert a Process_Id to  Integer

2006-10-31  Thomas Quinot  <quinot@adacore.com>

	* g-socket.ads, g-socket.adb (Close_Selector): Once the signalling
	sockets are closed, reset the R_Sig_Socket and W_Sig_Socket components
	to No_Socket.
	(Selector_Type): Add default value of No_Socket for R_Sig_Socket and
	W_Sig_Socket.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* g-speche.ads, g-speche.adb: Add special case to recognize misspelling
	initial letter o as a zero.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* g-spipat.adb (S_To_PE): Remove incorrect use of 0 instead of Str'First

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* layout.adb (Layout_Record_Type): Deal with non-static subtypes of
	variant records
	(Layout_Variant_Record): Retrieve the discriminants from the entity
	rather than from the type definition, because in the case of a full
	type for a private type we need to take the discriminants from the
	partial view.
	(Layout_Component_List): When applying the Max operator to variants with
	a nonstatic size, check whether either operand is static and scale that
	operand from bits to storage units before applying Max.
	(Layout_Type): In VMS, if a C-convention access type has no explicit
	size clause (and does not inherit one in the case of a derived type),
	then the size is reset to 32 from 64.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* lib-load.adb (Load_Unit): Skip the test for a unit not found when
	its file has already been loaded, according to the unit being loaded,
	not to the current value of Multiple_Unit_Index.

2006-10-31  Thomas Quinot  <quinot@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* Makefile.in: Set EH mechanism to ZCX for FreeBSD.
	(NO_REORDER_ADAFLAGS): New var defined to -fno-toplevel-reorder if
	possible.
	(a-except.o): Pass it to the compiler.
	(gnatlib-shared-vms): Removed -nostartfiles switch in link step.
	(LIBGNAT_TARGET_PAIRS for Windows): Avoid the use of the specific
	a-calend-mingw.adb version.

	* Makefile.rtl: Added s-dsaser.
	Add object entries for Ada.Calendar.[Arithmetic/Formatting/Time_Zones]
	(GNATRTL_TASKING_OBJS): Add Ada.Dispatching and
	Ada.Dispatching.Round_Robin.
	Added new unit Ada.Containers.Restricted_Bounded_Doubly_Linked_Lists

	* Make-lang.in: Remove all references to gt-ada-decl.h.
	Add concatenation (s-strops/s-sopco3/s-sopco4/s-sopco5) to compiler
	sources.
	Add dependency on ada/s-restri.o for GNAT1 and GNATBIND objects.
	Update dependencies.

	* system-freebsd-x86.ads: Make ZCX the default EH mechanism for FreeBSD

2006-10-31  Vincent Celier  <celier@adacore.com>

	* mlib-utl.adb (Initialized): Remove, no longer used
	(Initialize): Remove, no longer used
	(Ar): If Ar_Exec is null, get the location of the archive builder and,
	if there is one, the archive indexer. Fail if the archive builder cannot
	be found.
	(Gcc): If the driver path is unknown, get it. Fail if the driver cannot
	be found.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.ads, sem_ch10.adb (Check_Redundant_Withs,
	Process_Body_Clauses): If the context of a body includes a use clause
	for P.Q then a with_clause for P in the same body is not redundant,
	even if the spec also has a with_clause on P.
	Add missing continuation mark to error msg
	(Build_Limited_Views): A limited view of a type is tagged if its
	declaration includes a record extension.
	(Analyze_Proper_Body): Set Corresponding_Stub field in N_Subunit
	node, even if the subunit has errors. This avoids malfunction by
	Lib.Check_Same_Extended_Unit in the presence of syntax errors.
	(Analyze_Compilation_Unit): Add circuit to make sure we get proper
	generation of obsolescent messages for with statements (cannot do
	this too early, or we cannot implement avoiding the messages in the
	case of obsolescent units withing obsolescent units).
	(Install_Siblings): If the with_clause is on a remote descendant of
	an ancestor of the current compilation unit, find whether there is
	a sibling child unit that is immediately visible.
	(Remove_Private_With_Clauses): New procedure, invoked after completing
	the analysis of the private part of a nested package, to remove from
	visibility the private with_clauses of the enclosing package
	declaration.
	(Analyze_With_Clause): Remove Check_Obsolescent call, this checking is
	now centralized in Generate_Reference.
	(Install_Limited_Context_Clauses): Remove superfluous error
	message associated with unlimited view visible through use
	and renamings. In addition, at the point in which the error
	is reported, we add the backslash to the text of the error
	to ensure that it is reported as a single error message.
	Use new // insertion for some continuation messages
	(Expand_Limited_With_Clause): Use copy of name rather than name itself,
	to create implicit with_clause for parent unit mentioned in original
	limited_with_clause.
	(Install_Limited_With_Unit): Set entity of parent identifiers if the
	unit is a child unit. For ASIS queries.
	(Analyze_Subunit): If the subunit appears within a child unit, make all
	ancestor child units directly visible again.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* par-ch10.adb (P_Context_Clause): Minor error message fix

2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* par-ch12.adb: Grammar update and cleanup.
	(P_Formal_Type_Definition, P_Formal_Derived_Type_Definition): Add
	support for synchronized derived type definitions.
	Add the new actual Abstract_Present to every call to
	P_Interface_Type_Definition.
	(P_Formal_Object_Declarations): Update grammar rules. Handle parsing of
	a formal object declaration with an access definition or a subtype mark
	with a null exclusion.
	(P_Generic_Association): Handle association with box, and others_choice
	with box, to support Ada 2005 partially parametrized formal packages.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* par-ch3.adb (P_Range_Or_Subtype_Mark): Check for bad parentheses
	(P_Type_Declaration): Remove barrier against the reserved word "limited"
	after "abstract" to give support to the new syntax of AARM 3.4 (2/2).
	(P_Type_Declaration): Minor code cleanup. Add support for synchronized
	private extensions.
	(P_Type_Declaration): Add the new actual Abstract_Present to every call
	to P_Interface_Type_Definition.
	(P_Interface_Type_Definition): Addition of one formal to report an error
	if the reserved word abstract has been previously found.
	(P_Identifier_Declarations): Update grammar rules. Handle parsing of an
	object renaming declaration with an access definition or subtype mark
	with a possible null exclusion.

	* par-ch9.adb: Minor error msg fix

	* par-load.adb: Add missing continuation mark to error msg

	* par-tchk.adb: (Wrong_Token): Code cleanup, use concatenation

2006-10-31  Vincent Celier  <celier@adacore.com>

	* prj-dect.adb (Parse_Attribute_Declaration): Do not issue warning for
	unknown attribute in unknown package or in package that does not need
	to be checked.
	(Parse_Package_Declaration): Do not issue warning for unknown package in
	quiet output.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* prj-makr.adb (Packages_To_Check_By_Gnatname): New global constant
	(Make): Call Parse with Packages_To_Check_By_Gnatname for parameter
	Packages_To_Check.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_Ada_Name): For children of package A, G, I and S
	on VMS, change "__" to '.' before checking the name.
	(Record_Ada_Source): Always add the source file name in the list of
	of sources, even if it is not the first time, as it is for another
	source index.
	(Get_Unit): Replace both '_' (after 'a', 'g', 'i' or 's') with a single
	dot, instead of replacing only the first '_'.

	* prj-part.adb (Parse): Convert project file path to canonical form

	* prj-proc.adb (Recursive_Process): Make sure that, when a project is
	extended, the project id of the project extending it is recorded in its
	data, even when it has already been processed as an imported project.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* repinfo.adb (List_Entities): Don't list entities from renaming
	declarations.

2006-10-31  Arnaud Charlet  <charlet@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* restrict.ads, restrict.adb (Restriction_Active): Now returns False if
	only a restriction warning is active for the given restriction. This is
	desirable because we do not want to modify code in the case where only
	a warning is set.
	(Set_Profile_Restrictions): Make sure that a Profile_Warnings never
	causes overriding of real restrictions.
	Take advantage of new No_Restrictions constant.

	* raise.h: (__gnat_set_globals): Change profile.

2006-10-31  Arnaud Charlet  <charlet@adacore.com>

	* rtsfind.adb: Remove s-polint from comment as it exists no more.

	* rtsfind.ads:
	Move entity RE_Get_Active_Partition_Id to package System.DSA_Services.
	Move all the entities in obsolete package System.PolyORB_Interface to
	System.Partition_Interface.
	(RE_Storage_Size): New function in System.Tasking.
	(RE_Get_Ceiling): New entity.
	(RE_Set_Ceiling): New entity.
	(RO_PE_Get_Ceiling): New entity.
	(RO_RE_Set_Ceiling): New entity.
	(Inherit_CPP_DT): New entity

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* scng.adb (Scan, case of numeric literal): Better msg for identifier
	starting with a digit.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* sem_attr.ads, sem_attr.adb (Analyze_Access_Attribute): Diagnose
	properly an attempt to apply Unchecked_Access to a protected operation.
	(OK_Self_Reference): New subprogram to check the legality of an access
	attribute whose prefix is the type of an enclosing aggregate.
	Generalizes previous mechanism to handle attribute references nested
	arbitrarily deep within the aggregate.
	(Analyze_Access_Attribute): An access attribute whose prefix is a type
	can appear in an aggregate if this is a default-initialized aggregate
	for a self-referential type.
	(Resolve_Attribute, case Access): Ditto.
	Add support for new implementation defined attribute Stub_Type.
	(Eval_Attribute, case Attribute_Stub_Type): New case.
	(Analyze_Attribute, case Attribute_Stub_Type): New case.
	(Stream_Attribute_Available): Implement using new subprogram from
	sem_cat, Has_Stream_Attribute_Definition, instead of incorrect
	Has_Specified_Stream_Attribute flag.
	Disallow Storage_Size and Storage_Pool for access to subprogram
	(Resolve_Attribute, case 'Access et al): Take into account anonymous
	access types of return subtypes in extended return statements. Remove
	accessibility checks on anonymous access types when Unchecked_Access is
	used.
	(Analyze_Attribute): Add support for the use of 'Class to convert
	a class-wide interface to a tagged type.
	Add support for the attribute Priority.
	(Resolve_Attribute, case Attribute_Access): For Ada_05, add test for
	whether the designated type is discriminated with a constrained partial
	view and require static matching in that case.
	Add local variable Des_Btyp. The Designated_Type
	of an access to incomplete subtype is either its non-limited view if
	coming from a limited with or its etype if regular incomplete subtype.

	* sem_cat.ads, sem_cat.adb (Validate_Remote_Access_To_Class_Wide_Type):
	Fix predicate to identify and allow cases of (expander-generated)
	references to tag of designated object of a RACW.
	(Validate_Static_Object_Name): In Ada 2005, a formal object is
	non-static, and therefore cannot appear as a primary in a preelaborable
	package.
	(Has_Stream_Attribute_Definition): New subprogram, abstracted from
	Has_Read_Write_Attributes.
	(Has_Read_Write_Attributes): Reimplement in termes of
	Has_Stream_Attribute_Definition.
	(Missing_Read_Write_Attributes): When checking component types in a
	record, unconditionally call Missing_Read_Write_Attributes recursively
	(remove guard checking for Is_Record_Type / Is_Access_Type).

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* sem_ch11.adb (Analyze_Handled_Statements): Move final test for
	useless assignments here and conditionalize it on absence of exception
	handlers.
	(Analyze_Exception_Handlers): Small code reorganization of error
	detection code, for new handling of formal packages.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch12.ads, sem_ch12.adb (Save_References): If node is an operator
	that has been constant-folded, preserve information of original tree,
	for ASIS uses.
	(Analyze_Formal_Derived_Type): Set the limited present flag of the newly
	generated private extension declaration if the formal derived type is
	synchronized. Carry synchronized present over to the generated private
	extension.
	(Validate_Derived_Type_Instance): Ensure that the actual of a
	synchronized formal derived type is a synchronized tagged type.
	(Instantiate_Formal_Package): When creating the instantiation used to
	validate the actual package of a formal declared without a box, check
	whether the formal itself depends on a prior actual.
	(Instantiate_Formal_Subprogram): Create new entities for the defining
	identifiers of the formals in the renaming declaration, for ASIS use.
	(Instantiate_Formal_Subprogram, Instantiate_Formal_Type): When creating
	a renaming declaration or a subtype declaration for an actual in an
	instance, capture location information of declaration in generic, for
	ASIS use.
	(Instantiate_Formal_Package): Add comments on needed additional tests.
	AI-317 (partial parametrization) is fully implemented.
	(Validate_Private_Type_Instance): Add check for actual which
	must have preelaborable initialization
	Use new // insertion for some continuation messages
	(Analyze_Formal_Object_Declaration): Change usage of Expression to
	Default_Expression. Add type retrieval when the declaration has an
	access definition. Update premature usage of incomplete type check.
	(Check_Access_Definition): New subsidiary routine. Check whether the
	current compilation version is Ada 05 and the supplied node has an
	access definition.
	(Instantiate object): Alphabetize local variables. Handle the creation
	of new renaming declarations with respect to the kind of definition
	used - either an access definition or a subtype mark. Guard against
	unnecessary error message in the context of anonymous access types after
	they have been resolved. Add check for required null exclusion in a
	formal object declaration.
	(Switch_View): A private subtype of a non-private type needs to be
	switched (the base type can have been switched without its private
	dependents because of the last branch of Check_Private_View.
	(Check_Private_View): Do not recompute Base_Type (T), instead use cached
	value from BT.
	(Instantiate_Type): Emit an error message whenever a class-wide type of
	a tagged incomplete type is used as a generic actual.
	(Find_Actual_Type): Extend routine to handle a component type in a child
	unit that is imported from a formal package in a parent.
	(Validate_Derived_Type_Instance): Check that analyzed formal and actual
	agree on constrainedness, rather than checking against ultimate ancestor
	(Instantiate_Subprogram_Body): Create a cross-reference link to the
	generic body, for navigation purposes.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* sem_ch13.adb: Storage pool cannot be given for access to subprogram
	type.
	(New_Stream_Subprogram): When processing an attribute definition clause
	for a stream-oriented subprogram, record an entity node occurring at
	the point of clause to use for checking the visibility of the clause,
	as defined by 8.3(23) as amended by AI-195.
	(New_Stream_Subprogram): New procedure, factoring behaviour from both
	 New_Stream_Function and New_Stream_Procedure.
	(New_Stream_Function, New_Stream_Procedure): Removed.
	(Analyze_Attribute_Definition_Clause, case Address): Check new
	Alignment_Check check

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sem_ch4.adb (Try_Primitive_Operation): Code cleanup to ensure that we
	generate the same errors compiling under -gnatc.
	(Try_Object_Operation): If no candidate interpretation succeeds, but
	there is at least one primitive operation with the right name, report
	error in call rather than on a malformed selected component.
	(Analyze_Selected_Component): If the prefix is an incomplete type from
	a limited view, and the full view is available, use the full view to
	determine whether this is a prefixed call to a primitive operation.
	(Operator_Check): Verify that a candidate interpretation is a binary
	operation before checking the type of its second formal.
	(Analyze_Call): Add additional warnings for function call contexts not
	yet supported.
	(Analyze_Allocator): Move the check for "initialization not allowed for
	limited types" after analyzing the expression. This is necessary,
	because OK_For_Limited_Init looks at the structure of the expression.
	Before analysis, we don't necessarily know what sort of expression it
	is. For example, we don't know whether F(X) is a function call or an
	indexed component; the former is legal in Ada 2005; the latter is not.
	(Analyze_Allocator): Correct code for AI-287 -- extension aggregates
	were missing. We also didn't handle qualified expressions. Now also
	allow function calls. Use new common routine OK_For_Limited_Init.
	(Analyze_Type_Conversion): Do not perform some legality checks in an
	instance, because the error message will be redundant or spurious.
	(Analyze_Overloaded_Selected_Component): Do not do style check when
	setting an entity, since we do not know it is the right entity yet.
	(Analyze_Selected_Component): Move Generate_Reference call to Sem_Res
	(Analyze_Overloaded_Selected_Component): Same change
	(Analyze_Selected_Component): Remove unnecessary prefix type retrieval
	since regular incomplete subtypes are transformed into corresponding
	subtypes of their full views.
	(Complete_Object_Operation): Treat name of transformed subprogram call
	as coming from source, for browsing purposes.
	(Try_Primitive_Operation): If formal is an access parameter, compare
	with base type of object to determine whether it is a primitive
	operation.
	(Operator_Check): If no interpretation of the operator matches, check
	whether a use clause on any candidate might make the operation legal.
	(Try_Class_Wide_Operation): Check whether the first parameter is an
	access type whose designated type is class-wide.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* sem_ch5.ads, sem_ch5.adb (Analyze_Loop_Statement): Add circuit to
	warn on infinite loops.
	Add \\ to some continuation messages
	(Analyze_Assignment_Statement): Call Warn_On_Useless_Assignment
	(Process_Bounds): If the bounds are integer literals that result from
	constant-folding, and they carry a user-defined type, preserve that type
	rather than treating this as an integer range.
	(Analyze_Exit_Statement): Test for E_Return_Statement in legality check.
	(Analyze_Goto_Statement): Test for E_Return_Stateemnt in legality check.
	(Analyze_Assignment_Statement): Add call to Check_Elab_Assign for
	left hand side of assignment.
	(Analyze_Assignment): Add suport to manage assigments to the attribute
	priority of a protected object.
	(Check_Possible_Current_Value_Condition): Allow fully qualified names
	not just identifiers.
	(Check_Possible_Current_Value_Condition): Acquire left operand of AND
	or AND THEN for possible tracking.
	(Analyze_Iteration_Scheme): Check for setting Current_Value for the
	case of while loops so we can track values in the loop body.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Bob Duff  <duff@adacore.com>

	* sem_ch6.ads, sem_ch6.adb (Analyze_Subprogram_Declaration): A null
	procedure cannot be a protected operation (it is a basic_declaration,
	not a subprogram_declaration).
	(Check_Overriding_Indicator): Rename formal Does_Override to Overridden_
	Subp. Add logic for entry processing.
	(Check_Synchronized_Overriding): New procedure in New_Overloaded_Entity.
	Determine whether an entry or subprogram of a protected or task type
	override an inherited primitive of an implemented interface.
	(New_Overloaded_Entity): Add calls to Check_Synchronized_Overriding.
	Update the actual used in calls to Check_Overriding_Indicator.
	(Analyze_Generic_Subprogram_Body): If the subprogram is a child unit,
	generate the proper reference to the parent unit, for cross-reference.
	(Analyze_Subprogram_Declaration): Protect Is_Controlling_Formal with
	Is_Formal.
	Add -gnatd.l --Use Ada 95 semantics for limited function returns,
	(Add_Extra_Formal): Revise procedure to allow passing in associated
	entity, scope, and name suffix, and handle setting of the new
	Extra_Formals field.
	(Create_Extra_Formals): Change existing calls to Add_Extra_Formal to
	pass new parameters. Add support for adding the new extra access formal
	for functions whose calls are treated as build-in-place.
	(Analyze_A_Return_Statement): Correct casing in error message.
	Move Pop_Scope to after Analyze_Function_Return, because an extended
	return statement really is a full-fledged scope. Otherwise, visibility
	doesn't work right. Correct use of "\" for continuation messages.
	(Analyze_Function_Return): Call Analyze on the Obj_Decl, rather than
	evilly trying to call Analyze_Object_Declaration directly. Otherwise,
	the node doesn't get properly marked as analyzed.
	(Analyze_Subprogram_Body): If subprogram is a function that returns
	an anonymous access type that denotes a task, build a Master Entity
	for it.
	(Analyze_Return_Type): Add call to Null_Exclusion_Static_Checks. Verify
	proper usage of null exclusion in a result definition.
	(Process_Formals): Code cleanup and new error message.
	(Process_Formals): Detect incorrect application of null exclusion to
	non-access types.
	(Conforming_Types): Handle conformance between [sub]types and itypes
	 generated for entities that have null exclusions applied to them.
	(Maybe_Primitive_Operation): Add an additional type retrieval when the
	 base type is an access subtype. This case arrises with null exclusions.
	(New_Overloaded_Entity): Do not remove the overriden entity from the
	homonym chain if it corresponds with an abstract interface primitive.
	(Process_Formals): Replace membership test agains Incomplete_Kind with a
	call to the synthesized predicate Is_Incomplete_Type.
	(Analyze_Subprogram_Body): Check wrong placement of abstract interface
	primitives.
	(Analyze_Subprogram_Declaration): Check that abstract interface
	primitives are abstract or null.
	(Analyze_Subprogram_Specification): Remove previous check for abstract
	interfaces because it was not complete.
	(Has_Interface_Formals): Removed.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch7.adb (Check_Anonymous_Access_Types): New procedure, subsidiary
	of Analyze_Package_Body, to create Itype references for anonymous
	access types created in the package declaration, whose designated types
	may have only a limited view.
	(Analyze_Package_Specification): For the private part of a nested
	package, install private_with_clauses of enclosing compilation unit if
	we are in its visible part.
	(Declare_Inherited_Private_Subprograms): Complete barrier
	to ensure that the primitive operation has an alias to some parent
	primitive. This is now required because, after the changes done for the
	implementation of abstract interfaces, the contents of the list of
	primitives has entities whose alias attribute references entities of
	such list of primitives.
	(Analyze_Package_Specification): Simplify code that handles parent units
	of instances and formal packages.
	(Uninstall_Declarations): Check the convention consistency among
	primitive overriding operations of a tagged record type.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb: Minor error msg rewording
	(Undefined): When checking for misspellings, invert arguments (to get
	expected and found set right)
	(Analyze_Subprogram_Renaming): Propagate Is_Pure, Is_Preelaborated
	(Analyze_Generic_Renaming): Same fix
	(Use_One_Package): Do not take into account the internal entities of
	abstract interfaces during the analysis of entities that are marked
	as potentially use-visible.
	(Find_Type): Handle the case of an attribute reference for
	implementation defined attribute Stub_Type (simply let the analysis of
	the attribute reference rewrite it).
	(Use_One_Type, End_Use_Type): Reject a reference to a limited view of a
	type that appears in a Use_Type clause.
	(Analyze_Object_Renaming): Add support for renaming of the Priority
	attribute.
	(Find_Type): In Ada 2005, a task type can be used within its own body,
	when it appears in an access definition.
	(Analyze_Object_Renaming): Remove warning on null_exclusion.
	(Analyze_Object_Renaming): Introduce checks for required null exclusion
	 in a formal object declaration or in a subtype declaration.
	(Analyze_Subprogram_Renaming): Add call to Check_Null_Exclusion.
	(Check_Null_Exclusion): New local routine to
	Analyze_Subprogram_Renaming. Check whether the formals and return
	profile of a renamed subprogram have required null exclusions when
	their counterparts of the renaming already impose them.
	(In_Generic_Scope): New local routine to Analyze_Object_Renaming.
	Determine whether an entity is inside a generic scope.
	(In_Open_Scope): First pass of documentation update.
	(Find_Expanded_Name): Add support for shadow entities associated with
	limited withed packages. This is required to handle nested packages.
	(Analyze_Package_Renaming): Remove the restriction imposed by AI-217
	that makes a renaming of a limited withed package illegal.

2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch9.adb (Analyze_Protected_Definition): Remove call to
	Check_Overriding_Indicator.
	(Analyze_Task_Definition): Ditto.
	(Analyze_Protected_Type, Analyze_Task_Type): Code cleanup.
	(Check_Overriding_Indicator): To find overridden interface operation,
	examine only homonyms that have an explicit subprogram declaration, not
	inherited operations created by an unrelated type derivation.
	(Check_Overriding_Indicator): When checking for the presence of "null"
	in a procedure, ensure that the queried node is a procedure
	specification.
	(Matches_Prefixed_View_Profile): Add mechanism to retrieve the parameter
	type when the formal is an access to variable.
	(Analyze_Protected_Type): Add check for Preelaborable_Initialization
	(Analyze_Task_Type): Same addition
	(Analyze_Entry_Declaration): Call Generate_Reference_To_Formals, to
	provide navigation capabilities for entries.

2006-10-31  Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* sem_disp.adb (Check_Dispatching_Operation): Do not flag subprograms
	inherited from an interface ancestor by another interface in the
	context of an instance as 'late'.
	(Is_Tag_Indeterminate, Propagate_Tag): Handle properly the dereference
	of a call to a function that dispatches on access result.
	(Check_Dispatching_Operation): In case of late overriding of a primitive
	that covers abstract interface subprograms we register it in all the
	secondary dispatch tables associated with abstract interfaces.
	(Check_Dispatching_Call): Add check that a dispatching call is not made
	to a function with a controlling result of a limited type. This is a
	current implementation restriction.
	(Check_Controlling_Formal): Remove bogus checks for E.2.2(14).
	(Check_Dispatching_Operation): Do no emit a warning if the controlling
	argument is an interface type that is a generic formal.
	(Is_Interface_Subprogram): Removed.
	(Check_Dispatching_Operation): If the subprogram is not a dispatching
	operation, check the formals to handle the case in which it is
	associated with an abstract interface type.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_elab.ads, sem_elab.adb (Check_Elab_Assign): New procedure
	Add new calls to this procedure during traversal
	(Activate_Elaborate_All_Desirable): Do not set elaboration flag on
	another unit if expansion is disabled.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Make use of information from
	Current_Value in the conditional case, to evaluate additional
	comparisons at compile time.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_type.adb (Add_One_Interp): If node is an indirect call, preserve
	subprogram type to provide better diagnostics in case of ambiguity.
	(Covers): Handle coverage of formal and actual anonymous access types in
	the context of generic instantiation.
	(Covers/Interface_Present_In_Ancestors): Use the base type to manage
	abstract interface types; this is required to handle concurrent types
	with discriminants and abstract interface types.
	(Covers): Include type coverage of both regular incomplete subtypes and
	incomplete subtypes of incomplete type visibles through a limited with
	clause.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_util.ads, sem_util.adb (Enter_Name): Exclude -gnatwh warning
	messages for entities in packages which are not used.
	(Collect_Synchronized_Interfaces): New procedure.
	(Overrides_Synchronized_Primitive): New function.
	(Denotes_Discriminant): Extend predicate to apply to task types.
	Add missing continuation marks in error msgs
	(Unqualify): New function for removing zero or more levels of
	qualification from an expression. There are numerous places where this
	ought to be used, but we currently only deal properly with zero or one
	level.
	(In_Instance); The analysis of the actuals in the instantiation of a
	child unit is not within an instantiation, even though the parent
	instance is on the scope stack.
	(Safe_To_Capture_Value): Exclude the case of variables that are
	renamings.
	(Check_Obsolescent): Removed
	(Is_Aliased_View): A reference to an enclosing instance in an aggregate
	is an aliased view, even when rewritten as a reference to the target
	object in an assignment.
	(Get_Subprogram_Entity): New function
	(Known_To_Be_Assigned): New function
	(Type_Access_Level): Compute properly the access level of a return
	subtype that is an anonymous access type.
	(Explain_Limited_Type): Correct use of "\" for continuation messages.
	(Is_Transfer): The new extended_return_statement causes a transfer of
	control.
	(Has_Preelaborable_Initialization): New function
	(Has_Null_Exclusion): New function. Given a node N, determine whether it
	has a null exclusion depending on its Nkind.
	Change Is_Lvalue to May_Be_Lvalue
	(May_Be_Lvalue): Extensive additional code to deal with subprogram
	arguments (IN parameters are not Lvalues, IN OUT parameters are).
	(Safe_To_Capture_Value): Extend functionality so it can be used for
	the current value condition case.
	(Has_Compatible_Alignment): New function
	(Is_Dependent_Component_Of_Mutable_Object): Revise the tests for mutable
	objects to handle the Ada 2005 case, where aliasedness no longer implies
	that the object is constrained. In particular, for dereferenced names,
	the designated object must be assumed to be unconstrained.
	(Kill_Current_Values): Properly deal with the case where we encounter
	a loop in the scope chain.
	(Safe_To_Capture_Value): Do not let a loop stop us from capturing
	a value.
	(Compile_Time_Constraint_Error): Improve error message in error case

	* exp_ch13.adb (Expand_N_Freeze_Entity): Remove the freezing node
	associated with entities of abstract interface primitives.
	Call Apply_Address_Clause_Check instead of Apply_Alignment_Check

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* s-osinte-tru64.adb:
	Mark Asm statements Volatile to prevent warnings (seems a
	reasonable change anyway)
	Fixes new warnings

	* s-mastop-irix.adb: Add Volatile to Asm statements
	Suppresses warning, and seems appropriate in any case

	* s-osinte-vms.adb: Add Volatile to Asm statement

	* s-vaflop-vms-alpha.adb: Add Volatile to Asm statements

	* exp_code.ads, exp_code.adb (Asm_Input_Value): Note that Error can be
	returned.
	Add call to Check_Code_Statement

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Bob Duff  <duff@adacore.com>

	* sinfo.ads, sinfo.adb (Set_Synchronized_Present,
	Synchronized_Present): Add Formal_Derived_Type_Definition and
	Private_Extension_Declaration to the list of assertions.
	(Is_Entry_Barrier_Function): New flag
	(Has_Self_Reference): New flag on aggregates, to indicate that they
	contain a reference to the enclosing type, inserted through a default
	initialization.
	(Next_Rep_Item): Move from Node4 to Node5.
	(Entity): Add this field for N_Attribute_Definition_Clause.
	(Comes_From_Extended_Return_Statement): New flag on N_Return_Statement
	(N_Return_Object_Declaration): Remove this node kind. We now use
	N_Object_Declaration instead.
	(Actual_Designated_Subtype): Move to a different place to make room in
	N_Extended_Return_Statement.
	(Procedure_To_Call): Move to a different place to make room in
	N_Extended_Return_Statement.
	(Return_Type): Removed this field to make room in return statements
	(both kinds).
	(Return_Statement_Entity): New field in return statements, in part to
	replace Return_Type, and in part to support the fact that return
	statements are now pushed on the scope stack during semantic analysis.
	(Return_Object_Declarations): New field to support extended return
	statements.
	(N_Extended_Return_Statement): New node for extended_return_statement
	nonterminal.
	(N_Return_Object_Declaration): New node for part of
	extended_return_statement nonterminal. Needed because all the necessary
	fields won't fit in N_Extended_Return_Statement.
	Generic_associations now carry the Box_Present flag, to indicate a
	default for an actual in a partially parametrized formal package.

	* snames.h, snames.ads, snames.adb: Add definition for Validity_Check
	(Preset_Names): Add entries for Priority_Specific_Dispatching pragma
	and for the new predefined dispatching policies: EDF_Across_Priorities,
	Non_Preemptive_Within_Priorities, and Round_Robin_Within_Priorities.
	Introduce new name Stub_Type for implementation defined attribute.
	Add pragma Preelaborable_Initialization
	Add entry for Priority attribute.
	Add Pragma_Wide_Character_Encoding
	(Get_Convention_Name): Given a convention id, this function returns the
	corresponding name id from the names table.

2006-10-31  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Bob Duff  <duff@adacore.com>

	* sprint.adb (Sprint_Node_Actual, case Parameter_Specification): Do not
	print null exclusion twice in the case of an access definition,
	Implement new -gnatL switch
	Remove N_Return_Object_Declaration. We now use
	N_Object_Declaration instead. Implement the case for
	N_Extended_Return_Statement. Alphabetize the cases.
	Add cases for new nodes N_Extended_Return_Statement and
	N_Return_Object_Declaration. The code is not yet written.
	Update the output for N_Formal_Object_Declaration
	and N_Object_Renaming_Declaration.
	(Write_Itype): Account for the case of a modular integer subtype whose
	base type is private.

2006-10-31  Arnaud Charlet  <charlet@adacore.com>

	* s-restri.ads, s-restri.adb: Mark this package as Preelaborate.
	Remove elaboration code, now done in the binder.

	* s-rident.ads: Make this unit Preelaborate.
	(No_Restrictions): New constant used to clean up code and follow
	preelaborate constraints.

	* s-stalib.adb:
	Add System.Restrictions dependence, referenced directly from the
	binder generated file.

2006-10-31  Gary Dismukes  <dismukes@adacore.com>

	* s-scaval.adb (Initialize): Add new Boolean flag AFloat that is set
	True when AAMP extended floating-point is in use (48-bit). Change type
	ByteLF to ByteLLF, add new array type ByteLF and condition the size of
	the two byte array types on AFloat. Change type of IV_Ilf overlay
	variable from Byte8 to ByteLF. Add appropriate initializations of
	floating-point overlays for AAMP cases.

2006-10-31  Javier Miranda  <miranda@adacore.com>

	* s-tpoben.ads, s-tpoben.adb, s-taprob.ads, s-taprob.adb
	(Get_Ceiling): New subprogram that returns
	the ceiling priority of the protected object.
	(Set_Ceiling): New subprogram that sets the new ceiling priority of
	the protected object.

	* s-tarest.adb: (Create_Restricted_Task): Fix potential CE.

	* s-taskin.ads, s-taskin.adb: (Storage_Size): New function.

2006-10-31  Jose Ruiz  <ruiz@adacore.com>

	* s-tpobop.adb (Requeue_Call): Introduce a dispatching point when
	requeuing to the same protected object to give higher priority tasks
	the opportunity to execute.

2006-10-31  Robert Dewar  <dewar@adacore.com>

	* widechar.adb (Is_Start_Of_Wide_Char): In case of brackets encoding,
	add more precise check for the character sequence that follows '[' to
	avoid possible confusion in case if '[' is the last character of a
	string literals.
	(Scan_Wide): Always allow brackets encoding

2006-10-31  Olivier Hainque  <hainque@adacore.com>

	* s-stchop.ads: make this unit preelaborate. This is desirable in
	general and made mandatory by the use of this unit by s-taprop which
	is itself preelaborate.

	* s-stchop-vxworks.adb (Set_Stack_Info, Task_Descriptor type): Add
	Td_Events component.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* a-dirval-vms.adb (Invalid_Character): Specify that digits are allowed
	in file names.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* a-direct.ads, a-direct.adb (Search): New procedure in Ada 2005

2006-10-31  Vincent Celier  <celier@adacore.com>

	* makegpr.adb (Check_Compilation_Needed): Take into account path names
	with spaces.
	(Check_Compilation_Needed): When checking a C or C++ source, do not
	resolve symbolic links.
	(Display_Command): New Boolean parameter Ellipse, defaulted to False.
	When not in verbose mode and Ellipse is True, display "..." for the
	first argument with Display set to False.
	(Build_Global_Archive): Always set Display True for the first object
	file. Call Display_Command with Ellipse set to True.

2006-10-31  Matt Heaney  <heaney@adacore.com>

	* a-crbtgo.ads: Commented each subprogram

	* a-crbtgo.adb: Added reference to book from which algorithms were
	adapted.

	* a-crbtgk.ads, a-crbtgk.adb (Generic_Insert_Post): pass flag to
	indicate which child.
	(Generic_Conditional_Insert): changed parameter name from "Success" to
	"Inserted".
	(Generic_Unconditional_Insert_With_Hint): improved algorithm

	* a-coorse.adb (Replace_Element): changed parameter name in call to
	conditional insert operation.

	* a-convec.adb, a-coinve.adb (Insert): removed obsolete comment

	* a-cohama.adb (Iterate): manipulate busy-bit here, instead of in
	Generic_Iteration

	* a-ciorse.adb (Replace_Element): changed parameter name in call to
	conditional insert operation.

	* a-cihama.adb (Iterate): manipulate busy-bit here, instead of in
	Generic_Iteration.

	* a-cidlli.ads, a-cidlli.adb (Splice): Position param is now mode in
	instead of mode inout.

	* a-chtgop.adb (Adjust): modified comments to reflect current AI-302
	draft
	(Generic_Read): preserve existing buckets array if possible
	(Generic_Write): don't send buckets array length anymore

	* a-cdlili.ads, a-cdlili.adb (Splice): Position param is now mode in
	instead of mode inout.

	* a-cihase.adb (Difference): iterate over smaller of Tgt and Src sets
	(Iterate): manipulate busy-bit here, instead of in Generic_Iteration

	* a-cohase.adb (Difference): iterate over smaller of Tgt and Src sets
	(Iterate): manipulate busy-bit here, instead of in Generic_Iteration
	(Replace_Element): local operation is now an instantiation

	* a-chtgke.ads, a-chtgke.adb (Generic_Conditional_Insert): manually
	check current length.
	(Generic_Replace_Element): new operation

2006-10-31  Doug Rupp  <rupp@adacore.com>

	* g-trasym-vms-alpha.adb: Dummy_User_Act_Proc: New function.
	Call TBK$SYMBOLIZE without omitting parameters.

2006-10-31  Vincent Celier  <celier@adacore.com>

	* symbols-processing-vms-ia64.adb,
	symbols-processing-vms-alpha.adb (Process): Do not include symbols
	that come from generic instantiations in bodies.

2006-10-31  Pat Rogers  <rogers@adacore.com>

	* a-rttiev.ads, a-rttiev.adb:
	This is a significant redesign primarily for the sake of automatic
	timer task termination but also to fix a design flaw.
	Therefore we are now using an RTS lock, instead of a protected
	object, to provide mutual exclusion to the queue of pending events
	and the type Timing_Event is no longer a protected type.

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Cyrille Comar  <comar@adacore.com>
	    Ben Brosgol  <brosgol@adacore.com>

	* debug.adb:  Update flags documentation

	* gnat_ugn.texi: Add documentation for new -gnatwq switch
	Clean up documentation for several other warning switches
	Clarify how task stack size can be specified with various
	versions of Windows.
	Add note that -gnatVo includes ranges including loops
	Add documentation for -gnatL switch
	Add note on elaboration warning for initializing variables
	Add documentation for new -gnatwt warning switch
	Document new form of pragma Warnings (On|Off, string)
	Add comment on use of pragma Warnings to control warnings
	Add documentation for -gnatjnn switch
	Modify section on interfacing with C for VMS 64-bit.
	Add doc for -gnatVe/E
	Add documentation of new warning flags -gnatww/-gnatwW
	Add warnings about address clause overlays to list of warnings
	(Exception Handling Control): Document that the option --RTS must be
	used consistently for gcc and gnatbind.
	Clarify that inlining is not always possible
	Update documentation on pragma Unchecked_Union.

	* gnat_rm.texi:
	Add documentation for new extended version of pragma Obsolescent
	Add documentation for implementation defined attribute 'Stub_Type.
	Add note on use of Volatile in asm statements
	Add documentation on use of pragma Unreferenced in context clause
	Document new form of pragma Warnings (On|Off, pattern)
	Document pragma Wide_Character_Encoding
	Add note that pragma Restrictions (No_Elaboration_Code) is only fully
	enforced if code generation is active.
	Add section on pragma Suppress to document GNAT specific check
	Alignment_Check
	Clarify difference between No_Dispatching_Calls & No_Dispatch.
	Add documentation for pragma Restrictions (No_Elaboration_Code)

	* gnat-style.texi:
	Add comments on layout of subprogram local variables in the
	presence of nested subprograms.

	* ug_words: Resync.

	* elists.ads: Minor reformatting
	Node returns Node_Or_Entity_Id (doc change only)

	* xgnatugn.adb: Replace ACADEMICEDITION with GPLEDITION

	* g-arrspl.ads (Create): Update comments.

	* sem.ads: Add details on the handling of the scope stack.

	* usage.adb: Update documentation.

	* validsw.ads, validsw.adb:
	Add definition of Validity_Check_Components and implement -gnatVe/E

	* vms_data.ads: Add missing VMS qualifiers.

	* s-addope.ads: Add documentation on overflow and divide by zero

2006-10-31  Robert Dewar  <dewar@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* fmap.adb: Put routines in alpha order

	* g-boumai.ads: Remove redundant 'in' keywords

	* g-cgi.adb: Minor reformatting

	* g-cgi.ads: Remove redundant 'in' keywords

	* get_targ.adb: Put routines in alpha order

	* prj-attr.ads: Minor reformatting

	* s-atacco.ads: Minor reformatting

	* scn.adb: Put routines in alpha order

	* sinput-l.adb: Minor comment fix

	* sinput-p.adb: Minor comment fix

	* s-maccod.ads: Minor reformatting

	* s-memory.adb: Minor reformatting

	* s-htable.adb: Fix typo in comment.

	* s-secsta.adb: Minor comment update.

	* s-soflin.adb: Minor reformatting

	* s-stoele.ads:
	Add comment about odd qualification in Storage_Offset declaration

	* s-strxdr.adb:
	Remove unnecessary 'in' keywords for formal parameters.

	* treeprs.adt: Minor reformatting

	* urealp.adb: Put routines in alpha order

	* s-wchcon.ads, s-wchcon.adb (Get_WC_Encoding_Method): New version
	taking string.

	* s-asthan-vms-alpha.adb: Remove redundant 'in' keywords

	* g-trasym-vms-ia64.adb: Remove redundant 'in' keywords

	* env.c (__gnat_unsetenv): Unsetenv is unavailable on LynxOS, so
	workaround as on other platforms.

	* g-eacodu-vms.adb: Remove redundant 'in' keywords
	* g-expect-vms.adb: Remove redundant 'in' keywords

	* gnatdll.adb (Add_Files_From_List): Handle Name_Error and report a
	clear error message if the list-of-files file cannot be opened.

	* g-thread.adb (Unregister_Thread_Id): Add use type Thread_Id so the
	equality operator is always visible.

	* lang.opt: Woverlength-strings: New option.

	* nmake.adt:
	Update copyright, since nmake.ads and nmake.adb have changed.

	* osint-b.ads, osint-b.adb (Time_From_Last_Bind): removed function .
	(Binder_Output_Time_Stamps_Set): removed.
	(Old_Binder_Output_Time_Stamp): idem.
	(New_Binder_Output_Time_Stamp): idem.
	(Recording_Time_From_Last_Bind): idem.
	(Recording_Time_From_Last_Bind): Make constant.

	* output.ads, output.adb (Write_Str): Allow LF characters
	(Write_Spaces): New procedure

	* prepcomp.adb (Preproc_Data_Table): Change Increment from 5% to 100%

	* inline.adb: Minor reformatting

	* s-asthan-vms-alpha.adb: Remove redundant 'in' keywords

	* s-mastop-vms.adb: Remove redundant 'in' keywords

	* s-osprim-vms.adb: Remove redundant 'in' keywords

	* s-trafor-default.adb: Remove redundant 'in' keywords

	* 9drpc.adb: Remove redundant 'in' keywords

	* s-osinte-mingw.ads: Minor reformatting

	* s-inmaop-posix.adb: Minor reformatting

	* a-direio.ads: Remove quotes from Compile_Time_Warning message

	* a-exexda.adb: Minor code reorganization

	* a-filico.adb: Minor reformatting

	* a-finali.adb: Minor reformatting

	* a-nudira.ads: Remove quote from Compile_Time_Warning message

	* a-numeri.ads: Minor reformatting

	* a-sequio.ads: Remove quotes from Compile_Time_Warning message

	* exp_pakd.ads: Fix obsolete comment

	* a-ztenau.adb, a-ztenio.adb, a-wtenau.adb, a-tienau.adb,
	a-wtenio.adb (Put): Avoid assuming low bound of string is 1.
	Probably not a bug, but certainly neater and more efficient.

	* a-tienio.adb: Minor reformatting

	* comperr.adb (Compiler_Abort): Call Cancel_Special_Output at start
	Avoid assuming low bound of string is 1.

	* gnatbind.adb: Change Bindusg to package and rename procedure as
	Display, which now ensures that it only outputs usage information once.
	(Scan_Bind_Arg): Avoid assuming low bound of string is 1.

	* g-pehage.adb (Build_Identical_Keysets): Replace use of 1 by
	Table'First.

	* g-regpat.adb (Insert_Operator): Add pragma Warnings (Off) to kill
	warning.
	(Match): Add pragma Assert to ensure that Matches'First is zero

	* g-regpat.ads (Match): Document that Matches lower bound must be zero

	* makeutl.adb (Is_External_Assignment): Add pragma Assert's to check
	documented preconditions (also kills warnings about bad indexes).

	* mdll.adb (Build_Dynamic_Library): Avoid assumption that Afiles'First
	is 1.
	(Build_Import_Library): Ditto;

	* mdll-utl.adb: (Gnatbind): Avoid assumption that Alis'First = 1

	* rtsfind.adb (RTE_Error_Msg): Avoid assuming low bound of string is 1.

	* sem_case.adb (Analyze_Choices): Add pragma Assert to check that
	lower bound of choice table is 1.

	* sem_case.ads (Analyze_Choices): Document that lower bound of
	Choice_Table is 1.

	* s-imgdec.adb (Set_Decimal_Digits): Avoid assuming low bound of
	string is 1.

	* uintp.adb (Init_Operand): Document that low bound of Vec is always 1,
	and add appropriate Assert pragma to suppress warnings.

	* atree.h, atree.ads, atree.adb
	Change Elist24 to Elist25
	Add definitions of Field28 and Node28
	(Traverse_Field): Use new syntactic parent table in sinfo.

	* cstand.adb: Change name Is_Ada_2005 to Is_Ada_2005_Only

	* itypes.adb: Change name Is_Ada_2005 to Is_Ada_2005_Only

	* exp_tss.adb: Put routines in alpha order

	* fe.h: Remove redundant declarations.

2006-10-23 Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* utils.c (builtin_function): Rename to gnat_builtin_function.
	Move common code to add_builtin_function.
	* misc.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as
	gnat_builtin_function.
	* gigi.h (builtin_function): Rename to gnat_builtin_function.
	Change the signature.

2006-10-16  Brooks Moses  <bmoses@stanford.edu>

	* Makefile.in: Add TEXI2PDF definition.
	* Make-lang.in: Add "ada.pdf" target.

2006-10-03  Kazu Hirata  <kazu@codesourcery.com>

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

2006-09-28  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (gnat_to_gnu_entity) <E_Procedure>: Do not set "const" flag
	on "pure" Ada subprograms if SJLJ exceptions are used.
	* trans.c (Handled_Sequence_Of_Statements_to_gnu): Set TREE_NO_WARNING
	on the declaration node of JMPBUF_SAVE.
	* utils.c (init_gigi_decls): Set DECL_IS_PURE on the declaration nodes
	of Get_Jmpbuf_Address_Soft and Get_GNAT_Exception.
	* utils2.c (build_call_0_expr): Do not set TREE_SIDE_EFFECTS.

2006-08-20  Laurent Guerby  <laurent@guerby.net>

	PR ada/28716
	g-socket.adb (Bind_Socket): Call Set_Address.

2006-09-15  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/15802
	* decl.c (same_discriminant_p): New static function.
	(gnat_to_gnu_entity) <E_Record_Type>: When there is a parent
	subtype and we have discriminants, fix up the COMPONENT_REFs
	for the discriminants to make them reference the corresponding
	fields of the parent subtype after it has been built.

2006-09-15  Roger Sayle  <roger@eyesopen.com>

	PR ada/18817
	* utils.c (max_size): Perform constant folding of (A ? B : C) - D
	into A ? B - D : C - D when calculating the size of a MINUS_EXPR.

2006-09-13  Olivier Hainque  <hainque@adacore.com>

	PR ada/29025
	* trans.c (gnat_gimplify_expr) <ADDR_EXPR>: When taking the address
	of a SAVE_EXPR, just make the operand addressable/not-readonly and
	let the common gimplifier code make and propagate a temporary copy.
	(call_to_gnu): Clarify the use of SAVE_EXPR for not addressable
	out/in-out actuals and defer setting the addressable/readonly bits
	to the gimplifier.

2006-09-13  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/28591
	* decl.c (components_to_record): Defer emitting debug info for the
	record type associated with the variant until after we are sure to
	actually use it.

2006-09-13  Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/21952
	* gigi.h (gnat_internal_attribute_table): Declare.
	* misc.c (LANG_HOOKS_ATTRIBUTE_TABLE): Define to above.
	* utils.c (gnat_internal_attribute_table): New global variable.
	(builtin_function): Always call decl_attributes on the builtin.
	(handle_const_attribute): New static function.
	(handle_nothrow_attribute): Likewise.

2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.

2006-06-23  Olivier Hainque  <hainque@adacore.com>

	* misc.c (gnat_type_max_size): Look at TYPE_ADA_SIZE if we have
	not been able to get a constant upper bound from TYPE_SIZE_UNIT.

2006-06-20  James A. Morrison  <phython@gcc.gnu.org>
	    Eric Botcazou  <ebotcazou@adacore.com>

	PR ada/18692
	* Make-lang.in: Add check-gnat to lang_checks.  Rename existing
	check-gnat into check-acats.

2006-06-17  Karl Berry  <karl@gnu.org>

	* gnat-style.texi (@dircategory): Use "Software development"
	instead of "Programming", following the Free Software Directory.

2006-06-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR ada/27944
	* s-taprop-hpux-dce.adb: Delete redundant 'with System.Parameters'.

2006-06-06  Laurent Guerby  <laurent@guerby.net>

	PR ada/27769
	mlib-utl.adb: Use Program_Name.

2006-05-28  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c, env.c, gigi.h, init.c, initialize.c, raise-gcc.c,
	sem_ch13.adb, sysdep.c, targtyps.c, tb-alvxw.c, tracebak.c,
	trans.c, utils.c: Fix comment typos.  Follow spelling
	conventions.
	* gnat_rm.texi, gnat_ugn.texi, : Fix typos.  Follow spelling
	conventions.

2006-05-19  Nicolas Setton  <setton@adacore.com>

	* misc.c (gnat_dwarf_name): New function.
	(LANG_HOOKS_DWARF_NAME): Define to it.

2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>

	* Make-lang.in (ada/decl.o): Replace target.h with $(TARGET_H).
	(ada/misc.o): Likewise.
	(ada/utils.o): Likewise.

2006-04-08  Aurelien Jarno  <aurel32@debian.org>

	* Makefile.in: Add Ada support for GNU/kFreeBSD.
	* s-osinte-kfreebsd-gnu.ads: New file.

2006-03-29  Carlos O'Donell  <carlos@codesourcery.com>

	* Make-lang.in: Rename docdir to gcc_docdir.

2006-03-04  Eric Botcazou  <ebotcazou@adacore.com>

	* gigi.h (get_ada_base_type): Delete.
	* utils2.c (get_ada_base_type): Likewise.
	* trans.c (convert_with_check): Operate in the real base type.

2006-03-03  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* uintp.adb (Num_Bits): Handle Uint_Int_First specially.

2006-03-02  Richard Sandiford  <richard@codesourcery.com>

	* utils.c (create_var_decl): Use have_global_bss_p when deciding
	whether to make the decl common.

2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* Make-lang.in (Ada): Remove.
	(.PHONY): Remove Ada

2006-02-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Find_Boolean_Types): If one of the operands is an
	aggregate, check the interpretations of the other operand to find one
	that may be a boolean array.

	(Analyze_Selected_Component): Fix flow-of-control typo in case where
	the prefix is a private extension.

2006-02-17  Eric Botcazou  <botcazou@adacore.com>

	PR ada/26315
	* utils2.c (find_common_type): If both input types are BLKmode and
	have the same constant size, keep using the first one.

	* bindgen.adb: (Gen_Versions_Ada): Revert previous workaround.

	* decl.c (gnat_to_gnu_entity): Only check TREE_OVERFLOW for a constant.

	* misc.c (gnat_handle_option): New case for -Woverlength-strings.

2006-02-17  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-irix.adb, s-taprop-hpux-dce.adb, s-taprop-linux.adb,
	s-taprop-solaris.adb, s-taprop-vms.adb, s-taprop-mingw.adb,
	s-taprop-posix.adb, s-taprop-vxworks.adb, s-taprop-lynxos.adb,
	s-taprop-tru64.adb (Set_False, Set_True, Suspend_Until_True): Add
	Abort_Defer/Undefer pairs to avoid the possibility of a task being
	aborted while owning a lock.

2006-02-17  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Allocator): If the allocated object is accessed
	through an access to class-wide interface we force the displacement of
	the pointer to the allocated object to reference the corresponding
	secondary dispatch table.
	(Expand_N_Op_Divide): Allow 64 bit divisions by small power of 2,
	if Long_Shifts are supported on the target, even if 64 bit divides
	are not supported (configurable run time mode).
	(Expand_N_Type_Conversion): Do validity check if validity checks on
	operands are enabled.
	(Expand_N_Qualified_Expression): Do validity check if validity checks
	on operands are enabled.

2006-02-17  Ed Schonberg  <schonberg@adacore.com>

	* exp_dbug.adb (Debug_Renaming_Declaration): Indicate that the entity
	must be materialized when the renamed expression is an explicit
	dereference.

2006-02-17  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Statically_Discriminated_Components): Return false if
	the bounds of the type of the discriminant are not static expressions.

	* sem_aggr.adb (Check_Static_Discriminated_Subtype): Return false if
	the bounds of the discriminant type are not static.

2006-02-17  Robert Dewar  <dewar@adacore.com>

	* g-os_lib.adb (Copy_File): Make sure that if From has an Invalid_FD,
	then we close To if it is valid.

2006-02-17  Vasiliy Fofanov  <fofanov@adacore.com>

	* init.c (facility_resignal_table): new array
	(__gnat_default_resignal_p): enhance default predicate to resignal if
	VMS condition has one of the predefined facility codes.

2006-02-17  Vasiliy Fofanov  <fofanov@adacore.com>

	* Makefile.in: Use VMS64 specialized versions of several units in
	Interfaces.C hierarchy to be compatible with HP C default size choices.
	Use the default version of Ada.Synchronous_Task_Control for VxWorks 653.

2006-02-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch10.adb (Analyze_With_Clause): If the unit is a subprogram
	instantiation, the corresponding entity is the related_instance of the
	wrapper package created for the instance.

2006-02-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch12.adb (Analyze_Package_Instantiation): Inline_Now is false if
	the current instance is nested within another instance in a child unit.

2006-02-17  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Build_Discriminated_Subtype): In case of concurrent
	type we cannot inherit the primitive operations; we inherit the
	Corresponding_Record_Type (which has the list of primitive operations).
	(Check_Anonymous_Access_Types): When creating anonymous access types for
	access components, use Rewrite in order to preserve the tree structure,
	for ASIS use.
	(Analyze_Object_Declaration): For limited types with access
	discriminants with defaults initialized by an aggregate, obtain
	subtype from aggregate as for other mutable types.
	(Derived_Type_Declaration): If the derived type is a limited interface,
	set the corresponding flag (Is_Limited_Record is not sufficient).

2006-02-17  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch6.adb (Build_Body_To_Inline): Enforce the rule that in order
	to inline a function that returns an unconstrained type, the return
	expression must be the first variable declared in the body of the
	function.

2006-02-17  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): In case of conversion to an
	abstract interface type, the static analysis is not enough to know if
	the interface is implemented or not by the source tagged type. Hence
	we must pass the work to the expander to generate the required code to
	evaluate the conversion at run-time.
	(Resolve_Equality_Op): Do not apply previous
	transformation if expansion is disasbled, to prevent anomalies when
	locating global references in a generic unit.

2006-02-17  Vincent Celier  <celier@adacore.com>

	* snames.ads, snames.adb: New standard names for new project attributes:
	archive_builder, archive_indexer, compiler_pic_option,
	config_body_file_name, config_body_file_name_pattern,
	config_file_switches, config_file_unique, config_spec_file_name,
	config_spec_file_name_pattern, default_builder_switches,
	default_global_compiler_switches, default_language,
	dependency_file_kind, global_compiler_switches, include_path,
	include_path_file, language_kind, linker_executable_option,
	linker_lib_dir_option, linker_lib_name_option, mapping_file_switches,
	roots, runtime_project.

2006-02-17  Matthew Heaney  <heaney@adacore.com>

	* a-convec.ads, a-convec.adb:
	(operator "&"): handle potential overflow for large index types
	(Insert): removed Contraint_Error when using large index types
	(Insert_Space): removed Constraint_Error for large index types
	(Length): moved constraint check from Length to Insert

	* a-coinve.ads, a-coinve.adb: Stream attribute procedures are declared
	as not null access.
	Explicit raise statements now include an exception message.
	(operator "&"): handle potential overflow for large index types
	(Insert): removed Contraint_Error when using large index types
	(Insert_Space): removed Constraint_Error for large index types
	(Length): moved constraint check from Length to Insert

2006-02-17  Robert Dewar  <dewar@adacore.com>

	* s-wchcnv.adb: Document handling of [ on output (we do not change
	this to ["5B"] and the new comments say why not.

	* gnat_ugn.texi:
	Add note for -gnatVo that this now includes the cases of type
	conversions and qualified expressions.
	Add comments on handling of brackets encoding for Text_IO

2006-02-17  Ramon Fernandez  <fernandez@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* expander.adb: Fix typo in comment

	* exp_pakd.adb: Fix typo
	Minor comment reformatting.

	* g-dyntab.adb: Minor reformatting

	* exp_ch6.adb (Register_Interface_DT_Entry): Traverse the list of
	aliased subprograms to look for the abstract interface subprogram.

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

	* env.c (__gnat_setenv): Use size_t.
	(__gnat_unsetenv): Likewise.
	(__gnat_clearenv): Likewise.

2006-02-16  Arnaud Charlet  <charlet@adacore.com>

	* opt.ads (Ada_Version_Default): Set to Ada 2005 by default.

2006-02-13  Arnaud Charlet  <charlet@adacore.com>

	* a-intnam-os2.ads, a-intnam-unixware.ads, g-soccon-unixware.ads,
	g-soliop-unixware.ads, i-os2err.ads, i-os2lib.adb, i-os2lib.ads,
	i-os2syn.ads, i-os2thr.ads, s-intman-irix-athread.adb,
	s-osinte-aix-fsu.ads, s-osinte-fsu.adb, s-parame-os2.adb,
	s-osinte-irix-athread.ads, s-osinte-linux-fsu.ads, s-osinte-os2.adb,
	s-osinte-os2.ads, s-osinte-solaris-fsu.ads, s-osinte-unixware.adb,
	s-osinte-unixware.ads, s-osprim-os2.adb, s-taprop-irix-athread.adb,
	s-taprop-os2.adb, s-tasinf-irix-athread.adb, s-tasinf-irix-athread.ads,
	s-taspri-os2.ads, system-os2.ads, system-unixware.ads: Removed,
	no longer used.

2006-02-13  Jose Ruiz  <ruiz@adacore.com>

	* a-taster.adb (Current_Task_Fallback_Handler): Document why explicit
	protection against race conditions is not needed.
	(Set_Dependents_Fallback_Handler): Add mutual exclusive access to the
	fallback handler.
	(Set_Specific_Handler): Add mutual exclusive access to the specific
	handler.
	(Specific_Handler): Add mutual exclusive access for retrieving the
	specific handler.

	* s-tarest.adb (Task_Wrapper): Add mutual exclusive access to the fall
	back handler.

	* s-taskin.ads (Common_ATCB): Remove pragma Atomic for
	Fall_Back_Handler and Specific_Handler.

	* s-tassta.adb (Task_Wrapper): Add mutual exclusive access to the task
	termination handlers.
	Set two different owerflow depending on the maximal stack size.

	* s-solita.adb (Task_Termination_Handler_T): Document why explicit
	protection against race conditions is not needed when executing the
	task termination handler.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* s-gloloc-mingw.adb, a-cgaaso.ads, a-stzmap.adb, a-stzmap.adb,
	a-stzmap.ads, a-ztcoio.adb, a-ztedit.adb, a-ztedit.ads, a-ztenau.adb,
	a-ztenau.ads, a-colien.adb, a-colien.ads, a-colire.adb, a-colire.ads,
	a-comlin.adb, a-decima.adb, a-decima.ads, a-direio.adb, a-direio.adb,
	a-direio.adb, a-direio.ads, a-ngcoty.adb, a-ngcoty.ads, a-nuflra.adb,
	a-nuflra.ads, a-sequio.adb, a-sequio.ads, a-sequio.ads, a-storio.ads,
	a-stream.ads, a-ststio.adb, a-ststio.adb, a-ststio.ads, a-ststio.ads,
	a-stwima.adb, a-stwima.adb, a-stwima.ads, a-stwise.adb, a-teioed.adb,
	a-teioed.ads, a-ticoau.adb, a-ticoau.ads, a-ticoio.adb, a-tasatt.ads,
	a-tideau.adb, a-tideau.ads, a-tideio.adb, a-tideio.ads, a-tienau.adb,
	a-tienau.ads, a-tienio.adb, a-tienio.ads, a-tifiio.ads, a-tiflau.adb,
	a-tiflau.ads, a-tiflio.adb, a-tiflio.adb, a-tiflio.ads, a-tigeau.ads,
	a-tiinau.adb, a-tiinau.ads, a-tiinio.adb, a-tiinio.ads, a-timoio.adb,
	a-timoio.ads, a-titest.adb, a-titest.ads, a-wtcoio.adb, a-wtdeau.adb,
	a-wtdeau.ads, a-wtdeio.adb, a-wtdeio.ads, a-wtedit.adb, a-wtedit.adb,
	a-wtedit.ads, a-wtenau.adb, a-wtenau.ads, a-wtenau.ads, a-wtenio.adb,
	a-wtenio.ads, a-wtfiio.adb, a-wtfiio.ads, a-wtflau.adb, a-wtflau.ads,
	a-wtflio.adb, a-wtflio.adb, a-wtflio.ads, a-wtgeau.ads, a-wtinau.adb,
	a-wtinau.ads, a-wtinio.adb, a-wtinio.ads, a-wtmoau.adb, a-wtmoau.ads,
	a-wtmoio.adb, a-wtmoio.ads, xref_lib.adb, xref_lib.ads, xr_tabls.adb,
	g-boubuf.adb, g-boubuf.ads, g-cgideb.adb, g-io.adb, gnatdll.adb,
	g-pehage.adb, i-c.ads, g-spitbo.adb, g-spitbo.ads, mdll.adb,
	mlib-fil.adb, mlib-utl.adb, mlib-utl.ads, prj-env.adb, prj-tree.adb,
	prj-tree.ads, prj-util.adb, s-arit64.adb, s-asthan.ads, s-auxdec.adb,
	s-auxdec.ads, s-chepoo.ads, s-direio.adb, s-direio.ads, s-errrep.adb,
	s-errrep.ads, s-fileio.adb, s-fileio.ads, s-finroo.adb, s-finroo.ads,
	s-gloloc.adb, s-gloloc.ads, s-io.adb, s-io.ads, s-rpc.adb,
	s-rpc.ads, s-shasto.ads, s-sequio.adb, s-stopoo.ads, s-stratt.adb,
	s-stratt.ads, s-taasde.adb, s-taasde.ads, s-tadert.adb, s-sequio.ads,
	s-taskin.adb, s-tasque.adb, s-tasque.ads, s-wchjis.ads, makegpr.adb,
	a-coinve.adb, a-cidlli.adb, eval_fat.adb, exp_dist.ads, exp_smem.adb,
	fmap.adb, g-dyntab.ads, g-expect.adb, lib-xref.ads, osint.adb,
	par-load.adb, restrict.adb, sinput-c.ads, a-cdlili.adb,
	system-vms.ads, system-vms-zcx.ads, system-vms_64.ads: Minor
	reformatting.

2006-02-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-tasatt.adb, s-osinte-lynxos-3.adb, s-osinte-lynxos.adb,
	s-osinte-aix.adb, s-interr-sigaction.adb, s-asthan-vms-alpha.adb,
	s-interr-vms.adb, s-intman-vms.adb, s-interr-vxworks.adb,
	s-intman-vxworks.adb, s-asthan-vms-alpha.adb, a-ztexio.adb,
	a-reatim.adb, a-taside.adb, a-textio.adb, a-witeio.adb, prj-attr.adb,
	s-intman-irix.adb, s-intman-solaris.adb, s-intman-posix.adb,
	a-dynpri.adb, a-interr.adb, g-dynhta.adb, s-asthan.adb, s-interr.adb,
	s-pooglo.adb, s-pooloc.adb, s-poosiz.adb, s-tasren.adb, s-tasuti.adb,
	s-tataat.adb, s-tpobop.adb: Remove redundant with clauses.

2006-02-13  Arnaud Charlet  <charlet@adacore.com>

	* s-osinte-darwin.adb, s-osinte-darwin.ads, s-osinte-vxworks.ads,
	s-osinte-solaris.ads, s-osinte-linux.ads, s-osinte-freebsd.ads,
	s-osinte-solaris-posix.ads, s-osinte-lynxos-3.ads, s-osinte-lynxos.ads,
	s-osinte-tru64.ads, s-osinte-aix.ads, s-osinte-irix.ads,
	s-osinte-hpux-dce.ads, s-osinte-linux-hppa.ads,
	s-osinte-linux-alpha.ads, s-inmaop-posix.adb (sigset_t_ptr): Removed,
	replaced by anonymous access type.
	(pthread_sigmask): Now take an access sigset_t

	* s-osinte-hpux.ads:  Ditto.
	(pthread_mutex_t, pthread_cond_t): Update definitions to support
	properly 32 and 64 bit ABIs.

2006-02-13  Pascal Obry  <obry@adacore.com>

	* s-taprop-posix.adb, s-taprop-vxworks.adb, s-taprop-tru64.adb,
	s-taprop-lynxos.adb, s-taprop-irix.adb, s-taprop-hpux-dce.adb,
	s-taprop-linux.adb, s-taprop-solaris.adb,
	s-taprop-vms.adb (Create_Task): Remove task adjustment code. This
	adjustement is already done when calling this routine.

2006-02-13  Pascal Obry  <obry@adacore.com>

	* system-mingw.ads (Underlying_Priorities): Update the priority mapping
	table to take advantage of the 16 priority levels available on Windows
	2000 and XP. On NT4 there are only 7 priority levels, this is properly
	supported by this new mapping.

2006-02-13  Nicolas Setton  <setton@adacore.com>

	* adadecode.h, adadecode.c: (__gnat_decode): Improve support of types.
	(get_encoding): New subprogram. Extracts the encodings from an encoded
	Ada name.

2006-02-13  Pascal Obry  <obry@adacore.com>
	    Nicolas Roche  <roche@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* adaint.h, adaint.c (DIR_SEPARATOR): Use _T() macro for Unicode
	support.
	(__gnat_try_lock): Add unicode support by using a specific section on
	Windows.
	(__gnat_get_current_dir): Idem.
	(__gnat_open_read): Idem.
	(__gnat_open_rw): Idem.
	(__gnat_open_create): Idem.
	(__gnat_create_output_file): Idem.
	(__gnat_open_append): Idem.
	(__gnat_open_new): Idem.
	(__gnat_file_time_name): Idem.
	(__gnat_set_file_time_name): Idem.
	(__gnat_stat): Idem.
	(win32_no_block_spawn): Idem.
	(__gnat_locate_exec_on_path): Idem.
	(__gnat_opendir): New routine.
	(__gnat_closedir): Idem.
	(__gnat_readdir): Add new parameter length (pointer to int). Update
	implementation to use it and add specific Win32 code for Unicode
	support.
	(__gnat_get_env_value_ptr): Remove. Replaced by __gnat_getenv in env.c
	(__gnat_set_env_value): Remove. Replaced by __gnat_setenv in env.c
	(convert_addresses): Do not define this dummy routine on VMS.

	* mingw32.h (GNAT_UNICODE_SUPPORT): New definition, if set the GNAT
	runtime Unicode support will be activated.
	(S2WS): String to Wide-String conversion. This version just copy a
	string in non Unicode version.
	(WS2S): Wide-String to String conversion. This version just copy a
	string in non Unicode version.

	* g-dirope.adb: (Close): Now import __gnat_closedir from adaint.c.
	(Open): Now import __gnat_opendir from adaint.c.
	(Read): Change the implementation to support unicode characters. It is
	not possible to use strlen() on Windows as this version supports only
	standard ASCII characters. So the length of the directory entry is now
	returned from the imported __gnat_readdir routine.
	Update copyright notice.

	* s-crtl-vms64.ads, s-crtl.ads: (closedir): Moved to adaint.c.
	(opendir): Moved to adaint.c.

	* g-os_lib.adb (Copy_Time_Stamp): Fix off-by-one range computation.
	(Get_Directory): Fix wrong indexing.
	(Getenv): replace __gnat_get_env_value_ptr from adaint.c by
	__gnat_getenv from env.c
	(Setenv): replace __gnat_set_env_value from adaint.c by __gnat_setenv
	from env.c

	* env.h, env.c: New file.

	* s-scaval.adb (Initialize): Replace __gnat_get_env_value_ptr from
	adaint.c by __gnat_getenv from env.c

	* s-shasto.adb (Initialize): replace __gnat_get_env_value_ptr from
	adaint.c by __gnat_getenv from env.c

	* Make-lang.in: Add env.o in the list of C object needed by gnat1
	and gnatbind.
	Update dependencies.

2006-02-13  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    Olivier Hainque  <hainque@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* ada-tree.h: (TYPE_UNCHECKED_UNION_P): Deleted.

	* gigi.h (value_factor_p): Add prototype and description, now public.

	* decl.c (gnat_to_gnu_field): Don't attempt BLKmode to integral type
	promotion for field with rep clause if the associated size was proven
	to be in error.
	Expand comments describing attempts to use a packable type.
	(gnat_to_gnu_entity) <E_Signed_Integer_Subtype,
	E_Floating_Point_Subtype>: Inherit alias set of what we are making a
	subtype of to ensure conflicts amongst all subtypes in a hierarchy,
	necessary since these are not different types and pointers may
	actually designate any subtype in this hierarchy.
	(gnat_to_gnu_entity, case E_Record_Type): Always make fields for
	discriminants but put them into record only if not Unchecked_Union;
	pass flag to components_to_record showing Unchecked_Union.
	(make_dummy_type): Use UNION_TYPE only if Unchecked_Union and no
	components before variants; don't set TYPE_UNCHECKED_UNION_P.
	(components_to_record): New argument UNCHECKED_UNION.
	Remove special case code for Unchecked_Union and instead use main code
	with small changes.

	PR ada/26096
	(gnat_to_gnu_entity) <E_Variable>: Do not initialize the aligning
	variable with the expression being built, only its inner field.

	* trans.c (Handled_Sequence_Of_Statements_to_gnu): Remove call to
	emit_sequence_entry_statements.
	(emit_sequence_entry_statements, body_with_handlers_p): Delete.
	(establish_gnat_vms_condition_handler): Move before
	Subprogram_Body_to_gnu.
	(Subprogram_Body_to_gnu): On VMS, establish_gnat_vms_condition_handler
	for a subprogram if it has a foreign convention or is exported.
	(Identifier_to_gnu): Manually unshare the DECL_INITIAL tree when it is
	substituted for a CONST_DECL.
	(tree_transform, case N_Aggregate): Remove code for UNION_TYPE and pass
	Etype to assoc_to_constructor.
	(assoc_to_constructor): New argument, GNAT_ENTITY; use it to ignore
	discriminants of Unchecked_Union.
	(TARGET_ABI_OPEN_VMS): Define to 0 if not defined, so that later uses
	don't need cluttering preprocessor directives.
	(establish_gnat_vms_condition_handler): New function. Establish the GNAT
	condition handler as current in the compiled function.
	(body_with_handlers_p): New function. Tell whether a given sequence of
	statements node is attached to a package or subprogram body and involves
	exception handlers possibly nested within inner block statements.
	(emit_sequence_entry_statements): New function, to emit special
	statements on entry of sequences when necessary. Establish GNAT
	condition handler in the proper cases for VMS.
	(Handled_Sequence_Of_Statements_to_gnu): Start block code with
	emit_sequence_entry_statements.

	* utils2.c (find_common_type): If both input types are BLKmode and
	have a constant size, use the smaller one.
	(build_simple_component_ref): Also match if FIELD and NEW_FIELD are
	the same.

	* utils.c (value_factor_p): Make public, to allow uses from other gigi
	units.
	(create_type_decl): Do not set the flag DECL_IGNORED_P for dummy types.
	(convert, case UNION_TYPE): Remove special treatment for unchecked
	unions.

	PR ada/18659
	(update_pointer_to): Update variants of pointer types to unconstrained
	arrays by attaching the list of fields of the main variant.

2006-02-13  Arnaud Charlet  <charlet@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* a-exexpr.adb, a-exexpr-gcc.adb
	(Process_Raise_Exception): Removed, merged with Propagate_Exception.
	(Propagate_Exception): Now take extra From_Signal_Handler parameter.
	Remove code unused for exception propagation for the compiler itself
 	from a-except.adb and update to still share separate packages.

	* a-except.ads, a-except.adb: Ditto.
	Add comments that this version is now used only by the compiler and
	other basic tools. The full version that includes the Ada 2005 stuff
	is in separate files a-except-2005.ads/adb. The reason is that we do
	not want to cause bootstrap problems with compilers not recognizing
	Wide_Wide_String.
	Add exception reason code PE_Implicit_Return
	Add new exception reason code (Null Exception_Id)

	* a-except-2005.adb, a-except-2005.ads: New files.

	* s-wchcon.ads: (Get_WC_Encoding_Method): New function.

	* s-wchcon.adb: New file.

	* Makefile.in (LIBGNAT_SRCS): Add tb-gcc.c.
	(traceback.o deps): Likewise.
	(SPARC/Solaris): Accept sparc[64|v9]-sun-solaris.
	Activate build of GMEM instrumentation library on VMS targets.
	(gnatlib-sjlj, gnatlib-zcx): Pass EH_MECHANISM to make gnatlib.
	Use a-except-2005.ads/adb for all run-time library builds unless
	specified otherwise.
	[VMS] (LIBGNAT_TARGET_PAIRS_AUX1,2): Rename s-parame-vms.ads to
	s-parame-vms-alpha.ads and add s-parame-vms-ia64.ads.
	Use s-parame.adb on all native platforms.
	Use s-parame-vxworks.adb on all vxworks platforms.
	Add env.c env.h in LIBGNAT_SRCS
	Add env.o in LIBGNAT_OBJS
	(GNATMAKE_OBJS): Remove ctrl_c.o object.
	(LIBGNAT_TARGET_PAIRS for x86-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 x86-vxworks): Remove the use of
	i-vxworks and i-vxwoio from the run time that supports VxWorks 6 RTPs.

	* types.h, types.ads (Terminate_Program): New exception
	Add comment on modifying multiple versions of a-except.adb when the
	table of exception reasons is modified.
	Add exception reason code PE_Implicit_Return
	Add new exception reason code (Null Exception_Id)

	* clean.adb (Initialize): Get the target parameters before checking
	if target is OpenVMS. Move the OpenVMS specific code here from package
	body elaboration code.

2006-02-13  Thomas Quinot  <quinot@adacore.com>
	    Vincent Celier  <celier@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* ali-util.adb (Get_File_Checksum): Update to account for change in
	profile of Initialize_Scanner.

	* gprep.adb (Gnatprep): Update to account for change in profile of
	Initialize_Scanner.
	(Process_One_File): Same.

	* lib.adb (Get_Code_Or_Source_Unit): New subprogram factoring the
	common code between Get_Code_Unit and Get_Source_Unit. Reimplement
	that behaviour using the new Unit information recorded in the source
	files table, rather than going through all units every time.
	(Get_Code_Unit): Reimplement in terms of Get_Code_Or_Source_Unit.
	(Get_Source_Unit): Same.

	* prepcomp.adb (Parse_Preprocessing_Data_File): Update to account for
	change in profile of Initialize_Scanner.
	(Prepare_To_Preprocess): Same.

	* lib.ads: Fix typo in comment (templace -> template).

	* prj-part.adb (Parse_Single_Project): Update to account for change in
	profile of Initialize_Scanner.

	* scn.adb (Initialize_Scanner): Account for change in profile of
	Scng.Initialize_Scanner: set Current_Source_Unit in Scn instead of Scng.
	Also record the association of the given Source_File_Index to the
	corresponding Unit_Number_Type.

	* scng.ads, scng.adb (Initialize_Scanner.Set_Reserved): Remove
	procedure.
	(Initialize_Scanner): Call Scans.Initialize_Ada_Keywords.
	Remove Unit formal for generic scanner: this formal
	is only relevant to Scn (the scanner instance used to parse Ada source
	files), not to other instances. Update comment accordingly.
	(Scan): Use new function Snames.Is_Keyword_Name.

	* sinfo-cn.adb: Fix typo in comment.

	* sinput.adb (Unit, Set_Unit): Accessors for new source file attribute
	Unit.

	* sinput.ads (Source_File_Record): New component Unit, used to capture
	the unit identifier (if any) associated to a source file.

	* sinput-c.adb, sinput-l.adb (Load_File): Initialize new component
	Unit in Source_File_Record.

	* sinput-p.adb (Source_File_Is_Subunit): Update to account for change
	in profile of Initialize_Scanner.

	* scans.adb (Initialize_Ada_Keywords): New procedure

	* scans.ads (Initialize_Ada_Keywords): New procedure to initialize the
	Ada keywords in the Namet table, without the need to call
	Initialize_Scanner.

	* snames.adb: Add pragma Ada_2005 (synonym for Ada_05)
	(Is_Keyword_Name): New function

	* snames.ads: Add subtype Configuration_Pragma_Names
	Add pragma Ada_2005 (synonym for Ada_05)
	(Is_Keyword_Name): New function

	* snames.h: Add pragma Ada_2005 (synonym for Ada_05)

2006-02-13  Arnaud Charlet  <charlet@adacore.com>

	* a-stwisu.adb, a-strsup.adb, a-stzsup.adb (Super_Slice): Fix slice
	index.

	* a-stwima.adb (To_Set): Add extra check when N = 0.

	* g-regpat.adb: (Match_Simple_Operator): Avoid possible overflow.

2006-02-13  Arnaud Charlet  <charlet@adacore.com>

	* s-parame-mingw.adb, s-parame-linux.adb,
	s-parame-solaris.adb: Removed, replaced by s-parame.adb

	* s-parame-vxworks.ads: Fix typo.

	* s-parame-vxworks.adb: New file.

	* s-parame.adb: Version now used by all native platforms.
	(Default_Stack_Size): Use 2 megs for default stack size and use
	__gl_default_stack_size when available.
	(Minimum_Stack_Size): Use 12K.

	* s-taprop-mingw.adb: Set default stack size linker switch to 2megs.
	(Create_Task): Refine implementation taking advantage of the XP stack
	size support. On XP, we now create the thread using the flag
	STACK_SIZE_PARAM_IS_A_RESERVATION.

	* s-osinte-mingw.ads (Stack_Size_Param_Is_A_Reservation): New constant.

	* sysdep.c (__gnat_is_windows_xp): New routine, returns 1 on Windows
	XP and 0 on older Windows versions.

	* interfac-vms.ads: Removed, no longer used.

2006-02-13  Matthew Heaney  <heaney@adacore.com>

	* a-rbtgso.adb, a-crbtgo.adb, a-crbtgk.adb, a-coorse.adb,
	a-cohama.adb, a-ciorse.adb, a-cihama.adb, a-cihase.adb,
	a-cohase.adb: All explicit raise statements now include an exception
	message.

	* a-ciormu.ads, a-ciormu.adb, a-coormu.ads, a-coormu.adb
	(Update_Element_Preserving_Key): renamed op to just Update_Element.
	Explicit raise statements now include an exception message

	* a-cihase.ads, a-cohase.ads: Removed comment.

	* a-stboha.ads, a-stboha.adb, a-stfiha.ads, a-envvar.adb,
	a-envvar.ads, a-swbwha.ads, a-swbwha.adb, a-swfwha.ads, a-szbzha.ads,
	a-szbzha.adb, a-szfzha.ads: New files.

2006-02-13  Matthew Heaney  <heaney@adacore.com>

	* a-cgcaso.adb, a-cgaaso.adb: Implemented using heapsort instead of
	quicksort.

2006-02-13  Eric Botcazou  <ebotcazou@adacore.com>

	* lang.opt: Wvariadic-macros: New option.
	Wold-style-definition: Likewise.
	Wmissing-format-attribute: Likewise.

	* misc.c (gnat_handle_option): New cases for -Wvariadic-macros,
	-Wold-style-definition and -Wmissing-format-attribute.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* a-ticoio.ads, a-ticoio.adb: Add use clause (moved here from spec)

	* a-coteio.ads, a-lcteio.ads, a-llctio.ads, a-scteio.ads: New files.

2006-02-13  Nicolas Roche  <roche@adacore.com>

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

2006-02-13  Douglas Rupp  <rupp@adacore.com>

	* s-parame-vms.ads: Renamed to s-parame-vms-alpha.ads

	* s-parame-vms-alpha.ads, s-parame-vms-ia64.ads: New files.

2006-02-13  Pat Rogers  <rogers@adacore.com>

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

2006-02-13  Hristian Kirtchev  <kirtchev@adacore.com>

	* a-tiboio.adb, a-tiboio.ads, a-wwboio.adb,
	a-wwboio.ads, a-zzboio.adb, a-zzboio.ads:  New files.

	* impunit.adb, Makefile.rtl: Added new Ada 2005 units.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* rtsfind.adb, exp_prag.adb, lib-writ.adb, par-labl.adb,
	sem_case.adb: Minor code reorganization (not Present should be No)

2006-02-13  Geert Bosch  <bosch@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* a-tifiio.adb (Put_Digits): Test Last against To'First - 1 instead of
	0, since the lower bound of the actual string may be greater than one.

	PR ada/20753
	* a-tifiio.adb (Put): Fix condition to raise Layout_Error when invalid
	layout is requested.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* back_end.adb (Scan_Compiler_Arguments): Check if
	Search_Directory_Present is True and, if it is, add the argument in
	the source search directory path.

	* switch-c.adb (Scan_Front_End_Switches): Accept switch "-I". Set
	Search_Directory_Present to True.

2006-02-13  Joel Brobecker  <brobecke@adacore.com>

	* bindgen.adb (Gen_Main_C): declare the ensure_reference variable as
	volatile, to tell the compiler to preserve this variable at any level
	of optimization.
	(Gen_Versions_Ada): Temporarily work around codegen bug.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* gnatlink.adb (Process_Binder_File): If -shared is specified, invoke
	gcc to link with option -shared-libgcc.
	(Gnatlink): Remove duplicate switches -shared-libgcc

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* gnatvsn.ads (Current_Year): New constant, used to easily update
	copyright on all GNAT tools.

	* gnatls.adb, gnatname.adb, vms_conv.adb: Add 2006 to displayed
	copyright notice.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* erroutc.ads, erroutc.adb (Set_Message_Blank): Don't insert space
	after hyphen (small aesthetic change useful for a range of numbers
	using ^-^.
	Suppress range checks for a couple of assignments which otherwise
	cause validity checks with validity checking turned on.

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause, case Size):
	Improvement in error message for object.
	(Rep_Item_Too_Late): Remove '!' in warning message.

2006-02-13  Robert Dewar  <dewar@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* err_vars.ads: Suppress range checks for a couple of assignments
	which otherwise cause validity checks with validity checking turned on.
	Update comments.

	* errout.adb (Error_Msg_Internal): Do not suppress warning messages.
	Make message unconditional if it is a warning.
	(Error_Msg_NEL): Always output warning messages.
	Suppress range checks for a couple of assignments which otherwise
	cause validity checks with validity checking turned on.

	* errout.ads (Message Insertion Characters): Document that '!' is
	implied by '?' in error messages.

	* gnat1drv.adb: (Bad_Body): Remove '!' in warning message.
	(Gnat1drv): Use a goto to end of main subprogram instead of
	Exit_Program (E_Success) so that finalization can occur normally.

2006-02-13  Eric Botcazou  <ebotcazou@adacore.com>

	* s-stchop.adb (Stack_Check): Raise Storage_Error if the argument has
	wrapped around.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* a-direct.adb (Duration_To_Time, OS_Time_To_Long_Integer): New
	Unchecked_Conversion functions.
	(Modification_Time): Use direct conversion of OS_Time to Calendar time
	when OpenVMS returns False.

	* a-dirval-mingw.adb, a-dirval-vms.adb, a-dirval.ads,
	a-dirval.adb (OpenVMS): New Boolean function

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* checks.adb (Build_Discriminant_Checks): If the expression being
	checks is an aggregate retrieve the values of its discriminants to
	generate the check, rather than creating a temporary and a reference
	to it.
	(Apply_Access_Check): Rewritten to handle new Is_Known_Null flag
	(Install_Null_Excluding_Check): Ditto
	(Selected_Length_Checks): Build actual subtype for the original Ck_Node,
	not for the renamed object, so that the actual itype is attached in the
	proper context.

2006-02-13  Robert Dewar  <dewar@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* debug.adb: Eliminate numeric switches for binder/gnatmake

	* switch-m.adb (Normalize_Compiler_Switches): Record numeric debug
	switches for the compiler.
	(Scan_Make_Switches): Do not allow numeric debug switches for gnatmake
	(Scan_Make_Switches): When failing with an illegal switch, output an
	error message with the full switch.
	Eliminate numeric switches for binder/gnatmake

	* switch.ads, switch.adb (Bad_Switch): New procedure

	* switch-b.adb (Scan_Binder_Switches): Do not accept combined switches.
	Remove 0-9 as debug flag character possibilities
	-d is now controlling the primary stack size when its value is a
	positive. Also add checks against invalid values, and support for kb,
	mb. Ditto for -D switch.

2006-02-13  Robert Dewar  <dewar@adacore.com>
	    Serguei Rybin  <rybin@adacore.com>

	* opt.ads opt.adb: Add Ada_Version_Explicit_Config along with
	save/restore routines.
	Properly handle Ada_Version_Explicit and Ada_Version_Config, which
	were not always properly handled previously.
	Since we are changing the tree format anyway, also get rid of the
	junk obsolete Immediate_Errors flag.
	(Tree_Read): Change the way of reading Tree_Version_String - now we
	read the version string from the tree even if its length is not the
	same as the length of the version string computed from Gnatvsn.
	(Search_Directory_Present): New Boolean flag for the compiler.
	Define Tree_Version_String as a dynamic string.
	(Default_Stack_Size): new variable, used to handle switch -d.

	* par-prag.adb:
	For pragma Ada_2005, remove stuff about setting Ada_Version_Explicit
	only for main unit.
	Add pragma Ada_2005 (synonym for Ada_05)
	Properly handle Ada_Version_Explicit and Ada_Version_Config, which
	were not always properly handled previously.

	* directio.ads, ioexcept.ads, sequenio.ads, text_io.ads: Change
	explicit Ada_95 to Ada_2005.

2006-02-13  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend
	against errors in the source program: a private types for which the
	corresponding full type declaration is missing and pragma CPP_Virtual
	is used.
	(Is_Unchecked_Union): Check flag on Implementation_Base_Type.
	(Is_Known_Null): New flag
	(Has_Pragma_Pure): New flag
	(No_Return): Present in all entities, set only for procedures
	(Is_Limited_Type): A type whose ancestor is an interface is limited if
	explicitly declared limited.
	(DT_Offset_To_Top_Func): New attribute that is present in E_Component
	entities. Only used for component marked Is_Tag. If present it stores
	the Offset_To_Top function used to provide this value in tagged types
	whose ancestor has discriminants.

	* exp_ch2.adb: Update status of new Is_Known_Null flag

	* sem_ch7.adb: Maintain status of new Is_Known_Null flag

	* sem_cat.adb (Get_Categorization): Don't treat function as Pure in
	the categorization sense if Is_Pure was set by pragma Pure_Function.

2006-02-13  Quentin Ochem  <ochem@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>

	* bindusg.adb: Updated documentation for -d and -D switches.

	* raise.h (__gnat_set_globals): added new parameter for
	Default_Stack_Size.

	* init.c (__gnat_adjust_context_for_raise) <alpha-vms case>: Implement.
	(__gnat_handle_vms_condition): Adjust context before raise.
	(__gnat_install_handler): Restore the global vector setup for GCC
	versions before 3.4, as the frame based circtuitry is not available
	in this case.
	(__gnat_set_globals): added a parameter default_stack_size
	(__gl_default_stack_size): new variable.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Build_Array_Aggr_Code): Rename variable
	"Others_Mbox_Present" to "Others_Box_Present" because the mbox concept
	does not exist in the Ada RM.
	(Compatible_Int_Bounds): Determine whether two integer range bounds
	are of equal length and have the same start and end values.
	(Is_Int_Range_Bounds): Determine whether a node is an integer range.
	(Build_Record_Aggr_Code): Perform proper sliding of a nested array
	aggregate when it is part of an object declaration.
	(Build_Record_Aggr_Code)  If the aggregate ttype is a derived type that
	constrains discriminants of its parent, add explicitly the discriminant
	constraints of the ancestor by retrieving them from the
	stored_constraint of the parent.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference, case Mechanism_Code): If
	attribute Mechanism_Code is applied to renamed subprogram, modify
	prefix to point to base subprogram.
	Max/Min attributes now violate Restriction No_Implicit_Conditionals

	* sinfo.ads: Document that Mechanism_Code cannot be applied to
	renamed subprograms so that the front-end must replace the prefix
	appropriately.

2006-02-13  Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_ch3.adb (Component_Needs_Simple_Initialization): Add check for
	availability of RE_Interface_Tag.
	(Build_Initialization_Call): Fix wrong access to the discriminant value.
	(Freeze_Record_Type): Do not generate the tables associated with
	timed and conditional dispatching calls through synchronized
	interfaces if compiling under No_Dispatching_Calls restriction.
	When compiling for Ada 2005, for a nonabstract
	type with a null extension, call Make_Controlling_Function_Wrappers
	and insert the wrapper function declarations and bodies (the latter
	being appended as freeze actions).
	(Predefined_Primitive_Bodies): Do not generate the bodies of the
	predefined primitives associated with timed and conditional
	dispatching calls through synchronized interfaces if we are
	compiling under No_Dispatching_Calls.
	(Build_Init_Procedure):  Use RTE_Available to check if a run-time
	service is available before generating a call.
	(Make_Controlling_Function_Wrappers): New procedure.
	(Expand_N_Full_Type_Declaration): Create a class-wide master for
	access-to-limited-interfaces because they can be used to reference
	tasks that implement such limited interface.
	(Build_Offset_To_Top_Functions): Build the tree corresponding to the
	procedure spec and body of the Offset_To_Top function that is generated
	when the parent of a type with discriminants has secondary dispatch
	tables.
	(Init_Secondary_Tags): Handle the case in which the parent of the type
	containing secondary dispatch tables has discriminants to generate the
	correct arguments to call Set_Offset_To_Top.
	(Build_Record_Init_Proc): Add call to Build_Offset_To_Top_Functions.

	* a-tags.ads, a-tags.adb: (Check_Index): Removed.
	Add Wide_[Wide_]Expanded_Name.
	(Get_Predefined_Prim_Op_Address): New subprogram that provides exactly
	the same functionality of Get_Prim_Op_Address but applied to predefined
	primitive operations because the pointers to the predefined primitives
	are now saved in a separate table.
	(Parent_Size): Modified to get access to the separate table of primitive
	operations or the parent type.
	(Set_Predefined_Prim_Op_Address): New subprogram that provides the same
	functionality of Set_Prim_Op_Address but applied to predefined primitive
	operations.
	(Set_Signature): New subprogram used to store the signature of a DT.
	(Displace): If the Offset_To_Top value is not static then call the
	function generated by the expander to get such value; otherwise use
	the value stored in the table of interfaces.
	(Offset_To_Top): The type of the actual has been changed to Address to
	give the correct support to tagged types with discriminants. In this
	case this value is stored just immediately after the tag field.
	(Set_Offset_To_Top): Two new formals have been added to indicate if the
	offset_to_top value is static and hence pass this value to the run-time
	to store it in the table of interfaces, or else if this value is dynamic
	and then pass to the run-time the address of a function that is
	generated by the expander to provide this value for each object of the
	type.

	* rtsfind.ads (Default_Prin_Op_Count): Removed.
	(Default_Prim_Op_Count): New entity
	(Get_Predefined_Prim_Op_Address): New entity
	(Set_Predefined_Prim_Op_Address): New entity
	(RE_Set_Signature): New entity

2006-02-13  Thomas Quinot  <quinot@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to
	Make_Adjust_Call done for a newly-allocated object.

	* exp_ch7.ads, exp_ch7.adb (Expand_Cleanup_Actions): If the statements
	in a subprogram are wrapped in a cleanup block, indicate that the
	subprogram contains an inner block with an exception handler.
	(Make_Adjust_Call): New Boolean formal Allocator indicating whether the
	Adjust call is for a newly-allocated object. In that case we must not
	assume that the finalization list chain pointers are correct (since they
	come from a bit-for-bit copy of the original object's pointers) so if
	the attach level would otherwise be zero (no change), we set it to 4
	instead to cause the pointers to be reset to null.

	* s-finimp.adb (Attach_To_Final_List): New attach level: 4, meaning
	reset chain pointers to null.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Assign_Array): If the right-hand side is a
	string, and the context requires a loop for the assignment (e.g.
	because the left-hand side is packed), generate a unique name for the
	temporary that holds the string, to prevent spurious name clashes.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_ch6.adb (Expand_Inlined_Call): Handle calls to functions that
	return unconstrained arrays.
	Update comments.
	(Expand_Call):  An indirect call through an access parameter of a
	protected operation is not a protected call.
	Add circuit to raise CE in Ada 2005 mode following call
	to Raise_Exception.
	(Register_DT_Entry): Do nothing if
	the run-time does not give support to abstract interfaces.
	(Freeze_Subprogram): In case of dispatching operations, do not generate
	code to register the operation in the dispatch table if the source
	is compiled with No_Dispatching_Calls.
	(Register_Predefined_DT_Entry): Generate code that calls the new
	run-time subprogram Set_Predefined_Prim_Op_Address instead of
	Set_Prim_Op_Address.

	* sem_ch5.adb (Analyze_Assignment_Statement): Do not apply length checks
	on array assignments if the right-hand side is a function call that has
	been inlined. Check is performed on the assignment in the block.
	(Process_Bounds): If bounds and range are overloaded, apply preference
	rule for root operations to disambiguate, and diagnose true ambiguity.
	(Analyze_Assignment): Propagate the tag for a class-wide assignment with
	a tag-indeterminate right-hand side even when Expander_Active is True.
	Needed to ensure that dispatching calls to T'Input are allowed and
	get the tag of the target class-wide object.

	* sem_ch6.adb (New_Overloaded_Entity): Handle entities that override
	an inherited primitive operation that already overrides several
	abstract interface primitives. For transitivity, the new entity must
	also override all the abstract interface primitives covered by the
	inherited overriden primitive.
	Emit warning if new entity differs from homograph in same scope only in
	that one has an access parameter and the other one has a parameter of
	a general access type with the same designated type, at the same
	position in the signature.
	(Make_Inequality_Operator): Use source locations of parameters and
	subtype marks from corresponding equality operator when creating the
	tree structure for the implicit declaration of "/=". This does not
	change anything in behaviour except that the decoration of the
	components of the subtree created for "/=" allows ASIS to get the
	string images of the corresponding identifiers.
	(Analyze_Return_Statement): Remove '!' in warning message.
	(Check_Statement_Sequence): Likewise.
	(Analyze_Subprogram_Body): For an access parameter whose designated type
	is an incomplete type imported through a limited_with clause, use the
	type of the corresponding formal in the body.
	(Check_Returns): Implicit return in No_Return procedure now raises
	Program_Error with a compile time warning, instead of beging illegal.
	(Has_Single_Return):  Function returning unconstrained type cannot be
	inlined if expression in unique return statement is not an identifier.
	(Build_Body_To_Inline): It is possible to inline a function call that
	returns an unconstrained type if all return statements in the function
	return the same local variable. Subsidiary procedure Has_Single_Return
	verifies that the body conforms to this restriction.

	* sem_res.adb (Resolve_Equality_Op): If the operands do not have the
	same type, and  one of them is of an anonymous access type, convert
	the other operand to it, so that this is a valid binary operation for
	gigi.
	(Resolve_Type_Conversion): Handle subtypes of protected types and
	task types when accessing to the corresponding record type.
	(Resolve_Allocator): Add '\' in 2-line warning message.
	Remove '!' in warning message.
	(Resolve_Call): Add '\' in 2-line warning message.
	(Valid_Conversion): Likewise.
	(Resolve_Overloaded_Selected_Component): If disambiguation succeeds, the
	resulting type may be an access type with an implicit dereference.
	Obtain the proper component from the designated type.
	(Make_Call_Into_Operator): Handle properly a call to predefined equality
	given by an expanded name with prefix Standard, when the operands are
	of an anonymous access type.
	(Check_Fully_Declared_Prefix): New procedure, subsidiary of Resolve_
	Explicit_Dereference and Resolve_Selected_Component, to verify that the
	prefix of the expression is not of an incomplete type. Allows full
	diagnoses of all semantic errors.
	(Resolve_Actuals): If the actual is an allocator whose directly
	designated type is a class-wide interface we build an anonymous
	access type to use it as the type of the allocator. Later, when
	the subprogram call is expanded, if the interface has a secondary
	dispatch table the expander will add a type conversion to force
	the displacement of the pointer.
	(Resolve_Call): If a function that returns an unconstrained type is
	marked Inlined_Always and inlined, the call will be inlined and does
	not require the creation of a transient scope.
	(Check_Direct_Boolean_Op): Removed
	(Resolve_Comparison_Op): Remove call to above
	(Resolve_Equality_Op): Remove call to above
	(Resolve_Logical_Op): Inline above, since this is only call.
	(Valid_Conversion): Handle properly conversions between arrays of
	convertible anonymous access types.

	PR ada/25885
	(Set_Literal_String_Subtype): If the lower bound is not static, wrap
	the literal in an unchecked conversion, because GCC 4.x needs a static
	value for a string bound.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.adb (Expand_N_Protected_Type_Declaration): When creating the
	components of the corresponding record, take into account component
	definitions that are access definitions.
	(Expand_N_Asynchronous_Select): A delay unit statement rewritten as a
	procedure is not considered a dispatching call and will be expanded
	properly.

2006-02-13  Javier Miranda  <miranda@adacore.com>

	* exp_disp.ads, exp_disp.adb (Expand_Dispatching_Call): If the
	controlling argument of the dispatching call is an abstract interface
	class-wide type then we use it directly.
	Check No_Dispatching_Calls restriction.
	(Default_Prim_Op_Position): Remove the code that looks for the last
	entity in the list of aliased subprograms. This code was wrong in
	case of renamings.
	(Fill_DT_Entry): Add assertion to avoid the use of this subprogram
	when the source is compiled with the No_Dispatching_Calls restriction.
	(Init_Predefined_Interface_Primitives): No need to inherit primitives
	if we are compiling with restriction No_Dispatching_Calls.
	(Make_Disp_XXX): Addition of assertion to avoid the use of all these
	subprograms if we are compiling under No_Dispatching_Calls restriction.
	(Make_DT): Generate a dispatch table with a single dummy entry if
	we are compiling with the No_Dispatching_Calls restriction. In
	addition, in this case we don't generate code that calls to the
	following run-time subprograms: Set_Type_Kind, Inherit_DT.
	(Make_Select_Specific_Data_Table): Add assertion to avoid the use
	of this subprogram if compiling with the No_Dispatching_Calls
	restriction.
	(Expand_Type_Conversion): Instead of using the actual parameter,
	the argument passed as parameter to the conversion function was
	erroneously referenced by the expander.
	(Ada_Actions): Addition of Get_Predefined_Prim_Op_Address,
	Set_Predefined_Primitive_Op_Address and Set_Signature.
	(Expand_Dispatching_Call): Generate call to
	Get_Predefined_Prim_Op_Address for predefined primitives.
	(Fill_DT_Entry): Generate call to Set_Predefined_Prim_Op_Address for
	predefined primitives.
	(Make_DT, Make_Secondary_DT): If the tagged type has no user defined
	primitives we reserve one dummy entry to ensure that the tag does not
	point to some memory that is associated with some other object. In
	addition, remove all the old code that generated the assignments
	associated with the signature of the dispatch table and replace them
	by a call to the new subprogram Set_Signature.
	(Set_All_DT_Position): Change the algorithm because now we have a
	separate dispatch table associated with predefined primitive operations.
	(Expand_Interface_Conversion): In case of non-static offset_to_top
	add explicit dereference to get access to the object after the call
	to displace the pointer to the object.
	(Expand_Interface_Thunk): Modify the generation of the actual used
	in the calls to the run-time function Offset_To_Top to fulfil its
	new interface.
	(Make_DT): Add the new actuals required to call Set_Offset_To_Top.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>

	* exp_dist.adb (Copy_Specification): For access parameters, copy
	Null_Exclusion flag, which will have been set for stream subprograms
	in Ada2005 mode.

2006-02-13  Pascal Obry  <obry@adacore.com>

	* expect.c (__gnat_expect_portable_execvp): New implementation. The
	previous implementation was using the C runtime spawnve routine but
	the corresponding wait was using directly the Win32 API. This was
	causing some times a lock when waiting for an event using
	WaitForSingleObject in __gnat_waitpid. This new implementation uses
	the Win32 CreateProcess routine. Avoiding mixing C runtime and Win32
	API fixes this problem.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): Correct error of bad analyze
	call.

2006-02-13  Thomas Quinot  <quinot@adacore.com>

	* exp_pakd.ads: Fix typos in comments.

	* exp_pakd.adb (Convert_To_PAT_Type): For the case of a bit packed
	array reference that is an explicit dereference, mark the converted
	(packed) array reference as analyzed to prevent a forthcoming
	reanalysis from resetting its type to the original (non-packed) array
	type.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

	* exp_util.ads, exp_util.adb (Find_Prim_Op,
	Is_Predefined_Primitive_Operation): When
	searching for the predefined equality operator, verify that operands
	have the same type.
	(Is_Predefined_Dispatching_Operation): Remove the code that looks
	for the last entity in the list of aliased subprograms. This code
	was wrong in case of renamings.
	(Set_Renamed_Subprogram): New procedure
	(Remove_Side_Effects): Replace calls to Etype (Exp) with use of the
	Exp_Type constant computed when entering this subprogram.
	(Known_Null): New function
	(OK_To_Do_Constant_Replacement): New function
	(Known_Non_Null): Check scope before believing Is_Known_Non_Null flag
	(Side_Effect_Free): An attribute reference 'Input is not free of
	side effect, unlike other attributes that are functions. (from code
	reading).
	(Remove_Side_Effects): Expressions that involve packed arrays or records
	are copied at the point of reference, and therefore must be marked as
	renamings of objects.
	(Is_Predefined_Dispatching_Operation): Return false if the operation is
	not a dispatching operation.

	PR ada/18819
	(Remove_Side_Effects): Lift enclosing type conversion nodes for
	elementary types in all cases.

2006-02-13  Javier Miranda  <miranda@adacore.com>

	* freeze.adb (Freeze_Entity): Handle subtypes of protected types and
	task types when accessing to the corresponding record type.
	Remove '!' in warning message.

2006-02-13  Olivier Hainque  <hainque@adacore.com>

	* g-altive.ads (VECTOR_ALIGNMENT): Set to Min (16, Max_Alignment),
	to avoid useless and space inefficient overalignments on targets where
	Max_Alignment is larger than 16.

2006-02-13  Pascal Obry  <obry@adacore.com>

	* g-catiio.adb (Sec_Number): New type used to compute the number of
	seconds since 1-1-1970.
	(Image) [Natural]: The parameter was an Integer, as we can't deal with
	negative numbers (years, months...) it is better to have a Natural here.
	Code clean-up.
	(Image) [Number]: Change parameter from Long_Integer to Number.
	(Image): Use Number type to compute the seconds since 1-1-1970 to fix an
	overflow for dates past year 2038.

2006-02-13  Matthew Heaney  <heaney@adacore.com>

	*  g-dyntab.adb (Index_Of): conversion from Natural can no longer raise
	Constraint_Error.

2006-02-13  Arnaud Charlet  <charlet@adacore.com>

	* gnatbind.adb (Scan_Bind_Arg): Replace error by warning on -M and
	native platforms.
	(Gnatbind): Do not call Exit_Program (E_Success) at the end, so that
	finalization can occur normally.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (Rules_Switches): New table
	(Add_To_Rules_Switches): New procedure
	(GNATCmd): For command CHECK, put all options following "-rules" in the
	Rules_Switches table. Append these -rules switches after the -cargs
	switches.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* g-spipat.adb (Image, case PC_Assign_Imm and case PC_Assign_OnM):
	These two cases were generating incorrect output, and if this unit
	was built with checks on, generated a discriminant mismatch constraint
	error.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* lib-xref.adb (Get_Type_Reference): For a private type whose full
	view is an array type, indicate the component type as well, for
	navigation purposes.
	(Generate_Reference): Don't consider array ref on LHS to be a case
	of violating pragma Unreferenced.
	Do not give Ada 2005 warning except on real reference.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* make.adb (Collect_Arguments_And_Compile): For VMS, when compiling the
	main source, add switch -mdebug-main=_ada_ so that the executable can
	be debugged by the standard VMS debugger.
	(Gnatmake): Set No_Main_Subprogram to True when there is no main
	subprogram, to avoid issuing -mdebug-main=_ada_ for VMS uselessly.
	Exit the Multi_Main_Loop when Unique_Compile is True after compilation
	of the last source, as the binding and linking phases are never
	performed.
	Set all executable obsolete when rebuilding a library.

	* makeutl.adb (Linker_Options_Switches): Do not process empty linker
	options.

2006-02-13  Javier Miranda  <miranda@adacore.com>

	PR ada/23973
	* par-ch3.adb (P_Derived_Type_Def_Or_Private_Ext_Decl): Reorganize the
	code to improve the error message reported when the program has
	declarations of abstract interface types and it is not compiled with
	the -gnat05 switch.
	(P_Access_Definition): Reorganize the code to improve the error
	message reported when the new Ada 2005 syntax for anonymous
	access types is used and the program is not compiled with the
	-gnat05 switch.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* par-ch6.adb, style.ads, styleg.adb, styleg.ads, stylesw.adb,
	stylesw.ads, usage.adb, vms_data.ads: Implement -gnatyI switch
	(MODE_IN)

2006-02-13  Javier Miranda  <miranda@adacore.com>

	* par-endh.adb (Explicit_Start_Label): Add code to protect the parser
	against source containing syntax errors.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* prj.adb (Reset): Initialize the first element of table Namings with
	the standard naming data.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* prj.ads (Error_Warning): New enumeration type

	* prj-nmsc.ads, prj-nmsc.adb (Error_Msg): If location parameter is
	unknown, use the location of the project to report the error.
	(When_No_Sources): New global variable
	(Report_No_Ada_Sources): New procedure
	(Check): New parameter When_No_Sources. Set value of global variable
	When_No_Sources,
	(Find_Sources): Call Report_No_Ada_Sources when appropriate
	(Get_Sources_From_File): Ditto
	(Warn_If_Not_Sources): Better warning messages indicating the unit name
	and the file name.

	* prj-pars.ads, prj-pars.adb (Parse): New parameter When_No_Sources.
	Call Prj.Proc.Process with parameter When_No_Sources.

	* prj-proc.ads, prj-proc.adb (Check): New parameter When_No_Sources.
	Call Recursive_Check with parameter When_No_Sources.
	(Recursive_Check): New parameter When_No_Sources. Call itself and
	Prj.Nmsc.Check with parameter When_No_Sources.
	(Process): New parameter When_No_Sources. Call Check with parameter
	When_No_Sources.
	(Copy_Package_Declarations): New procedure to copy renamed parameters
	and setting the location of the declared attributes to the location
	of the renamed package.
	(Process_Declarative_Items): Call Copy_Package_Declarations for renamed
	packages.

2006-02-13  Vincent Celier  <celier@adacore.com>

	* prj-makr.adb (Make): Preserve the comments from the original project
	file.
	When removing nodes (attributes Source_Dirs, Source_Files,
	Source_List_File and package Naming), save the comments and attach the
	saved comments to the newly created nodes.
	Do not add a with clause for the naming package if one already exists.

2006-02-13  Javier Miranda  <miranda@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* restrict.ads (No_Dispatching_Calls): New GNAT restriction.

	* sem_disp.adb (Override_Dispatching_Operation): Traverse the list of
	aliased entities to look for the overriden abstract interface
	subprogram.
	(Is_Interface_Subprogram): Complete documentation.
	(Check_Dispatching_Operation): Do not generate code to register the
	operation in the dispatch table if the source is compiled with
	restriction No_Dispatching_Calls.
	(Override_Dispatching_Operation): Check for illegal attempt to override
	No_Return procedure with procedure that is not No_Return
	(Check_Dispatching_Call): Suppress the check for an abstract operation
	when the original node of an actual is a tag-indeterminate attribute
	call, since the attribute, which must be 'Input, can never be abstract.
	(Is_Tag_Indeterminate): Handle checking of tag indeterminacy of a
	call to the Input attribute (even when rewritten).
	(Propagate_Tag): Augment comment to indicate the possibility of a call
	to an Input attribute.

	* sem_disp.ads (Override_Dispatching_Operation): Moved to spec to allow
	calling it from Exp_Ch3.Make_Controlling_Function_Wrappers.

	* s-rident.ads: (No_Dispatching_Calls): New GNAT restriction.
	No_Wide_Characters is no longer partition-wide
	No_Implementation_Attributes/Pragmas are now Ada 2005 (AI-257)
	rather than GNAT

2006-02-13  Douglas Rupp  <rupp@adacore.com>

	* s-auxdec-vms_64.ads (Short_Address): Wrap it in a type.

2006-02-13  Javier Miranda  <miranda@adacore.com>

	* sem_aggr.adb (Resolve_Record_Aggregate): Restructure the code that
	handles default-initialized components to keep separate the management
	of this feature but also avoid the unrequired resolution and
	expansion of components that do not have partially initialized
	values.
	(Collect_Aggr_Bounds): Add '\' in 2-line warning message.
	(Check_Bounds): Likewise.
	(Check_Length): Likewise.

2006-02-13  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute): In case of 'Class applied to an
	abstract interface type call analyze_and_resolve to expand the type
	conversion into the corresponding displacement of the
	reference to the base of the object.
	(Eval_Attribute, case Width): For systems where IEEE extended precision
	is supported, the maximum exponent occupies 4 decimal digits.
	(Accessibility_Message): Add '\' in 2-line warning message.
	(Resolve_Attribute): Likewise.
	(case Attribute_Access): Significantly revise checks
	for illegal access-to-subprogram Access attributes to properly enforce
	the rules of 3.10.2(32/2).
	Diagnose use of current instance with an illegal attribute.

	* sem_util.ads, sem_util.adb (Enclosing_Generic_Body): Change formal
	to a Node_Id.
	(Enclosing_Generic_Unit): New function to return a node's innermost
	enclosing generic declaration node.
	(Compile_Time_Constraint_Error): Remove '!' in warning messages.
	(Type_Access_Level): The accessibility level of anonymous acccess types
	associated with discriminants is that of the current instance of the
	type, and that's deeper than the type itself (AARM 3.10.2 (12.3.21)).
	(Compile_Time_Constraint_Error): Handle case of conditional expression.
	(Kill_Current_Values_For_Entity): New function
	(Enter_Name): Change formal type to Entity_Id

2006-02-13  Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* sem_ch10.adb (Check_Redundant_Withs): New procedure in
	Analyze_Compilation_Unit.
	Detect and warn on redundant with clauses detected in a package spec
	and/or body when -gnatwr is used.
	(Analyze_Context): Analyze config pragmas before other items
	(Install_Context_Items): Don't analyze config pragmas here
	(Install_Limited_Withed_Unit): Set limited entity of package in
	with_clause so that cross-reference information or warning messages on
	unused packages can be properly generated
	(Is_Visible_Through_Renamings): Return false if the limited_with_clause
	has Error_Posted set. Prevent infinite loops in illegal programs.
	(Check_Private_Child_Unit): Move test for a nonprivate with clause down
	to the point of the error test requiring the current unit to be private.
	This ensures that private with clauses are not exempted from the basic
	checking for being a descendant of the same library unit parent as a
	withed private descendant unit.
	(Check_Private_Limited_Withed_Unit): Revise the checking algorithm to
	handle private with clauses properly, as well as to account for cases
	where the withed unit is a public descendant of a private ancestor
	(in which case the current unit must be a descendant of the private
	ancestor's parent). The spec comments were updated accordingly. Also,
	the old error message in this subprogram was replaced with error
	messages that mirror the errors tested and reported by
	Check_Private_Child_Unit.
	Parameter and variable names improved for readability.
	(Install_Limited_Context_Clauses): Remove test for a withed unit being
	private as the precondition for calling
	Check_Private_Limited_Withed_Unit since that subprogram has been
	revised to test public units as well as private units.

2006-02-13  Thomas Quinot  <quinot@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch12.adb (Inline_Instance_Body): Remove erroneous assumption
	that Scope_Stack.First = 1.
	Properly handle Ada_Version_Explicit and Ada_Version_Config, which
	were not always properly handled previously.
	(Formal_Entity): Complete rewrite, to handle properly some complex case
	with multiple levels of parametrization by formal packages.
	(Analyze_Formal_Derived_Type): Propagate Ada 2005 "limited" indicator
	to the corresponding derived type declaration for proper semantics.

	* sem_prag.adb (Analyze_Pragma): Remove '!' in warning message.
	(Check_Component): Enforce restriction on components of
	unchecked_unions: a component in a variant cannot contain tasks or
	controlled types.
	(Unchecked_Union): Allow nested variants and multiple discriminants, to
	conform to AI-216.
	Add pragma Ada_2005 (synonym for Ada_05)
	Properly handle Ada_Version_Explicit and Ada_Version_Config, which
	were not always properly handled previously.
	Document that pragma Propagate_Exceptions has no effect
	(Analyze_Pragma, case Pure): Set new flag Has_Pragma_Pure
	(Set_Convention_From_Pragma): Check that if a convention is
	specified for a dispatching operation, then it must be
	consistent with the existing convention for the operation.
	(CPP_Class): Because of the C++ ABI compatibility, the programmer is no
	longer required to specify an vtable-ptr component in the record. For
	compatibility reasons we leave the support for the previous definition.
	(Analyze_Pragma, case No_Return): Allow multiple arguments

	* sem_ch3.ads, sem_ch3.adb (Check_Abstract_Overriding): Flag a
	non-overrideen inherited operation with a controlling result as
	illegal only its implicit declaration comes from the derived type
	declaration of its result's type.
	(Check_Possible_Deferred_Completion): Relocate the object definition
	node of the subtype indication of a deferred constant completion rather
	than directly analyzing it. The analysis of the generated subtype will
	correctly decorate the GNAT tree.
	(Record_Type_Declaration): Check whether this is a declaration for a
	limited derived record before analyzing components.
	(Analyze_Component_Declaration): Diagnose record types  not explicitly
	declared limited when a component has a limited type.
	(Build_Derived_Record_Type): Code reorganization to check if some of
	the inherited subprograms of a tagged type cover interface primitives.
	This check was missing in case of a full-type associated with a private
	type declaration.
	(Constant_Redeclaration): Check that the subtypes of the partial and the
	full view of a constrained deferred constant statically match.
	(Mentions_T): A reference to the current type in an anonymous access
	component declaration  must be an entity name.
	(Make_Incomplete_Type_Declaration): If type is tagged, set type of
	class_wide type to refer to full type, not to the incomplete one.
	(Add_Interface_Tag_Components): Do nothing if RE_Interface_Tag is not
	available. Required to give support to the certified run-time.
	(Analyze_Component_Declaration): In case of anonymous access components
	perform missing checks for AARM 3.9.2(9) and 3.10.2 (12.2).
	(Process_Discriminants): For an access discriminant, use the
	discriminant specification as the associated_node_for_itype, to
	simplify accessibility checks.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch4.adb (Remove_Abstract_Interpretations): Even if there are no
	abstract interpretations on an operator, remove interpretations that
	yield Address or a type derived from it, if one of the operands is an
	integer literal.
	(Try_Object_Operation.Try_Primitive_Operation,
	Try_Object_Operation.Try_Class_Wide_Operation): Set proper source
	location when creating the new reference to a primitive or class-wide
	operation as a part of rewriting a subprogram call.
	(Try_Primitive_Operations): If context requires a function, collect all
	interpretations after the first match, because there may be primitive
	operations of the same type with the same profile and different return
	types. From code reading.
	(Try_Primitive_Operation): Use the node kind to choose the proper
	operation when a function and a procedure have the same parameter
	profile.
	(Complete_Object_Operation): If formal is an access parameter and prefix
	is an object, rewrite as an Access reference, to match signature of
	primitive operation.
	(Find_Equality_Type, Find_One_Interp): Handle properly equality given
	by an expanded name with prefix Standard, when the operands are of an
	anonymous access type.
	(Remove_Abstract_Operations): If the operation is abstract because it is
	inherited by a user-defined type derived from Address, remove it as
	well from the set of candidate interpretations of an overloaded node.
	(Analyze_Membership_Op): Membership test not applicable to cpp-class
	types.

2006-02-13  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb (Note_Redundant_Use): Suppress unhelpful warning about
	redundant use clauses.
	In particular, if the scope of two use clauses overlaps, but one is not
	entirely included in the other, we should not warn.  This can happen
	with nested packages.
	(Analyze_Subprogram_Renaming): Protect the compiler against previously
	reported errors. The bug was reported when the compiler was built
	with assertions enabled.
	(Find_Type): If the node is a 'Class reference and the prefix is a
	synchronized type without a corresponding record, return the type
	itself.

2006-02-13  Javier Miranda  <miranda@adacore.com>

	* sem_ch9.adb (Analyze_Protected_Type, Analyze_Task_Type): Check that
	if this is the full-declaration associated with a private declaration
	that implement interfaces, then the private type declaration must be
	limited.
	(Analyze_Single_Protected, Analyze_Single_Task): Do not mark the object
	as aliased. The use of the 'access attribute is not available for such
	object (for this purpose the object should be explicitly marked as
	aliased, but being an anonymous type this is not possible).

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sem_elab.adb (Same_Elaboration_Scope): A package that is a
	compilation unit is an elaboration scope.
	(Add_Task_Proc): Add '\' in 2-line warning message.
	(Activate_All_Desirable): Deal with case of unit with'ed by parent

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_type.adb (Write_Overloads): Improve display of candidate
	interpretations.
	(Add_One_Interp): Do not add to the list of interpretations aliased
	entities corresponding with an abstract interface type that is an
	immediate ancestor of a tagged type; otherwise we have a dummy
	conflict between this entity and the aliased entity.
	(Disambiguate): The predefined equality on universal_access is not
	usable if there is a user-defined equality with the proper signature,
	declared in the same declarative part as the designated type.
	(Find_Unique_Type): The universal_access equality operator defined under
	AI-230 does not cover pool specific access types.
	(Covers): If one of the types is a generic actual subtype, check whether
	it matches the partial view of the other type.

2006-02-13  Thomas Quinot  <quinot@adacore.com>

	* sinput-d.adb (Write_Line): Update the Source_Index_Table after each
	line. This is necessary to allow In_Extended_Main_Unit to provide
	correct results for itypes while writing out expanded source.
	(Close_File): No need to update the source_index_table here since it's
	now done for each line.

2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* sprint.adb (Write_Itype): Preserve Sloc of declaration, if any, to
	preserve the source unit where the itype is declared, and prevent a
	backend abort.
	(Note_Implicit_Run_Time_Call): New procedure
	(Write_Itype): Handle missing cases (E_Class_Wide_Type and
	E_Subprogram_Type)

	* sprint.ads: Document use of $ for implicit run time routine call

2006-02-13  Quentin Ochem  <ochem@adacore.com>

	* s-stausa.adb (Initialize_Analyzer): fixed error in assignment of
	task name.

2006-02-13  Bob Duff  <duff@adacore.com>

	* s-valint.adb (Scan_Integer): Call Scan_Raw_Unsigned instead of
	Scan_Unsigned, so we do not scan leading blanks and sign twice.
	Integer'Value("- 5") and Integer'Value("-+5") now correctly
	raise Constraint_Error.

	* s-vallli.adb (Scan_Long_Long_Integer): Call
	Scan_Raw_Long_Long_Unsigned instead of Scan_Long_Long_Unsigned, so we
	do not scan leading blanks and sign twice.
	Integer'Value("- 5") and Integer'Value("-+5") now correctly
	raise Constraint_Error.

	* s-valllu.ads, s-valllu.adb (Scan_Raw_Long_Long_Unsigned,
	Scan_Long_Long_Unsigned): Split out most of the processing from
	Scan_Long_Long_Unsigned out into
	Scan_Raw_Long_Long_Unsigned, so that Val_LLI can call the Raw_ version.
	This prevents scanning leading blanks and sign twice.
	Also fixed a bug: Modular'Value("-0") should raise Constraint_Error
	See RM-3.5(44).

	* s-valuns.ads, s-valuns.adb (Scan_Raw_Unsigned, Scan_Unsigned): Split
	out most of the processing from Scan_Unsigned out into
	Scan_Raw_Unsigned, so that Val_LLI can call the Raw_ version.
	This prevents scanning leading blanks and sign twice.

	* s-valuti.ads, s-valuti.adb (Scan_Plus_Sign): Add Scan_Plus_Sign, for
	use with Modular'Value attribute.
	(Scan_Plus_Sign): Add Scan_Plus_Sign, for use with Modular'Value
	attribute.

2006-02-13  Robert Dewar  <dewar@adacore.com>

	* s-wchjis.adb (JIS_To_EUC): Raise Constraint_Error for invalid value

2006-02-13  Eric Botcazou  <ebotcazou@adacore.com>

	* tracebak.c (PPC AIX/Darwin): Define FORCE_CALL to 1.
	(PPC VxWorks): Likewise.
	(Generic unwinder): Define FORCE_CALL to 0 if not already defined.
	(forced_callee): Make non-inlinable and non-pure.
	(__gnat_backtrace): Call forced_callee if FORCE_CALL is set to 1.

2006-02-13  Arnaud Charlet  <charlet@adacore.com>
	    Ben Brosgol  <brosgol@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* gnat_rm.texi, gnat_ugn.texi: Remove limitations with sparc m64
	support.
	Document that gnatbind -M option is for cross environments only.
	Added description of using gnatmem to trace gnat rtl allocs and deallocs
	Add note on use of $ to label implicit run time calls
	Add documentation for -gnatyI (check mode IN)
	Updated chapter on compatibility with HP Ada
	VMS-oriented edits.
	Ran spell and corrected errors
	Add documentation for gnatbind -d and rework documentation of -D
	at the same time.
	Add subprogram/data elimination section.
	Minor editing of annex A.
	Add section for gnatcheck.
	Add documentation for restriction No_Dispatching_Calls
	Add documentation for pragma Ada_2005
	Remove mention of obsolete pragma Propagate_Exceptions
	Document that pragma Unreferenced can appear after DO in ACCEPT
	Clarify Pure_Function for library level units
	Mention Max/Min in connection with No_Implicit_Conditionals
	No_Wide_Characters restriction is no longer partition-wide
	Add a nice example for Universal_Literal_String attribute
	Document that pragma No_Return can take multiple arguments

	* ug_words: Added entry for gnatcheck

	* g-ctrl_c.ads (Install_Handler): Enhance comments

	* g-os_lib.ads: Add comments to OS_Exit that it is abrupt termination

	* g-trasym.ads: Add documentation on how to do off line symbolic
	traceback computation.

	* s-fatgen.adb: Add comments for Unaligned_Valid

	* stand.ads: Fix typo in comment

2006-02-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Make-lang.in (check-gnat): Run run_acats with $(SHELL).

2006-02-06  Roger Sayle  <roger@eyesopen.com>

	* decl.c (gnat_substitute_in_type): Don't handle CHAR_TYPE.

2006-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/25926
	* initialize.c (__gnat_initialize): Provide HP-UX 10 host and target
	implementation that calls __main.

2006-01-25  Peter O'Gorman  <peter@pogma.com>

	PR bootstrap/25859
	* Makefile.in (GCC_LINK): Remove quotes.
	(tools targets): Link with either $(GNATLINK) --GCC="$(GCC_LINK)"
	or $(GCC_LINK).

	(powerpc-darwin): Pass -shared-libgcc when building shared library.

2006-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR ada/24533
	* s-osinte-linux-hppa.ads: Reduce alignment of atomic_lock_t to 8.


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