1. 15 Feb, 2006 40 commits
    • sem_ch9.adb (Analyze_Protected_Type, [...]): Check that if this is the… · d97d1726
      sem_ch9.adb (Analyze_Protected_Type, [...]): Check that if this is the full-declaration associated with a private...
      
      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).
      
      From-SVN: r111094
      Javier Miranda committed
    • sem_ch8.adb (Note_Redundant_Use): Suppress unhelpful warning about redundant use clauses. · cdc8c54c
      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.
      
      From-SVN: r111093
      Bob Duff committed
    • sem_ch4.adb (Remove_Abstract_Interpretations): Even if there are no abstract… · fe45e59e
      sem_ch4.adb (Remove_Abstract_Interpretations): Even if there are no abstract interpretations on an operator...
      
      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.
      
      From-SVN: r111092
      Ed Schonberg committed
    • sem_ch12.adb (Inline_Instance_Body): Remove erroneous assumption that Scope_Stack.First = 1. · 57193e09
      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.
      
      From-SVN: r111091
      Thomas Quinot committed
    • sem_ch10.adb (Check_Redundant_Withs): New procedure in Analyze_Compilation_Unit. · 561d9139
      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.
      
      From-SVN: r111090
      Hristian Kirtchev committed
    • sem_attr.adb (Analyze_Attribute): In case of 'Class applied to an abstract interface type call... · b8dc622e
      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
      
      From-SVN: r111089
      Javier Miranda committed
    • sem_aggr.adb (Resolve_Record_Aggregate): Restructure the code that handles… · 9b96e234
      sem_aggr.adb (Resolve_Record_Aggregate): Restructure the code that handles default-initialized components to keep...
      
      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.
      
      From-SVN: r111088
      Javier Miranda committed
    • s-auxdec-vms_64.ads (Short_Address): Wrap it in a type. · 851cfa6f
      2006-02-13  Douglas Rupp  <rupp@adacore.com>
      
      	* s-auxdec-vms_64.ads (Short_Address): Wrap it in a type.
      
      From-SVN: r111087
      Doug Rupp committed
    • restrict.ads (No_Dispatching_Calls): New GNAT restriction. · 3bcd6930
      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
      
      From-SVN: r111086
      Javier Miranda committed
    • prj-makr.adb (Make): Preserve the comments from the original project file. · e4ffa8ad
      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.
      
      From-SVN: r111085
      Vincent Celier committed
    • prj.ads (Error_Warning): New enumeration type · 97b7ca6f
      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.
      
      From-SVN: r111084
      Vincent Celier committed
    • prj.adb (Reset): Initialize the first element of table Namings with the standard naming data. · 795b06b1
      2006-02-13  Vincent Celier  <celier@adacore.com>
      
      	* prj.adb (Reset): Initialize the first element of table Namings with
      	the standard naming data.
      
      From-SVN: r111083
      Vincent Celier committed
    • par-endh.adb (Explicit_Start_Label): Add code to protect the parser against… · 9c723dcb
      par-endh.adb (Explicit_Start_Label): Add code to protect the parser against source containing syntax errors.
      
      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.
      
      From-SVN: r111082
      Javier Miranda committed
    • par-ch6.adb, [...]: Implement -gnatyI switch (MODE_IN) · 4f73f89c
      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)
      
      From-SVN: r111081
      Robert Dewar committed
    • re PR ada/23973 (without -gnat05, GNAT warns that interface is new kw, but… · 76346895
      re PR ada/23973 (without -gnat05, GNAT warns that interface is new kw, but misses one frequent occurence)
      
      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.
      
      From-SVN: r111080
      Javier Miranda committed
    • mlib-prj.adb (Index): New function · 8aa0b2c6
      2006-02-13  Vincent Celier  <celier@adacore.com>
      
      	* mlib-prj.adb (Index): New function
      	(Build_Library): When building a shared library, add to the run path
      	the directory of the shared version of libgcc.
      	(Build_Library): Output shared decgnat library.
      	(Process_Binder_File): Test for shared decgnat library.
      
      From-SVN: r111079
      Vincent Celier committed
    • make.adb (Collect_Arguments_And_Compile): For VMS... · f2c573b1
      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.
      
      From-SVN: r111078
      Vincent Celier committed
    • lib-xref.adb (Get_Type_Reference): For a private type whose full view is an array type... · 25c87b0f
      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.
      
      From-SVN: r111077
      Ed Schonberg committed
    • g-spipat.adb (Image, [...]): These two cases were generating incorrect output... · ae8926a0
      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.
      
      From-SVN: r111076
      Robert Dewar committed
    • gnatcmd.adb (Rules_Switches): New table · 9312a51e
      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.
      
      From-SVN: r111075
      Vincent Celier committed
    • gnatbind.adb (Scan_Bind_Arg): Replace error by warning on -M and native platforms. · 6d566287
      	* 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.
      
      From-SVN: r111074
      Arnaud Charlet committed
    • g-dyntab.adb (Index_Of): conversion from Natural can no longer raise Constraint_Error. · 987b2901
      2006-02-13  Matthew Heaney  <heaney@adacore.com>
      
      	*  g-dyntab.adb (Index_Of): conversion from Natural can no longer raise
      	Constraint_Error.
      
      From-SVN: r111073
      Matthew Heaney committed
    • g-catiio.adb (Sec_Number): New type used to compute the number of seconds since 1-1-1970. · 99c22291
      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.
      
      From-SVN: r111072
      Pascal Obry committed
    • g-altive.ads (VECTOR_ALIGNMENT): Set to Min (16... · 0c52d1f3
      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.
      
      From-SVN: r111071
      Olivier Hainque committed
    • freeze.adb (Freeze_Entity): Handle subtypes of protected types and task types when... · add9f797
      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.
      
      From-SVN: r111070
      Javier Miranda committed
    • re PR ada/18819 (ACATS cdd2a02 fail at runtime) · 59e54267
      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.
      
      From-SVN: r111069
      Ed Schonberg committed
    • exp_pakd.ads: Fix typos in comments. · f55cfa2e
      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.
      
      From-SVN: r111068
      Thomas Quinot committed
    • exp_intr.adb (Expand_Unc_Deallocation): Correct error of bad analyze call. · dad9a816
      2006-02-13  Robert Dewar  <dewar@adacore.com>
      
      	* exp_intr.adb (Expand_Unc_Deallocation): Correct error of bad analyze
      	call.
      
      From-SVN: r111067
      Robert Dewar committed
    • expect.c (__gnat_expect_portable_execvp): New implementation. · 0273bbb4
      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.
      
      From-SVN: r111066
      Pascal Obry committed
    • exp_dist.adb (Copy_Specification): For access parameters... · d48e258e
      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.
      
      From-SVN: r111065
      Ed Schonberg committed
    • exp_disp.ads, [...] (Expand_Dispatching_Call): If the controlling argument of… · b0efe69e
      exp_disp.ads, [...] (Expand_Dispatching_Call): If the controlling argument of the dispatching call is an abstract interface...
      
      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.
      
      From-SVN: r111064
      Javier Miranda committed
    • exp_ch9.adb (Expand_N_Protected_Type_Declaration): When creating the components… · e5cfd2f7
      exp_ch9.adb (Expand_N_Protected_Type_Declaration): When creating the components of the corresponding record...
      
      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.
      
      From-SVN: r111063
      Ed Schonberg committed
    • re PR ada/25885 (Tree checking failure on ASIS) · c8ef728f
      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.
      
      From-SVN: r111062
      Ed Schonberg committed
    • exp_ch5.adb (Expand_Assign_Array): If the right-hand side is a string... · 6ec9c97a
      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.
      
      From-SVN: r111061
      Ed Schonberg committed
    • exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to… · dfd99a80
      exp_ch4.adb (Expand_Allocator_Expression): Pass Allocator => True to Make_Adjust_Call done for a newly-allocated object.
      
      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.
      
      From-SVN: r111060
      Thomas Quinot committed
    • exp_ch3.adb (Component_Needs_Simple_Initialization): Add check for availability… · a05e99a2
      exp_ch3.adb (Component_Needs_Simple_Initialization): Add check for availability of RE_Interface_Tag.
      
      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
      
      From-SVN: r111059
      Javier Miranda committed
    • exp_attr.adb (Expand_N_Attribute_Reference, [...]): If attribute Mechanism_Code… · 80d4224f
      exp_attr.adb (Expand_N_Attribute_Reference, [...]): If attribute Mechanism_Code is applied to renamed subprogram...
      
      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.
      
      From-SVN: r111058
      Robert Dewar committed
    • exp_aggr.adb (Build_Array_Aggr_Code): Rename variable "Others_Mbox_Present" to… · d8f7b976
      exp_aggr.adb (Build_Array_Aggr_Code): Rename variable "Others_Mbox_Present" to "Others_Box_Present" because the mbox...
      
      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.
      
      From-SVN: r111057
      Ed Schonberg committed
    • bindusg.adb: Updated documentation for -d and -D switches. · 2c351f04
      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.
      
      From-SVN: r111056
      Quentin Ochem committed
    • einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend against errors… · ba673907
      einfo.ads, einfo.adb (First_Tag_Component): Protect the frontend against errors in the source program...
      
      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.
      
      From-SVN: r111055
      Javier Miranda committed