Commit graph

73929 commits

Author SHA1 Message Date
Doug Rupp
851cfa6f00 s-auxdec-vms_64.ads (Short_Address): Wrap it in a type.
2006-02-13  Douglas Rupp  <rupp@adacore.com>

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

From-SVN: r111087
2006-02-15 10:43:32 +01:00
Javier Miranda
3bcd6930a9 restrict.ads (No_Dispatching_Calls): New GNAT restriction.
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
2006-02-15 10:43:23 +01:00
Vincent Celier
e4ffa8adc7 prj-makr.adb (Make): Preserve the comments from the original project file.
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
2006-02-15 10:43:11 +01:00
Vincent Celier
97b7ca6fff prj.ads (Error_Warning): New enumeration type
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
2006-02-15 10:43:00 +01:00
Vincent Celier
795b06b102 prj.adb (Reset): Initialize the first element of table Namings with the standard naming data.
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
2006-02-15 10:42:47 +01:00
Javier Miranda
9c723dcb4d 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
2006-02-15 10:42:38 +01:00
Robert Dewar
4f73f89c47 par-ch6.adb, [...]: Implement -gnatyI switch (MODE_IN)
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
2006-02-15 10:42:27 +01:00
Javier Miranda
76346895e7 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
2006-02-15 10:42:14 +01:00
Vincent Celier
8aa0b2c698 mlib-prj.adb (Index): New function
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
2006-02-15 10:42:01 +01:00
Vincent Celier
f2c573b112 make.adb (Collect_Arguments_And_Compile): For VMS...
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
2006-02-15 10:41:49 +01:00
Ed Schonberg
25c87b0f9c lib-xref.adb (Get_Type_Reference): For a private type whose full view is an array type...
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
2006-02-15 10:41:35 +01:00
Robert Dewar
ae8926a0ed g-spipat.adb (Image, [...]): These two cases were generating incorrect output...
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
2006-02-15 10:41:22 +01:00
Vincent Celier
9312a51e5f gnatcmd.adb (Rules_Switches): New table
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
2006-02-15 10:41:11 +01:00
Arnaud Charlet
6d566287bc gnatbind.adb (Scan_Bind_Arg): Replace error by warning on -M and native platforms.
* 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
2006-02-15 10:41:02 +01:00
Matthew Heaney
987b2901fd g-dyntab.adb (Index_Of): conversion from Natural can no longer raise Constraint_Error.
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
2006-02-15 10:40:52 +01:00
Pascal Obry
99c222911b g-catiio.adb (Sec_Number): New type used to compute the number of seconds since 1-1-1970.
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
2006-02-15 10:40:43 +01:00
Olivier Hainque
0c52d1f344 g-altive.ads (VECTOR_ALIGNMENT): Set to Min (16...
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
2006-02-15 10:40:32 +01:00
Javier Miranda
add9f797fa freeze.adb (Freeze_Entity): Handle subtypes of protected types and task types when...
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
2006-02-15 10:40:24 +01:00
Ed Schonberg
59e54267fc re PR ada/18819 (ACATS cdd2a02 fail at runtime)
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
2006-02-15 10:40:13 +01:00
Thomas Quinot
f55cfa2e7f exp_pakd.ads: Fix typos in comments.
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
2006-02-15 10:39:54 +01:00
Robert Dewar
dad9a81668 exp_intr.adb (Expand_Unc_Deallocation): Correct error of bad analyze call.
2006-02-13  Robert Dewar  <dewar@adacore.com>

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

From-SVN: r111067
2006-02-15 10:39:41 +01:00
Pascal Obry
0273bbb409 expect.c (__gnat_expect_portable_execvp): New implementation.
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
2006-02-15 10:39:28 +01:00
Ed Schonberg
d48e258e71 exp_dist.adb (Copy_Specification): For access parameters...
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
2006-02-15 10:39:18 +01:00
Javier Miranda
b0efe69eae 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
2006-02-15 10:39:06 +01:00
Ed Schonberg
e5cfd2f770 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
2006-02-15 10:38:53 +01:00
Ed Schonberg
c8ef728f43 re PR ada/25885 (Tree checking failure on ASIS)
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
2006-02-15 10:38:39 +01:00
Ed Schonberg
6ec9c97a35 exp_ch5.adb (Expand_Assign_Array): If the right-hand side is a string...
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
2006-02-15 10:38:19 +01:00
Thomas Quinot
dfd99a80f0 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
2006-02-15 10:38:10 +01:00
Javier Miranda
a05e99a269 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
2006-02-15 10:38:00 +01:00
Robert Dewar
80d4224f5b 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
2006-02-15 10:37:43 +01:00
Ed Schonberg
d8f7b976d7 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
2006-02-15 10:37:33 +01:00
Quentin Ochem
2c351f04f4 bindusg.adb: Updated documentation for -d and -D switches.
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
2006-02-15 10:37:21 +01:00
Javier Miranda
ba67390781 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
2006-02-15 10:37:10 +01:00
Robert Dewar
1f6a2b51d1 opt.ads opt.adb: Add Ada_Version_Explicit_Config along with save/restore routines.
2006-02-13  Robert Dewar  <dewar@adacore.com>
	    Serguei Rybin  <rybin@adacore.com>

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

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

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

From-SVN: r111054
2006-02-15 10:36:57 +01:00
Robert Dewar
61dddae4e7 debug.adb: Eliminate numeric switches for binder/gnatmake
2006-02-13  Robert Dewar  <dewar@adacore.com>
	    Vincent Celier  <celier@adacore.com>

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

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

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

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

From-SVN: r111053
2006-02-15 10:36:45 +01:00
Ed Schonberg
86ac5e79ab checks.adb (Build_Discriminant_Checks): If the expression being checks is an aggregate retrieve the values of its...
2006-02-13  Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

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

From-SVN: r111052
2006-02-15 10:36:35 +01:00
Vincent Celier
32c65fc062 a-direct.adb (Duration_To_Time, [...]): New Unchecked_Conversion functions.
2006-02-13  Vincent Celier  <celier@adacore.com>

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

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

From-SVN: r111051
2006-02-15 10:36:23 +01:00
Eric Botcazou
463af61db6 s-stchop.adb (Stack_Check): Raise Storage_Error if the argument has wrapped around.
2006-02-13  Eric Botcazou  <ebotcazou@adacore.com>

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

From-SVN: r111050
2006-02-15 10:36:13 +01:00
Robert Dewar
3a0462b3e6 err_vars.ads: Suppress range checks for a couple of assignments which otherwise cause...
2006-02-13  Robert Dewar  <dewar@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>

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

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

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

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

From-SVN: r111049
2006-02-15 10:36:02 +01:00
Robert Dewar
7a5cf1d56a erroutc.ads, [...] (Set_Message_Blank): Don't insert space after hyphen (small aesthetic change useful for a range of...
2006-02-13  Robert Dewar  <dewar@adacore.com>

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

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

From-SVN: r111048
2006-02-15 10:35:45 +01:00
Robert Dewar
858f81da87 gnatvsn.ads (Current_Year): New constant, used to easily update copyright on all GNAT tools.
2006-02-13  Robert Dewar  <dewar@adacore.com>

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

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

From-SVN: r111047
2006-02-15 10:35:33 +01:00
Vincent Celier
003dd7a72f gnatlink.adb (Process_Binder_File): If -shared is specified, invoke gcc to link with option -shared-libgcc.
2006-02-13  Vincent Celier  <celier@adacore.com>

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

From-SVN: r111046
2006-02-15 10:35:23 +01:00
Joel Brobecker
4430b48995 bindgen.adb (Gen_Main_C): declare the ensure_reference variable as volatile...
2006-02-13  Joel Brobecker  <brobecke@adacore.com>

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

From-SVN: r111045
2006-02-15 10:35:12 +01:00
Vincent Celier
65aa56ecd6 back_end.adb (Scan_Compiler_Arguments): Check if Search_Directory_Present is True and...
2006-02-13  Vincent Celier  <celier@adacore.com>

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

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

From-SVN: r111044
2006-02-15 10:34:58 +01:00
Geert Bosch
fd0137781f re PR ada/20753 (ACATS ce3810b segfaults at runtime)
2006-02-13  Geert Bosch  <bosch@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

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

	PR ada/20753

	(Put): Fix condition to raise Layout_Error when invalid
	layout is requested.

From-SVN: r111043
2006-02-15 10:34:48 +01:00
Robert Dewar
531eb217c9 rtsfind.adb, [...]: Minor code reorganization (not Present should be No)
2006-02-13  Robert Dewar  <dewar@adacore.com>

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

From-SVN: r111042
2006-02-15 10:34:36 +01:00
Hristian Kirtchev
e1458816e1 a-tiboio.adb, [...]: New files.
2006-02-13  Hristian Kirtchev  <kirtchev@adacore.com>

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

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

From-SVN: r111041
2006-02-15 10:34:21 +01:00
Pat Rogers
31d7a8bd3d a-rttiev.adb, [...]: New files.
2006-02-13  Pat Rogers  <rogers@adacore.com>

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

From-SVN: r111040
2006-02-15 10:33:57 +01:00
Nicolas Roche
261ce0eb82 a-envvar.adb, [...]: New files.
2006-02-13  Nicolas Roche  <roche@adacore.com>

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

From-SVN: r111039
2006-02-15 10:33:38 +01:00
Robert Dewar
5cbfe1be93 a-ticoio.ads, [...]: Add use clause (moved here from spec)
2006-02-13  Robert Dewar  <dewar@adacore.com>

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

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

From-SVN: r111038
2006-02-15 10:33:28 +01:00