1. 14 Aug, 2007 40 commits
    • sem_cat.ads, [...] (Has_Stream_Attribute_Definition): New formal At_Any_Place indicating... · fe685905
      2007-08-14  Thomas Quinot  <quinot@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_cat.ads, sem_cat.adb (Has_Stream_Attribute_Definition): New
      	formal At_Any_Place indicating, when True, that we want to test for
      	availability of the stream attribute at any place (as opposed to the
      	current visibility context only).
      	(Missing_Read_Write_Attributes): A stream attribute is missing for the
      	purpose of enforcing E.2.2(8) only if it is not available at any place.
      	Take into account the Ada2005 pragma Has_Preelaborable_Initialization
      	when checking the legality of an extension aggregate in a preelaborable
      	package. Treat the literal null as a valid default expression in a
      	component declaration for a type with preelaborable initialization.
      	A limited interface is a legal progenitor for the designated type of a
      	remote access to class-wide type.
      
      From-SVN: r127445
      Thomas Quinot committed
    • sem_ch4.adb (Try_Class_Wide_Operation): use base type of first parameter to… · 401093c1
      sem_ch4.adb (Try_Class_Wide_Operation): use base type of first parameter to determine whether operation applies to the...
      
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch4.adb (Try_Class_Wide_Operation): use base type of first
      	parameter to determine whether operation applies to the prefix.
      	(Complete_Object_Operation): If actual has an access type and
      	controlling formal is not an in_parameter, reject the actual if it is
      	an access_to_constant type.
      	(Try_Primitive_Operation): If the type of the prefix is a formal tagged
      	type, the candidate operations are found in the scope of declaration of
      	the type, because the type has no primitive subprograms.
      	(Analyze_Selected_Component): If prefix is class-wide, and root type is
      	a private extension, only examine visible components before trying to
      	analyze as a prefixed call.
      	Change Entity_List to Type_To_Use, for better readability.
      	(Has_Fixed_Op): Use base type when checking whether the type of an
      	operator has a user-defined multiplication/division
      	(Check_Arithmetic_Pair): Use Ada 2005 rules to remove ambiguities when
      	user-defined operators are available for fixed-point types.
      
      From-SVN: r127444
      Ed Schonberg committed
    • sem_ch12.ads, [...] (Instantiate_Type): If the formal is a derived type with… · 1c0ce9d8
      sem_ch12.ads, [...] (Instantiate_Type): If the formal is a derived type with interface progenitors use the analyzed...
      
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      	    Gary Dismukes  <dismukes@adacore.com>
      	    Thomas Quinot  <quinot@adacore.com>
      
      	* sem_ch12.ads, sem_ch12.adb (Instantiate_Type): If the formal is a
      	derived type with interface progenitors use the analyzed formal as the
      	parent of the actual, to create renamings for all the inherited
      	operations in Derive_Subprograms.
      	(Collect_Previous_Instances): new procedure within of
      	Load_Parent_Of_Generic, to instantiate all bodies in the compilation
      	unit being loaded, to ensure that the generation of global symbols is
      	consistent in different compilation modes.
      	(Is_Tagged_Ancestor): New function testing the ancestor relation that
      	takes progenitor types into account.
      	(Validate_Derived_Type_Instance): Enforce the rule of 3.9.3(9) by
      	traversing over the primitives of the formal and actual types to locate
      	any abstract subprograms of the actual type that correspond to a
      	nonabstract subprogram of the formal type's ancestor type(s), and issue
      	an error if such is found.
      	(Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation,
      	Instantiate_Package_Body, Instantiate_Subprogram_Body):
      	Remove bogus guard around calls to Inherit_Context.
      	(Reset_Entity): If the entity is the selector of a selected component
      	that denotes a named number, propagate constant-folding to the generic
      	template only if the named number is global to the generic unit.
      	(Set_Instance_Env): Only reset the compilation switches when compiling
      	a predefined or internal unit.
      
      From-SVN: r127443
      Ed Schonberg committed
    • table.adb, [...] (Append): Reimplement in terms of Set_Item. · 1d6f10a1
      2007-08-14  Thomas Quinot  <quinot@adacore.com>
      
      	* table.adb, g-table.adb, g-dyntab.adb (Append): Reimplement in terms
      	of Set_Item.
      	(Set_Item): When the new item is an element of the currently allocated
      	table passed by reference, save a copy on the stack if we're going
      	to reallocate. Also, in Table.Set_Item, make sure we test the proper
      	variable to determine whether to call Set_Last.
      
      	* sinput-d.adb, sinput-l.adb, stringt.adb, switch-m.adb,
      	symbols-vms.adb, symbols-processing-vms-alpha.adb,
      	symbols-processing-vms-ia64.adb, sem_elab.adb, repinfo.adb: Replace
      	some occurrences of the pattern
      	   T.Increment_Last;
      	   T.Table (T.Last) := Value;
      	with a cleaner call to
      	   T.Append (Value);
      
      From-SVN: r127442
      Thomas Quinot committed
    • a-cihama.ads, [...] (Next): Applied pragma Inline. · f97ccb3a
      2007-08-14  Bob Duff  <duff@adacore.com>
      
      	* a-cihama.ads, a-cidlli.ads, a-chtgop.ads, a-chtgop.adb, a-cdlili.ads, 
      	a-cihase.adb, a-cihase.ads, a-cohase.adb, a-cohase.ads, a-ciorma.ads, 
      	a-coorma.ads, a-ciormu.ads, a-coormu.ads, a-ciorse.ads, a-cohama.ads, 
      	a-cohata.ads, a-convec.adb, a-coinve.ads, a-coinve.adb, a-convec.ads,
      	a-coorse.ads (Next): Applied pragma Inline.
      	Make all Containers packages Remote_Types (unless they are already
      	Pure).
      	(Previous): applied pragma Inline
      	(Elements_Type): is now a record instead of an array
      
      From-SVN: r127441
      Bob Duff committed
    • s-intman-irix.adb, [...]: Minor reformatting · b11e8d6f
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      
      	* s-intman-irix.adb, s-osinte-irix.adb, s-osinte-irix.ads,
      	s-proinf-irix-athread.ads, s-osinte-hpux-dce.adb, s-osinte-hpux-dce.ads,
      	s-parame-hpux.ads, s-intman-dummy.adb, s-tasinf-solaris.adb,
      	s-tasinf-solaris.ads, s-asthan-vms-alpha.adb, s-inmaop-vms.adb,
      	s-intman-vms.adb, s-intman-vms.ads, s-osprim-mingw.adb,
      	s-parame-vms-restrict.ads, s-parame-ae653.ads, s-intman-vxworks.ads,
      	s-intman-vxworks.ads, s-intman-vxworks.adb, s-parame-vxworks.ads,
      	s-tfsetr-vxworks.adb, s-interr.adb, s-interr.ads, a-tasatt.adb,
      	exp_ch13.adb, s-htable.ads, s-imgboo.ads, s-imglli.ads, s-imgllu.ads,
      	s-imguns.ads, g-eacodu.adb, par-ch12.adb, s-stache.ads, s-stausa.adb,
      	s-poosiz.adb, s-parame.ads, s-mastop.ads, s-osinte-darwin.ads,
      	a-chtgke.adb, s-asthan-vms-alpha.adb, s-parame-vms-alpha.ads,
      	s-parame-vms-ia64.ads, s-parame-vxworks.adb, s-except.ads,
      	g-altcon.adb: Minor reformatting
      
      	ada-tree.h: Delete empty line.
      
      	ali.ads: Minor reformatting
      	Clarification of comments.
      	Minor spelling correction
      
      	* exp_dbug.adb: Add Warnings Off to suppress new warning
      
      	* a-witeio.adb (Write): Add Warnings (Off) for unneeded IN OUT mode
      	formal
      
      	* a-strunb.adb (Set_Unbounded_String): Avoid memory leak by freeing old
      	value
      
      	* a-textio.adb (Write): Remove an unnecessary IN OUT mode from
      
      	* a-textio.ads: Reorder the standard input/output/error declarations
      	for consistency.
      
      	* g-dirope.adb, g-dirope.ads: Change Dir to mode IN for Open call
      
      	* par-ch2.adb: Recognize RM specially in errout
      	Change 'R'M to RM in all error messages
      
      	* scng.adb: Recognize RM specially in errout
      
      	* sem.ads, sem.adb, exp_strm.adb, exp_ch5.ads, expander.adb: Rename
      	N_Return node to be N_Simple_Return, to reflect Ada 2005 terminology.
      
      	* s-direio.adb: Add missing routine header box.
      
      	* sem_attr.ads: Add ??? comments
      
      	* sem_eval.adb: Recognize RM specially in errout
      	Change 'R'M to RM in all error messages
      
      	* sem_maps.adb, sem_maps.ads: Remove some unnecessary IN OUT modes
      
      	* s-tasinf.ads: Fix minor comment typo.
      
      	* a-cihama.adb: Minor comment addition
      
      	* a-ztexio.adb (Write): Add Warnings (Off) for unneeded IN OUT mode
      	formal
      
      	* s-tasinf-tru64.ads: Fix minor comment typo.
      
      	* itypes.ads: Comment update.
      
      	* ali-util.adb: Remove Generic_Separately_Compiled guard, not needed
      	anymore.
      
      	* argv.c: Added protection against null gnat_argv and gnat_envp.
      
      	* bcheck.adb (Check_Consistency): Use correct markup character ({) in
      	warning message when Tolerate_Consistency_Errors is True.
      
      	* cstand.adb (Create_Standard): Do not call Init_Size_Alignment for
      	Any_Id, as this subprogram is only applicable to *type* entities (it
      	sets RM_Size). Instead initialize just Esize and Alignment.
      
      From-SVN: r127440
      Robert Dewar committed
    • binde.adb (Elab_All_Links): Remove unnecessary call to Generic_Separately_Compiled (if... · 9410151a
      2007-08-14  Thomas Quinot  <quinot@adacore.com>
      	    Vincent Celier  <celier@adacore.com>
      
      	* binde.adb (Elab_All_Links): Remove unnecessary call to
      	Generic_Separately_Compiled (if a unit satisfies this predicate, there
      	won't be an associated Afile).
      	(Elab_All_Links): Fail if a referenced unit cannot be found
      
      	* bindgen.adb: 
      	Fix comments in bindgen regarding consistency checks done in Bcheck:
      	the checks are made across units within a partition, not across several
      	partitions.
      	Fix generation of C binder file for VxWorks.
      
      	* lib.adb (Generic_Separately_Compiled): Rename to
      	Generic_May_Lack_ALI, more descriptive of the current use of the
      	predicate, and update documentation.
      
      	* lib-writ.ads, lib-writ.adb (Write_With_Lines): Minor code
      	reorganization and documentation update for the case of predefined
      	library generics (for which we do not reference an Afile).
      
      From-SVN: r127439
      Thomas Quinot committed
    • a-tags.ads, a-tags.adb (Displace): Associate a message with the raised CE exception. · 5e1527bd
      2007-08-14  Javier Miranda  <miranda@adacore.com>
      
      	* a-tags.ads, 
      	a-tags.adb (Displace): Associate a message with the raised CE
      	exception.
      	(To_Addr_Ptr, To_Address, To_Dispatch_Table_Ptr,
      	To_Object_Specific_Data_Ptr To_Predef_Prims_Ptr,
      	To_Tag_Ptr, To_Type_Specific_Data_Ptr): Moved here from the package
      	spec.
      	(Default_Prim_Op_Count): Removed.
      	(IW_Membership, Get_Entry_Index, Get_Offset_Index, Get_Prim_Op_Kind,
      	Register_Tag, Set_Entry_Index, Set_Offset_To_Top, Set_Prim_Op_Kind):
      	Remove pragma Inline_Always.
      
      	* rtsfind.ads (Default_Prim_Op_Count): Removed
      	(Max_Predef_Prims): New entity
      	(RE_Expanded_Name): Removed
      	(RE_HT_Link): Removed
      	(RE_Iface_Tag): Remmoved
      	(RE_Ifaces_Table): Removed
      	(RE_Interfaces_Array): Removed
      	(RE_Interface_Data_Element): Removed
      	(RE_Nb_Ifaces): Removed
      	(RE_RC_Offset): Removed
      	(RE_Static_Offset_To_Top): Removed
      
      	* exp_atag.ads (Build_Inherit_Prims): Addition of a new formal.
      	(Build_Inherit_Predefined_Prims): Replace occurrences of Default_
      	Prim_Op_Count by Max_Predef_Prims.
      
      From-SVN: r127438
      Javier Miranda committed
    • adaint.c (__gnat_is_absolute_path): For VxWorks systems we accept dir/file... · fdcf961c
      2007-08-14  Jose Ruiz  <ruiz@adacore.com>
      
      	* adaint.c (__gnat_is_absolute_path): For VxWorks systems we accept
      	dir/file, device:/dir/file, and device:drive_letter:/dir/file as
      	representing absolute path names.
      	__gnat_set_file_time_name [VMS]: Fix some 64/32 bit issues.
      
      	* cstreams.c (__gnat_full_name for VxWorks): Use
      	__gnat_is_absolute_path to detect whether we need to add the current
      	directory to normalize the path.
      
      From-SVN: r127437
      Jose Ruiz committed
    • sem_ch10.adb: Create a limited view of an incomplete type... · 50b8a7b8
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch10.adb: Create a limited view of an incomplete type, to make
      	treatment of limited views uniform for all visible declarations in a
      	limited_withed package.
      	Set flag indicating that a subprogram body for a child unit has a
      	generated spec.
      	(Analyze_Compilation_Unit): If unit is a subprogram body that has no
      	separate declaration, remove the unit name from visibility after
      	compilation, so that environment is clean for subsequent compilations.
      	(Install_Limited_Context_Clauses): Do not install a
      	limited_private_with_clause unless the current unit is a body or a
      	private child unit.
      	(Analyze_Subunit, Install_Parents): Treat generic and non-generic units
      	in the same fashion.
      	(Install_Limited_Withed_Unit): Do not install a limited with clause if
      	it applies to the declaration of the current package body.
      	(Remove_Private_With_Clauses): If there is a regular with_clause for
      	the unit, delete Private_With_Clause from context, to prevent improper
      	hiding when processing subsequent nested packages and instantiations.
      
      From-SVN: r127436
      Ed Schonberg committed
    • s-taprop-linux.adb (Get_Stack_Attributes): New subprogram. · febb581c
      2007-08-14  Olivier Hainque  <hainque@adacore.com>
      
      	* s-taprop-linux.adb (Get_Stack_Attributes): New subprogram. Fetch the
      	stack size and initial stack pointer value for a given task.
      	(Enter_Task): Get the stack attributes of the task we are entering and
      	let the stack checking engine know about them.
      
      	* s-stchop.adb, s-stchop.ads (Notify_Stack_Attributes): New subprogram.
      	Let the stack-checking engine know about the initial sp value and stack
      	size associated with the current task.
      	(Set_Stack_Info): If a stack base has been notified for the current
      	task, honor it. Fallback to the previous less accurate method otherwise.
      
      	* s-stchop-vxworks.adb (Notify_Stack_Attributes): Dummy body.
      
      From-SVN: r127435
      Olivier Hainque committed
    • s-osinte-mingw.ads: Add support for Ada.Execution_Time on Windows. · a2264f2d
      2007-08-14  Pascal Obry  <obry@adacore.com>
      
      	* s-osinte-mingw.ads: Add support for Ada.Execution_Time on Windows.
      	(SYSTEM_INFO): New record.
      	(SetThreadIdealProcessor): New imported routine needed for supporting
      	task_info pragma on Windows.
      
      	* s-taprop-mingw.adb (Enter_Task): Check if CPU number given in task
      	info can be applied to the current host.
      	(Create_Task): Set the ideal processor if information is present.
      
      	* s-tasinf-mingw.adb, s-tasinf-mingw.ads,
      	a-exetim-mingw.adb, a-exetim-mingw.ads: New files.
      
      From-SVN: r127434
      Pascal Obry committed
    • system-solaris-x86.ads (ZCX_By_Default): Switch to True. · 43316a01
      2007-08-14  Olivier Hainque  <hainque@adacore.com>
      
      	* system-solaris-x86.ads (ZCX_By_Default): Switch to True.
      	(GCC_ZCX_Support): Switch to True.
      	
      	* s-intman-solaris.adb (Notify_Exception): Call
      	Adjust_Context_For_Raise before raising, as expected for signal
      	handlers in general.
      	
      	* s-intman-posix.adb (Notify_Exception): Remove declaration of
      	Adjust_Context_For_Raise, moved to the spec of this unit to be visible
      	to other implementation bodies.
      	
      	* s-intman.ads (Adjust_Context_For_Raise): Declare and import here, to
      	be visible by multiple implementation bodies.
      	
      	* init.c [VMS section] (__gnat_handle_vms_condition): Adjust context
      	only for conditions coming from hardware.
      	[alpha-tru64 section] (__gnat_adjust_context_for_raise): Implement,
      	adjustments to signal context prior to exception raise from signal
      	handler.
      	(__gnat_map_signal for VxWorks): Map SIGSEGV to Storage_Error in RTP
      	mode.
      	Solaris section: (__gnat_adjust_context_for_raise): New function.
      	Implementation of the machine context adjustments to perform prior to
      	raise from a signal handler. Version for both sparc and x86.
      	(HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE): Define.
      	(__gnat_error_handler): Expect a third argument, ucontext_t *. Adjust it
      	prior to raising as expected for any handler, before possible nested
      	faults to make sure all the contexts in a chain have been adjusted by
      	the time we propagate.
      
      From-SVN: r127433
      Olivier Hainque committed
    • clean.adb, [...] (Create_Sym_Links): New procedure. · 2cd44f5a
      2007-08-14  Vincent Celier  <celier@adacore.com>
      
      	* clean.adb, fmap.adb, sinput-p.adb, sinput-p.ads, gnatcmd.adb, 
      	gnatname.adb, makeutl.ads, makeutl.adb, makegpr.adb, mlib-tgt-vms.adb
      	mlib-tgt-darwin.adb, mlib-tgt-lynxos.adb, mlib-prj.adb, mlib-tgt.adb, 
      	mlib-tgt.ads, mlib-tgt-irix.adb mlib-tgt-hpux.adb, mlib-tgt-linux.adb, 
      	mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb, 
      	mlib-tgt-mingw.adb, mlib-tgt-vxworks.adb, mlib-tgt-aix.adb,
      	mlib-tgt-tru64.adb, mlib.ads, mlib.adb (Create_Sym_Links): New
      	procedure.
      	(Major_Id_Name): New function.
      	mlib-tgt.ads/mlib.tgt.adb:
      	(Library_Major_Minor_Id_Supported): New function, default returns True
      	Most mlib-tgt-*.adb that support shared libraries and symbolic links:
      	(Build_Dynamic_Library): Add support for major/minor ids for shared libs
      	Other mlib-tgt-*.adb (aix, mingw, vms, vxworks, xi):
      	Implementation of Library_Major_Minor_Id_Supported returns False
      	clean.adb:
      	(Clean_Library_Directory): If major/minor ids are supported, clean all
      	library files.
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      
      From-SVN: r127432
      Vincent Celier committed
    • s-taprop-lynxos.adb, [...] (Continue_Task, [...]): New functions; dummy implementations. · c9b9ec14
      2007-08-14  Jerome Guitton  <guitton@adacore.com>
      
      	* s-taprop-lynxos.adb, s-taprop-tru64.adb, s-taprop-irix.adb, 
      	s-taprop-hpux-dce.adb, s-taprop-dummy.adb, s-taprop-solaris.adb, 
      	s-taprop-vms.adb, s-taprop-posix.adb (Continue_Task, Stop_All_Tasks):
      	New functions; dummy implementations.
      
      	* s-osinte-vxworks.ads (Task_Stop, Task_Cont, Int_Lock, Int_Unlock): New
      	functions, used to implement the multi-tasks mode routines on VxWorks.
      
      	* s-osinte-vxworks.adb (Task_Cont, Task_Stop): New functions, thin
      	binding to the VxWorks routines which have changed between VxWorks 5
      	and 6.
      	(Int_Lock, Int_Unlock): New function, thin binding to kernel routines
      	which are not callable from a RTP.
      
      	* s-taprop-vxworks.adb (Stop_All_Tasks, Continue_Task): New functions,
      	implemented for the multi-tasks mode on VxWorks 5 and 6.
      
      	* s-taprop.ads (Stop_All_Tasks, Continue_Task): New functions.
      
      	* s-tasdeb.ads, s-tasdeb.adb (Continue_All_Tasks, Stop_All_Tasks): New
      	functions.
      
      From-SVN: r127431
      Jerome Guitton committed
    • exp_ch5.adb (Expand_Assign_Array): If source or target of assignment is a… · bd28782c
      exp_ch5.adb (Expand_Assign_Array): If source or target of assignment is a variable that renames a slice...
      
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      
      	* exp_ch5.adb (Expand_Assign_Array): If source or target of assignment
      	is a variable that renames a slice, use the variable itself in the
      	expannsion when the renamed expression itself may be modified between
      	the declaration of the renaming and the array assignment.
      
      From-SVN: r127430
      Ed Schonberg committed
    • exp_aggr.ads, [...] (Convert_Aggr_In_Allocator): Use Insert_Actions to place… · fa57ac97
      exp_aggr.ads, [...] (Convert_Aggr_In_Allocator): Use Insert_Actions to place expanded aggregate code before allocator...
      
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      	    Gary Dismukes  <dismukes@adacore.com>
      
      	* exp_aggr.ads, 
      	exp_aggr.adb (Convert_Aggr_In_Allocator): Use Insert_Actions to place
      	expanded aggregate code before allocator, and ahead of declaration for
      	temporary, to prevent access before elaboration when the allocator is
      	an actual for an access parameter.
      	(Is_Static_Dispatch_Table_Aggregate): Handle aggregates initializing
      	the TSD and the table of interfaces.
      	(Convert_To_Assignments): Augment the test for delaying aggregate
      	expansion for limited return statements to include the case of extended
      	returns, to prevent creation of an unwanted transient scope.
      	(Is_Static_Dispatch_Table_Aggregate): New subprogram.
      	(Expand_Array_Aggregate): Handle aggregates associated with
      	statically allocated dispatch tables.
      	(Expand_Record_Aggregate): Handle aggregates associated with
      	statically allocated dispatch tables.
      	(Gen_Ctrl_Actions_For_Aggr): Generate a finalization list for allocators
      	of anonymous access type.
      
      From-SVN: r127429
      Ed Schonberg committed
    • sem_elim.adb (Set_Eliminated): Ignore pragma Eliminate for dispatching operation · dc096132
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      
      	* sem_elim.adb (Set_Eliminated): Ignore pragma Eliminate for
      	dispatching operation
      
      From-SVN: r127428
      Robert Dewar committed
    • sem_ch5.adb: Improve warnings on redundant assignments · 1b6c95c4
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch5.adb: Improve warnings on redundant assignments
      
      	* sem_util.ads, sem_util.adb: (Is_Variable): Add defense against junk
      	parameter
      	(Is_Synchronized_Tagged_Type): New subprogram that returns true
      	in case of synchronized tagged types (AARM 3.9.4 (6/2)).
      	(Safe_To_Capture_Value): Can now return True for constants, even if Cond
      	is set to False. Improves handling of Known_[Not_]Null.
      	(Wrong_Type): Special case address arithmetic attempt
      	(Collect_Abstract_Interfaces): Add new formal to allow collecting
      	abstract interfaces just using the partial view of private types.
      	(Has_Abstract_Interfaces): Add new formal to allow checking types
      	covering interfaces using the partial view of private types.
      	(Is_Fully_Initialized_Type): Special VM case for uTag component. This
      	component still needs to be defined in this case, but is never
      	initialized as VMs are using other dispatching mechanisms.
      	(Abstract_Interface_List): For a protected type, use base type to get
      	proper declaration.
      	Improve warnings on redundant assignments
      	(Is_Variable): Handle properly an implicit dereference of a prefixed
      	function call.
      	(Build_Actual_Subtype): If this is an actual subtype for an
      	unconstrained formal parameter, use the sloc of the body for the new
      	declaration, to prevent anomalises in the debugger.
      
      From-SVN: r127427
      Robert Dewar committed
    • sem_ch11.adb: Improved warnings for unused variables · dc06abec
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch11.adb: Improved warnings for unused variables
      
      	* sem_ch3.ads, sem_ch3.adb (Build_Derived_Record_Type): If the ancestor
      	is a synchronized interface, the derived type is limited.
      	(Analyze_Object_Declaration): Mark the potential coextensions in the
      	definition and expression of an object declaration node.
      	(Build_Derived_Type): For the completion of a private type declaration
      	with a derived type declaration, chain the parent type's representation
      	items to the last representation item of the derived type (not the
      	first one) if they are not present already.
      	(Analyze_Object_Declaration, Constant_Redeclaration): Allow incomplete
      	object declaration of forward references to tags.
      	(Access_Subprogram_Declaration): In Ada2005, anonymous access to
      	subprogram types can appear as access discriminants of synchronized
      	types.
      	(OK_For_Limited_Init_In_05): The initialization is legal is it is a call
      	given in prefixed form as a selected component.
      	(Process_Discriminants): If not all discriminants have defaults, place
      	error message on a default that is present.
      	(Analyze_Private_Extension_Declaration): Diagnose properly an attempt to
      	extend a synchronized tagged type.
      	Improved warnings for unused variables
      	(Is_Visible_Component): Fix a visibility hole on a component inherited
      	by a private extension when parent is itself declared as a private
      	extension, and the derivation is in a child unit.
      	(Find_Hidden_Interface): Move spec from the package body.
      
      From-SVN: r127426
      Robert Dewar committed
    • sem_attr.ads, [...] (Analyze_Attribute, case Value): For enumeration type, mark… · 442ade9d
      sem_attr.ads, [...] (Analyze_Attribute, case Value): For enumeration type, mark all literals as referenced.
      
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_attr.ads, sem_attr.adb (Analyze_Attribute, case Value): For
      	enumeration type, mark all literals as referenced.
      	(Eval_Attribute, case 'Image): If the argument is an enumeration
      	literal and names are available, constant-fold but mark nevertheless as
      	non-static.
      	Clean up function names.
      	(Name_Modifies_Prefix): Rename to Name_Implies_Lvalue_Prefix. Clarify
      	comment.
      	(Requires_Simple_Name_Prefix): Removed.
      
      From-SVN: r127425
      Robert Dewar committed
    • par-tchk.adb (TF_Semicolon): Improve error recovery · 852ab9d0
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      
      	* par-tchk.adb (TF_Semicolon): Improve error recovery
      
      From-SVN: r127424
      Robert Dewar committed
    • par.ads, par.adb: Improve handling of extra right parens. · 7dc5f546
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      
      	* par.ads, par.adb: Improve handling of extra right parens.
      	(Par): Remove flag From_Limited_With_Clause.
      
      	* par-util.adb, par-ch3.adb: Improve error recovery for bad constraint
      	Improve handling of extra right parens.
      
      From-SVN: r127423
      Robert Dewar committed
    • re PR ada/19037 (constant renaming creates new constant) · 3355aa3e
      2007-08-14  Olivier Hainque  <hainque@adacore.com>
      	    Eric Botcazou  <ebotcazou@adacore.com>
      
      	* targtyps.c (get_target_maximum_default_alignment): New function.
      	Maximum alignment
      	that the compiler might choose by default for a type or object.
      	(get_target_default_allocator_alignment): New function. Alignment known
      	to be honored by the target default allocator.
      	(get_target_maximum_allowed_alignment): New function. Maximum alignment
      	we might accept for any type or object on the target.
      	(get_target_maximum_alignment): Now synonym of maximum_default_alignment
      
      	* gigi.h (get_target_maximum_default_alignment): Declare new function.
      	(get_target_default_allocator_alignment): Likewise.
      	(get_target_maximum_allowed_alignment): Likewise.
      
      	PR ada/19037
      	* decl.c (gnat_to_gnu_entity) <object>: Except for the renaming of the
      	result of a function call, first try to use a stabilized reference for
      	a constant renaming too.
      	(validate_alignment): Use target_maximum_allowed_alignment instead of
      	MAX_OFILE_ALIGNMENT as the upper bound to what we accept.
      	(gnat_to_gnu_entity): Use common nodes directly.
      	(gnat_to_gnu_entity) <object>: Pick the values of the type to annotate
      	alignment and size for the object.
      	(lvalue_required_p): Handle N_Parameter_Association like N_Function_Call
      	and N_Procedure_Call_Statement.
      	(takes_address): Rename to lvalue_required_p, add third parameter
      	'aliased' and adjust recursive calls.
      	<N_Indexed_Component>: Update 'aliased' from the array type.
      	<N_Selected_Component>: New case.
      	<N_Object_Renaming_Declaration>: New Likewise.
      	(Identifier_to_gnu): Adjust for above changes.
      	(maybe_stabilize_reference) <CONST_DECL>: New case.
      
      	* utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Look through conversion
      	between type variants.
      	(build_simple_component_ref): Likewise.
      	(build_call_alloc_dealloc): Use target_default_allocator_alignment
      	instead of BIGGEST_ALIGNMENT as the threshold to trigger the super
      	aligning type circuitry for allocations from the default storage pool.
      	(build_allocator): Likewise.
      	(build_simple_component_ref): Manually fold the reference for a
      	constructor if the record type contains a template.
      
      	* utils.c (value_zerop): Delete.
      	(gnat_init_decl_processing): Emit debug info for common types.
      	(rest_of_record_type_compilation): If a union contains a field
      	with a non-constant qualifier, treat it as variable-sized.
      	(finish_record_type): Give the stub TYPE_DECL a name.
      	(rest_of_record_type_compilation): Likewise.
      	(convert) <CONSTRUCTOR>: New case.  Build a new constructor if
      	types are equivalent array types.
      	(create_field_decl): Claim fields of any ARRAY_TYPE are addressable,
      	even if the type is not passed by reference.
      	(static_ctors, static_dtors): Delete.
      	(end_subprog_body): Do not record constructors and destructors.
      	(build_global_cdtor): Delete.
      	(gnat_write_global_declarations): Do not call build_global_cdtor.
      
      	* lang-specs.h: If TARGET_VXWORKS_RTP is defined, append -mrtp when
      	-fRTS=rtp is specified.
      	If CONFIG_DUAL_EXCEPTIONS is 1, append -fsjlj when -fRTS=sjlj is
      	specified.
      
      	* misc.c (gnat_init_gcc_eh): Use __gnat_eh_personality_sj for the name
      	of the personality function with SJLJ exceptions.
      
              * raise-gcc.c (PERSONALITY_FUNCTION): Use __gnat_eh_personality_sj for
      	the name of the personality function with SJLJ exceptions.
      
      From-SVN: r127422
      Olivier Hainque committed
    • opt.ads: Warning for non-local exception propagation now off by default New switch... · c690a2ec
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      
      	* opt.ads: Warning for non-local exception propagation now off by
      	default
      	New switch -gnatI to disable representation clauses
      	Implement new pragma Implicit_Packing
      
      	* usage.adb: 
      	Warning for non-local exception propagation now off by default
      	Add warning for unchecked conversion of pointers wi different
      	conventions.
      	New switch -gnatI to disable representation clauses
      
      	* usage.adb: new switch -gnatyS
      
      	* gnat_ugn.texi: For the gnatcheck Non_Qualified_Aggregates rule add a
      	note that aggregates of anonymous array types are not flagged.
      	-gnatwc now includes membership tests optimized away
      	-gnatw.x warnings are now off by default
      	Added conditional compilation Appendix
      	Add documentation of -gnatI
      	Add documentation for new -gnatyS style check
      	Update documentation about SAL and auto-init on Windows.
      
      	* gnat_rm.texi: 
      	Add documentation for pragma Check_Name and 'Enabled attribute
      	Document that Eliminate on dispatching operation is ignored
      	Document IDE attributes VCS_Repository_Root and VCS_Patch_Root.
      	Document pragma Main
      	Document pragma Implicit_Packing
      
      	* sem_ch13.adb: Add warning for unchecked conversion of pointers wi
      	different conventions
      	New switch -gnatI to disable representation clauses
      
      	* switch-c.adb (Scan_Front_End_Switches): When a -gnat switch is not
      	recognized, report the invalid characters including "-gnat" instead of
      	just the first character in the switch.
      	New switch -gnatI to disable representation clauses
      	Set Warn_On_Object_Renames_Function true for -gnatg
      
      	* vms_data.ads: Add doc for /IGNORE_REP_CLAUSES
      	Add STATEMENTS_AFTER_THEN_ELSE as synonym for -gnatyS
      	Add qualifier /ADD_PROJECT_SEARCH_DIR= for different tools, equivalent
      	to switch -aP (add directory to project search dir).
      
      	* par-prag.adb: Implement new pragma Implicit_Packing
      
      	* sem_prag.adb (Analyze_Pragma, case Complex_Representation): Mark the
      	type as having a non-standard representation, to force expansion on
      	conversion to related types.
      	(Analyze_Pragma): Warn on misspelled pragma
      	(Analyze_Pragma, case Convention_Identifier): Fix checking of second arg
      	Ensure consistent use of # in error messages
      	Implement pragma Implicit_Packing
      
      From-SVN: r127421
      Robert Dewar committed
    • prj.ads, prj.adb: Update Project Manager to new attribute names for gprbuild. · ede007da
      2007-08-14  Vincent Celier  <celier@adacore.com>
      
      	* prj.ads, prj.adb: Update Project Manager to new attribute names for
      	gprbuild.
      	Allow all valid declarations in configuration project files
      	(Reset): Initialize all tables and hash tables in the project tree data
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      	(Slash_Id): Change type to be Path_Name_Type
      	(Slash): Return a Path_Name_Type instead of a File_Name_Type
      
      	* prj-attr.ads, prj-attr.adb: Remove attributes no longer used by
      	gprbuild.
      	Update Project Manager to new attribute names for ghprbuild
      	Allow all valid declarations in configuration project files
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      
      	* prj-com.ads: 
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      
      	* prj-dect.adb (Prj.Strt.Attribute_Reference): Set correctly the case
      	insensitive flag for attributes with optional index.
      	(Prj.Dect.Parse_Attribute_Declaration): For case insensitive associative
      	array attribute, put the index in lower case.
      	Update Project Manager to new attribute names for ghprbuild
      	Allow all valid declarations in configuration project files
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      
      	* prj-env.ads, prj-env.adb: 
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      	(Get_Reference): Change type of parameter Path to Path_Name_Type
      
      	* prj-ext.ads, prj-ext.adb (Initialize_Project_Path): Make sure, after
      	removing '-' from the path to start with the first character of the
      	next directory.
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      
      	* prj-nmsc.ads, prj-nmsc.adb: 
      	Update Project Manager to new attribute names for ghprbuild
      	Allow all valid declarations in configuration project files
      	(Search_Directories): Detect subunits that are specified with an
      	attribute Body in package Naming. Do not replace a source/unit in the
      	same project when the order of the source dirs are known. Detect
      	duplicate sources/units in the same project when the order of the
      	source dirs are not known.
      	(Check_Ada_Name): Allow all identifiers that are not reserved words
      	in Ada 95.
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      	(Look_For_Sources): If the list of sources is empty, set the object
      	directory of non extending project to nil.
      	Change type of path name variables to be Path_Name_Type
      	(Locate_Directory): Make sure that on Windows '/' is converted to '\',
      	otherwise creating missing directories will fail.
      
      	* prj-attr-pm.adb, prj-tree.ads, prj-proc.ads, prj-proc.adb, 
      	prj-part.ads, prj-part.adb:
      	Major update of the Project Manager and of the project aware tools,
      	including gprmake, so that the same sources in the GNAT repository
      	can be used by gprbuild.
      
      	* prj-strt.adb (Prj.Strt.Attribute_Reference): Set correctly the case
      	insensitive flag for attributes with optional index.
      	(Prj.Dect.Parse_Attribute_Declaration): For case insensitive associative
      	array attribute, put the index in lower case.
      	(Parse_Variable_Reference): Allow the current project name to be used in
      	the prefix of an attribute reference.
      
      	* prj-util.ads, prj-util.adb
      	(Value_Of (for arrays)): New Boolean parameter Force_Lower_Case_Index,
      	defaulted to False. When True, always check against indexes in lower
      	case.
      
      	* snames.ads, snames.h, snames.adb: 
      	Update Project Manager to new attribute names for gprbuild
      	Allow all valid declarations in configuration project files
      
      From-SVN: r127420
      Vincent Celier committed
    • exp_util.ads, [...]: This patch replaces a number of occurrences of explicit… · 86cde7b1
      exp_util.ads, [...]: This patch replaces a number of occurrences of explicit tests for N_Null with...
      
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      	    Javier Miranda  <miranda@adacore.com>
      
      	* exp_util.ads, exp_util.adb: 
      	This patch replaces a number of occurrences of explicit tests for N_Null
      	with calls to Known_Null. This improves tracking of null values, since
      	Known_Null also catches null constants, and variables currently known to
      	be null, so we get better tracking.
      	(Ensure_Defined): create an itype reference only in the scope of the
      	itype.
      	(Side_Effect_Free): A selected component of an access type that
      	denotes a component with a rep clause must be treated as not
      	side-effect free, because if it is part of a linked structure its
      	value may be affected by a renaming.
      	(Expand_Subtype_From_Expr): For limited objects initialized with build
      	in place function calls, do nothing; otherwise we prematurely introduce
      	an N_Reference node in the expression initializing the object, which
      	breaks the circuitry that detects and adds the additional arguments to
      	the called function. Bug found working in the new patch for statically
      	allocated dispatch tables.
      	(Is_Library_Level_Tagged_Type): New subprogram.
      	(Remove_Side_Effects): If the expression of an elementary type is an
      	operator treat as a function call.
      	(Make_Literal_Range): If the index type of the array is not integer, use
      	attributes properly to compute the constraint on the resulting aggregate
      	which is a string.
      
      	* freeze.ads, freeze.adb (Freeze_Entity): If the entity is a
      	class-wide type whose base type is an incomplete private type, leave
      	class-wide type unfrozen so that freeze nodes can be generated
      	properly at a later point.
      	(Freeze_Entity, array case): Handle case of pragma Pack and component
      	size attributre clause for same array.
      
      From-SVN: r127419
      Robert Dewar committed
    • exp_disp.ads, [...] (Build_Dispatch_Tables): Handle tagged types declared in the… · b2e1beb3
      exp_disp.ads, [...] (Build_Dispatch_Tables): Handle tagged types declared in the declarative part of a nested package body...
      
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      	    Javier Miranda  <miranda@adacore.com>
      
      	* exp_disp.ads, exp_disp.adb (Build_Dispatch_Tables): Handle tagged
      	types declared in the declarative part of a nested package body or in
      	the proper body of a stub.
      	(Set_All_DT_Position): Add missing check to avoid wrong assignation
      	of the same dispatch table slot to renamed primitives.
      	(Make_Select_Specific_Data_Table): Handle private types.
      	(Tagged_Kind): Handle private types.
      	(Make_Tags, Make_DT): Set tag entity as internal to ensure proper dg
      	output of implicit importation and exportation.
      	(Expand_Interface_Thunk): Fix bug in the expansion assuming that the
      	first formal of the thunk is always associated with the controlling
      	type. In addition perform the following code cleanup: remove formal
      	Thunk_Alias which is no longer required, cleanup evaluation of the
      	the controlling type, and update the documentation.
      	Replace occurrence of Default_Prim_Op_Count by
      	Max_Predef_Prims. Addition of compile-time check to verify
      	that the value of Max_Predef_Prims is correct.
      	(Check_Premature_Freezing): Apply check in Ada95 mode as well.
      	(Make_DT): Add parameter to indicate when type has been frozen by an
      	object declaration, for diagnostic purposes.
      	(Build_Static_Dispatch_Tables): New subprogram that takes care of the
      	construction of statically allocated dispatch tables.
      	(Make_DT): In case of library-level tagged types export the declaration
      	of the primary tag. Remove generation of tags (now done by Make_Tags).
      	Additional modifications to handle non-static generation of dispatch
      	tables. Take care of building tables for asynchronous interface types
      	(Make_Tags): New subprogram that generates the entities associated with
      	the primary and secondary tags of Typ and fills the contents of Access_
      	Disp_Table. In case of library-level tagged types imports the forward
      	declaration of the primary tag that will be declared later by Make_DT.
      	(Expand_Interface_Conversion): In case of access types to interfaces
      	replace an itype declaration by an explicit type declaration to avoid
      	problems associated with the scope of such itype in transient blocks.
      
      From-SVN: r127418
      Ed Schonberg committed
    • exp_ch3.ads, [...] (Add_Final_Chain): New subprogram. · 04df6250
      2007-08-14  Thomas Quinot  <quinot@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      	    Javier Miranda  <miranda@adacore.com>
      	    Robert Dewar  <dewar@adacore.com>
      
      	* exp_ch3.ads, exp_ch3.adb (Add_Final_Chain): New subprogram.
      	(Freeze_Array_Type, Freeze_Record_Type): For the case of a component
      	type that is an anonymous access to controlled object, establish
      	an associated finalization chain to avoid corrupting the global
      	finalization list when a dynamically allocated object designated
      	by such a component is deallocated.
      	(Make_Controlling_Function_Wrappers): Create wrappers for constructor
      	functions that need it, even when not marked Requires_Overriding.
      	(Initialize_Tag): Replace call to has_discriminants by call to
      	Is_Variable_Size_Record in the circuitry that handles the
      	initialization of secondary tags.
      	(Is_Variable_Size_Record): New implementation.
      	(Expand_N_Object_Declaration): Suppress call to init proc if there is a
      	Suppress_Initialization pragma for a derived type.
      	(Is_Variable_Size_Record): New subprogram.
      	(Build_Offset_To_Top_Functions): New implementation that simplifies the
      	initial version of this routine and also fixes problems causing
      	incomplete initialization of the table of interfaces.
      	(Build_Init_Procedure): Improve the generation of code to initialize the
      	the tag components of secondary dispatch tables.
      	(Init_Secondary_Tags): New implementation that simplifies the previous
      	version of this routine.
      	(Make_DT): Add parameter to indicate when type has been frozen by an
      	object declaration, for diagnostic purposes.
      	(Check_Premature_Freezing): New subsidiary procedure of Make_DT, to
      	diagnose attemps to freeze a subprogram when some untagged type of its
      	profile is a private type whose full view has not been analyzed yet.
      	(Freeze_Array_Type): Generate init proc for packed array if either
      	Initialize or Normalize_Scalars is set.
      	(Make_Controlling_Function_Wrappers, Make_Null_Procedure_Specs): when
      	constructing the new profile, copy the null_exclusion indicator for each
      	parameter, to ensure full conformance of the new body with the spec.
      
      	* sem_type.ads, sem_type.adb (Make_Controlling_Function_Wrappers):
      	Create wrappers for constructor functions that need it, even when not
      	marked Requires_Overriding.
      	(Covers): Handle properly designated types of anonymous access types,
      	whose non-limited views are themselves incomplete types.
      	(Add_Entry): Use an entity to store the abstract operation which hides
      	an interpretation.
      	(Binary_Op_May_Be_Hidden): Rename to Binary_Op_Interp_Has_Abstract_Op.
      	(Collect_Interps): Use Empty as an actual for Abstract_Op in the
      	initialization aggregate.
      	(Function_Interp_May_Be_Hidden): Rename to
      	Function_Interp_Has_Abstract_Op.
      	(Has_Compatible_Type): Remove machinery that skips interpretations if
      	they are labeled as potentially hidden by an abstract operator.
      	(Has_Hidden_Interp): Rename to Has_Abstract_Op.
      	(Set_May_Be_Hidden): Rename to Set_Abstract_Op.
      	(Write_Overloads): Output the abstract operator if present.
      	(Add_Entry): Before inserting a new entry into the interpretation table
      	for a node, determine whether the entry will be disabled by an abstract
      	operator.
      	(Binary_Op_Interp_May_Be_Hidden): New routine.
      	(Collect_Interps): Add value for flag May_Be_Hidden in initialization
      	aggregate.
      	(Function_Interp_May_Be_Hidden): New routine.
      	(Has_Compatible_Type): Do not consider interpretations hidden by
      	abstract operators when trying to determine whether two types are
      	compatible.
      	(Has_Hidden_Interp): New routine.
      	(Set_May_Be_Hidden_Interp): New routine.
      	(Write_Overloads): Write the status of flag May_Be_Hidden.
      
      From-SVN: r127417
      Thomas Quinot committed
    • exp_attr.adb (Expand_N_Attribute_Reference): Handle case of child unit · 3e8ee849
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Javier Miranda  <miranda@adacore.com>
      	    Gary Dismukes  <dismukes@adacore.com>
      
      	* exp_attr.adb (Expand_N_Attribute_Reference): Handle case of child unit
      	(Expand_N_Attribute_Reference): Further unify the handling of the
      	three forms of access attributes, using common code now for all three
      	cases. Add a test for the case of applying an access attribute to
      	an explicit dereference when the context is an access-to-interface
      	type. In that case we need to apply the conversion to the prefix
      	of the explicit dereference rather than the prefix of the attribute.
      	(Attribute_Version, UET_Address): Set entity as internal to ensure
      	proper dg output of implicit importation.
      	(Expand_Access_To_Type): Removed.
      	(Expand_N_Attribute_Reference): Merge the code from the three cases
      	of access attributes, since the processing is largely identical for
      	these cases. The substantive fix here is to process the case of a
      	type name prefix (current instance case) before handling the case
      	of interface prefixes.
      
      From-SVN: r127416
      Robert Dewar committed
    • einfo.ads, einfo.adb: Create a limited view of an incomplete type... · 5d37ba92
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      	    Robert Dewar  <dewar@adacore.com>
      	    Javier Miranda  <miranda@adacore.com>
      	    Gary Dismukes  <dismukes@adacore.com>
      
      	* einfo.ads, einfo.adb: Create a limited view of an incomplete type,
      	to make treatment of limited views uniform for all visible declarations
      	in a limited_withed package.
      	Improve warnings for in out parameters
      	(Set_Related_Interaface/Related_Interface): Allow the use of this
      	attribute with constants.
      	(Write_Field26_Name): Handle attribute Related_Interface in constants.
      	Warn on duplicate pragma Preelaborable_Initialialization
      
      	* sem_ch6.ads, sem_ch6.adb (Analyze_Subprogram_Body): Force the
      	generation of a freezing node to ensure proper management of null
      	excluding access types in the backend.
      	(Create_Extra_Formals): Test base type of the formal when checking for
      	the need to add an extra accessibility-level formal. Pass the entity E
      	on all calls to Add_Extra_Formal (rather than Scope (Formal) as was
      	originally being done in a couple of cases), to ensure that the
      	Extra_Formals list gets set on the entity E when the first entity is
      	added.
      	(Conforming_Types): Add missing calls to Base_Type to the code that
      	handles anonymous access types. This is required to handle the
      	general case because Process_Formals builds internal subtype entities
      	to handle null-excluding access types.
      	(Make_Controlling_Function_Wrappers): Create wrappers for constructor
      	functions that need it, even when not marked Requires_Overriding.
      	Improve warnings for in out parameters
      	(Analyze_Function_Return): Warn for disallowed null return
      	Warn on return from procedure with unset out parameter
      	Ensure consistent use of # in error messages
      	(Check_Overriding_Indicator): Add in parameter Is_Primitive.
      	(Analyze_Function_Return): Move call to Apply_Constraint_Check before
      	the implicit conversion of the expression done for anonymous access
      	types. This is required to generate the code of the null excluding
      	check (if required).
      
      	* sem_warn.ads, sem_warn.adb (Check_References.Publicly_Referenceable):
      	A formal parameter is never publicly referenceable outside of its body.
      	(Check_References): For an unreferenced formal parameter in an accept
      	statement, use the same warning circuitry as for subprogram formal
      	parameters.
      	(Warn_On_Unreferenced_Entity): New subprogram, taken from
      	Output_Unreferenced_Messages, containing the part of that routine that
      	is now reused for entry formals as described above.
      	(Goto_Spec_Entity): New function
      	(Check_References): Do not give IN OUT warning for dispatching operation
      	Improve warnings for in out parameters
      	(Test_Ref): Check that the entity is not undefinite before calling
      	Scope_Within, in order to avoid infinite loops.
      	Warn on return from procedure with unset out parameter
      	Improved warnings for unused variables
      
      From-SVN: r127415
      Ed Schonberg committed
    • debug.adb: Improve -gnatdI to cover all cases of serialization Add documentation of dZ, d.t · b99282c4
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      
      	* debug.adb: Improve -gnatdI to cover all cases of serialization
      	Add documentation of dZ, d.t
      
      	* sprint.ads, sprint.adb: Improve -gnatdI to cover all cases of
      	serialization.
      	(Sprint_Node_Actual): Generate new output associated with implicit
      	importation and implicit exportation of object declarations.
      
      From-SVN: r127414
      Robert Dewar committed
    • comperr.adb: Fix problem with suppressing warning messages from gigi · 554846f3
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      
      	* comperr.adb: Fix problem with suppressing warning messages from gigi
      
      	* erroutc.ads, erroutc.adb, errout.ads, 
      	errout.adb (Write_Eol): Remove trailing spaces before writing the line
      	(Write_Eol_Keep_Blanks): New procedure to write a line, including
      	possible trailing spaces.
      	(Output_Source_Line): Call Write_Eol_Keep_Blanks to output a source line
      	Fix problem with suppressing warning messages from back end
      	Improve handling of deleted warnings
      
      	* gnat1drv.adb: 
      	Fix problem with suppressing warning messages from back end
      	Handle setting of Static_Dispatch_Tables flag.
      
      	* prepcomp.adb: 
      	Fix problem with suppressing warning messages from back end
      
      	* exp_intr.adb: Improve handling of deleted warnings
      
      From-SVN: r127413
      Robert Dewar committed
    • atree.ads, atree.adb (New_Copy_Tree): If hash table is being used and itype is visited... · 8133b9d1
      2007-08-14  Ed Schonberg  <schonberg@adacore.com>
      	    Robert Dewar  <dewar@adacore.com>
      
      	* atree.ads, atree.adb (New_Copy_Tree): If hash table is being used and
      	itype is visited, make an entry into table to link associated node and
      	new itype.
      	Add comments and correct harmless error in Build_NCT_Hash_Tables
      	(Array_Aggr_Subtype): Associate each itype created for an index type to
      	the corresponding range construct, and not to the aggregate itself. to
      	maintain a one-to-one correspondence between itype and its associated
      	node, to prevent errors when complex expression is copied.
      	Fix mishandling of multiple levels of parens
      
      	* sem_aggr.adb: Create a limited view of an incomplete type, to make
      	treatment of limited views uniform for all visible declarations in a
      	limited_withed package.
      	(New_Copy_Tree): If hash table is being used and itype is visited,
      	make an entry into table to link associated node and new itype.
      	(Resolve_Record_Aggregate): Do not add an others box association for a
      	discriminated record component that has only discriminants, when there
      	is a box association for the component itself.
      
      	* par-ch4.adb: Fix mishandling of multiple levels of parens
      
      From-SVN: r127412
      Ed Schonberg committed
    • a-stzsup.adb, [...]: Fix warnings for range tests optimized out. · d766cee3
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Gary Dismukes  <dismukes@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      	    Thomas Quinot  <quinot@adacore.com>
      
      	* a-stzsup.adb, nlists.adb, lib-util.adb, treepr.adb, 
      	a-stwisu.adb, a-strsup.adb: Fix warnings for range
      	tests optimized out.
      
      	* exp_ch4.adb (Expand_N_In): Add warnings for range tests optimized out.
      	(Get_Allocator_Final_List): For the case of an anonymous access type
      	that has a specified Associated_Final_Chain, do not go up to the
      	enclosing scope.
      	(Expand_N_Type_Conversion): Test for the case of renamings of access
      	parameters when deciding whether to apply a run-time accessibility
      	check.
      	(Convert_Aggr_In_Allocator): Use Insert_Actions to place expanded
      	aggregate code before allocator, and ahead of declaration for
      	temporary, to prevent access before elaboration when the allocator is
      	an actual for an access parameter.
      	(Expand_N_Type_Conversion): On an access type conversion involving an
      	access parameter, do not apply an accessibility check when the
      	operand's original node was an attribute other than 'Access. We now
      	create access conversions for the expansion of 'Unchecked_Access and
      	'Unrestricted_Access in certain cases and clearly accessibility should
      	not be checked for those.
      
      	* exp_ch6.ads, exp_ch6.adb (Add_Call_By_Copy_Code): For an actual that
      	includes a type conversion of a packed component that has been expanded,
      	recover the original expression for the object, and use this expression
      	in the post-call assignment statement, so that the assignment is made
      	to the object and not to a back-end temporary.
      	(Freeze_Subprogram): In case of primitives of tagged types not defined
      	at the library level force generation of code to register the primitive
      	in the dispatch table. In addition some code reorganization has been
      	done to leave the implementation clear.
      	(Expand_Call): When expanding an inherited implicit conversion,
      	preserve the type of the inherited function after the intrinsic
      	operation has been expanded.
      
      	* exp_ch2.ads, exp_ch2.adb
      	(Expand_Entry_Parameter.In_Assignment_Context): An implicit dereference
      	of an entry formal appearing in an assignment statement does not assign
      	to the formal.
      	(Expand_Current_Value): Instead of calling a routine to determine
      	whether the prefix of an attribute reference should be optimized or
      	not, prevent the optimization of such prefixes all together.
      
      	* lib-xref.adb (Generate_Reference.Is_On_LHS): An indexed or selected
      	component whose prefix is known to be of an access type is an implicit
      	dereference and does not assign to the prefix.
      
      From-SVN: r127411
      Robert Dewar committed
    • inline.adb, [...]: Suppress unmodified in-out parameter warning in some cases… · 939c12d2
      inline.adb, [...]: Suppress unmodified in-out parameter warning in some cases This patch is a also...
      
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      	    Ed Schonberg  <schonberg@adacore.com>
      
      	* inline.adb, types.ads, inline.ads, frontend.adb, alloc.ads: 
      	Suppress unmodified in-out parameter warning in some cases
      	This patch is a also fairly significant change to the way suppressible
      	checks are handled.
      
      	* checks.ads, checks.adb (Install_Null_Excluding_Check): No check
      	needed for access to concurrent record types generated by the expander.
      	(Generate_Range_Check): When generating a temporary to capture the
      	value of a conversion that requires a range check, set the type of the
      	temporary before rewriting the node, so that the type is always
      	properly placed for back-end use.
      	(Apply_Float_Conversion_Check): Handle case where the conversion is
      	truncating.
      	(Get_Discriminal): Code reformatting. Climb the scope stack looking
      	for a protected type in order to examine its discriminants.
      
      From-SVN: r127410
      Robert Dewar committed
    • uintp.adb, [...]: Minor reformatting. · 835d23b2
      2007-08-14  Robert Dewar  <dewar@adacore.com>
      
      	* uintp.adb, a-ztedit.adb, s-wchcon.adb, xnmake.adb, s-wchcon.adb,
      	par-ch5.adb, par-ch10.adb, get_targ.adb, a-wtedit.adb, a-teioed.adb,
      	s-osinte-solaris.adb, s-osinte-solaris.ads,
      	s-osinte-freebsd.ads, s-osinte-freebsd.adb: Minor reformatting.
      
      	* styleg.adb, styleg.ads, stylesw.adb, stylesw.ads: implement style
      	switch -gnatyS. Enable -gnatyS in GNAT style check mode
      
      From-SVN: r127409
      Robert Dewar committed
    • a-calend-vms.adb, [...] ("+", [...]): Remove calls to Check_Within_Time_Bounds. · 4a9b6b95
      2007-08-14  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* a-calend-vms.adb, a-calend.adb ("+", "-", Add, Subtract): Remove
      	calls to Check_Within_Time_Bounds.
      	("+", "-", Add, Subtract): Remove calls to Check_Within_Time_Bounds.
      	(Difference): Account for possible rounding of the resulting difference
      
      From-SVN: r127408
      Hristian Kirtchev committed
    • g-soccon-interix.ads, [...]: Removed. · 40760d6c
      2007-08-14  Thomas Quinot  <quinot@adacore.com>
      
      	* g-soccon-interix.ads, a-excpol-interix.adb, a-intnam-interix.ads, 
      	s-osinte-interix.ads, system-interix.ads: Removed.
      
      From-SVN: r127407
      Thomas Quinot committed