Commit graph

81543 commits

Author SHA1 Message Date
Javier Miranda
2b73cf6852 sem_ch3.adb (Process_Full_View): Propagate the CPP_Class attribute to the full type declaration.
2007-04-20  Javier Miranda  <miranda@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process_Full_View): Propagate the CPP_Class attribute to
	the full type declaration.
	(Analyze_Component_Declaration): Add local variable E to capture the
	initialization expression of the declaration. Replace the occurences of
	Expression (N) with E.
	(OK_For_Limited_Init_In_05): Allow initialization of class-wide
	limited interface object with a function call.
	(Array_Type_Declaration): If the declaration lacks subtype marks for
	indices, create a simple index list to prevent cascaded errors.
	(Is_Null_Extension): Ignore internal components created for secondary
	tags when checking whether a record extension is a null extension.
	(Check_Abstract_Interfaces): Add missing support for interface subtypes
	and generic formals.
	(Derived_Type_Declaration): Add missing support for interface subtypes
	and generic formals.
	(Analyze_Object_Declaration): If an initialization expression is
	present, traverse its subtree and mark all allocators as static
	coextensions.
	(Add_Interface_Tag_Component): When looking for components that may be
	secondary tags, ignore pragmas that can appear within a record
	declaration.
	(Check_Abstract_Overriding): an inherited function that dispatches on
	result does not need to be overriden if the controlling type is a null
	extension.
	(Mentions_T): Handle properly a 'class attribute in an anonymous access
	component declaration, when the prefix is an expanded name.
	(Inherit_Component): If the derivation is for a private extension,
	inherited components remain visible and their ekind should not be set
	to Void.
	(Find_Type_Of_Object): In the case of an access definition, always set
	Is_Local_Anonymous_Access. We were previously not marking the anonymous
	access type of a return object as a local anonymous type.
	(Make_Index): Use Ambiguous_Character to report ambiguity on a discrete
	range with character literal bounds.
	(Constrain_Array): Initialize the Packed_Array_Type field to Empty.
	(Access_Subprogram_Declaration): Indicate that the type declaration
	depends on an incomplete type only if the incomplete type is declared
	in an open scope.
	(Analyze_Subtype_Declaration): Handle properly subtypes of
	synchronized types that are tagged, and that may appear as generic
	actuals.
	(Access_Subprogram_Declaration): An anonymous access to subprogram can
	appear as an access discriminant in a private type declaration.
	(Add_Interface_Tag_Components): Complete decoration of the component
	containing the tag of a secondary dispatch table and the component
	containing the offset to the base of the object (this latter component
	is only generated when the parent type has discriminants --as documented
	in this routine).
	(Inherit_Components): Use the new decoration of the tag components to
	improve the condition that avoids inheriting the components associated
	with secondary tags of the parent.
	(Build_Discriminanted_Subtype): Indicate to the backend that the
	size of record types associated with dispatch tables is known at
	compile time.
	(Analyze_Subtype_Declaration): Propagate Is_Interface flag when needed.
	(Analyze_Interface_Declaration): Change setting of Is_Limited_Interface
	to include task, protected, and synchronized interfaces as limited
	interfaces.
	(Process_Discriminants): Remove the setting of
	Is_Local_Anonymous_Access on the type of (anonymous) access
	discriminants of nonlimited types.
	(Analyze_Interface_Type_Declaration): Complete the decoration of the
	class-wide entity it is is already present. This situation occurs if
	the limited-view has been previously built.
	(Enumeration_Type_Declaration): Initialize properly the Enum_Pos_To_Rep
	field.
	(Add_Interface_Tag_Components.Add_Tag): Set the value of the attribute
	Related_Interface.

From-SVN: r125437
2007-06-06 12:39:14 +02:00
Vincent Celier
717809895b osinte-c.ads, [...] (Set_Library_Info_Name): Fail if base name of specified object file is not equal to base name of source.
2007-04-20  Vincent Celier  <celier@adacore.com>

	* osinte-c.ads, osint-c.adb (Set_Library_Info_Name): Fail if base name
	of specified object file is not equal to base name of source.

From-SVN: r125436
2007-06-06 12:38:46 +02:00
Vincent Celier
b5755e2ba5 mlib.ads, mlib.adb (Build_Library): Do not use hard-coded directory separator...
2007-04-20  Vincent Celier  <celier@adacore.com>

	* mlib.ads, mlib.adb (Build_Library): Do not use hard-coded directory
	separator, use instead the proper host directory separator.
	(Copy_ALI_Files): Make sure that an already existing ALI file in the
	ALI copy dir is writable, before doing the copy.

	* mlib-utl.ads, mlib-utl.adb: 
	(Gcc): If length of command line is too long, put the list of object
	files in a response file, if this is supported by the platform.
	(Ar): If invocation of the archive builder is allowed to be done in
	chunks and building it in one shot would go above an OS dependent
	limit on the number of characters on the command line, build the archive
	in chunks.

From-SVN: r125435
2007-06-06 12:38:29 +02:00
Pascal Obry
da4d406dcb mkdir.c (__gnat_mkdir): Add support for UTF-8.
2007-04-20  Pascal Obry  <obry@adacore.com>

	* mkdir.c (__gnat_mkdir): Add support for UTF-8.

From-SVN: r125434
2007-06-06 12:38:07 +02:00
Jose Ruiz
66680f7af6 Makefile.in (LIBGNAT_TARGET_PAIRS for VxWorks 6): For the RTP run time...
2007-04-20  Jose Ruiz  <ruiz@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* Makefile.in (LIBGNAT_TARGET_PAIRS for VxWorks 6): For the RTP run
	time, use the default s-interr body that provides interrupt support
	based on signals.
	(LIBGNAT_TARGET_PAIRS for x86-linux): Use specialized versions of
	a-exetim.ad{s,b}, a-extiti.ad{s,b}, a-rttiev.ad{s,b}, s-osinte.ad{s,b},
	g-soccon.ads, and s-taprop.adb for the marte run time.
	(EXTRA_GNATRTL_TASKING_OBJS for x86-linux): Execution time clocks and
	timers are supported on marte.
	(EH_MECHANISM for marte): Do not use ZCX.
	(THREADSLIB for marte): Use -lmarte.
	Add mlib-tgt-vms.o to the list of objects for gnatmake for VMS
	Add mlib-tgt-specific.o to gnatmake objects
	mlib-tgt-<platforms>.adb is now the body of MLib.Tgt.Specific, no
	longer of MLib.Tgt.
	(LIBGNAT_TARGET_PAIRS for vxworks): When building a run time for VxWorks
	6, either kernel or rtp, use a specialized version of s-osinte.ads.

From-SVN: r125433
2007-06-06 12:37:53 +02:00
Arnaud Charlet
d3cc6a3226 lib-writ.adb: Handle Convention_CIL in addition to Convention_Java, since both are separated.
2007-04-20  Arnaud Charlet  <charlet@adacore.com>
	    Vincent Celier  <celier@adacore.com>

	* lib-writ.adb: Handle Convention_CIL in addition to Convention_Java,
	since both are separated.
	Add support for imported CIL packages.
	Add further special handling of "value_type" for CIL.
	Add special handling of pragma Import for CIL.

	* make.ads, make.adb: When switch -eS is used, direct all outputs to
	standard output instead of standard error, except errors.
	(Absolute_Path): Use untouched casing for the parent directory.
	(Add_Library_Search_Dir): Use the untouched directory name.
	(Add_Source_Search_Dir): Idem.
	(Change_To_Object_Directory): Update output to use proper casing.
	(Create_Binder_Mapping_File): Use the untouched filename to set
	ALI_Name.
	(Gnatmake): Use untouched library and executable directory names.
	(Insert_Project_Sources): Use untouched filename for spec and body.
	(Is_In_Object_Directory): Use untouched object directory.
	(Mark_Directory): Idem.
	(Collect_Arguments_And_Compile): Ensure that Full_Source_File always
	contains the non-canonical filename in all cases.
	(Change_To_Object_Directory): In verbose mode, display the name of the
	object directory we're changing to.
	(Compile_Sources): Make sure, when a project file is used, to compile
	the body of the unit, when there is one, even when only the spec is
	recorded in an ALI file.
	(Gcc_Switches, Binder_Switches, Linker_Switches): Tables moved from the
	spec to the body.
	(Report_Compilation_Failed): New procedure
	(Bind, Display_Commands, Compile_Sources, Initialize, Scan_Make_Arg):
	procedures moved from the spec to the body.
	(Extract_Failure): Removed, not used
	Replace explicit raises of exception Bind_Failed and Link_Failed with
	calls to Make_Failed with the proper message.
	Replace explicit raises of exception Compilation_Failed with calls to
	procedure Report_Compilation_Failed.
	(Initialize): Create mapping files unconditionally when using project
	files.

	* sem_mech.adb: (Name_CIL, Name_CIL_Constructor, Convention_CIL,
	Pragma_CIL_Constructor): New names.

	* targparm.ads, targparm.adb
	(Compiler_System_Version): Removed, no longer used.
	(Get_Target_Parameters): Relax checks on system.ads validity. Add
	handling of two new system flags: JVM and CLI.

From-SVN: r125432
2007-06-06 12:37:41 +02:00
Ed Schonberg
437bae3f74 sem_ch12.adb (Analyze_Associations): Diagnose use of an others association in an instance.
2007-04-20  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* sem_ch12.adb (Analyze_Associations): Diagnose use of an others
	association in an instance.
	(Copy_Generic_Node): If the node is a string literal, no need to copy
	its descendants.
	(Is_Generic_Formal): For a formal subprogram, the declaration is the
	grandparent of the entity.
	(Analyze_Formal_Interface_Type): Transform into a full type declaration,
	to simplify handling of formal interfaces that derive from other formal
	interfaces.
	(Instantiate_Subprogram_Body): The defining unit name of the body of
	the instance should be a defining identifier.
	(Install_Formal_Packages): make global to the package, for use in
	instantiations of child units.
	(Analyze_Package_Instantiation): Do not attempt to set information on an
	enclosing master of an entry when expansion is disabled.
	(Instantiate_Type): If the actual is a tagged synchronized type and the
	generic ancestor is an interface, create a generic actual for the
	corresponding record.
	(Analyze_Formal_Derived_Interface_Type): Rewrite as a derived type
	declaration, to ensure that the interface list is processed correctly.
	(Inline_Instance_Body): If enclosing scope is an instance body, remove
	its entities from visibiility as well.
	(Pre_Analyze_Actuals): if the actual is an allocator with  constraints
	given with a named association, analyze the expression only, not the
	discriminant association itself.
	(Reset_Entity): If the analysis of a selected component is transformed
	into an expanded name in the prefix of a call with parameters, do not
	transform the original node into an expanded name, to prevent visibility
	errors in the case of nested generics.
	(Check_Private_View): For an array type, check whether the index types
	may need exchanging.

From-SVN: r125431
2007-06-06 12:37:16 +02:00
Robert Dewar
f35b24e9cc layout.ads, layout.adb (Adjust_Esize_Alignment): Move spec to package spec from body
2007-04-20  Robert Dewar  <dewar@adacore.com>

	* layout.ads, layout.adb (Adjust_Esize_Alignment): Move spec to package
	spec from body
	(Layout_Type): Fix recomputation of size from alignment.

From-SVN: r125430
2007-06-06 12:36:48 +02:00
Olivier Hainque
27f92b1609 initialize.c (__gnat_initialize for vxworks): Update documentation on the ZCX support...
2007-04-20  Olivier Hainque  <hainque@adacore.com>

	* initialize.c (__gnat_initialize for vxworks):  Update documentation
	on the ZCX support, using different sets of crtstuff objects than with
	GCC 3.4.

From-SVN: r125429
2007-06-06 12:36:28 +02:00
Tristan Gingold
dc64221190 init.c: Do not adjust IP of an imported VMS exception of ia64.
2007-04-20  Tristan Gingold  <gingold@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>

	* init.c: Do not adjust IP of an imported VMS exception of ia64.
	LIB$STOP is called to raise an exception and the IP of the exception
	is the instruction right after the call.
	(__gnat_adjust_context_for_raise, AIX): Implement.
	(__gnat_error_handler, AIX): Accept SIGINFO related arguments and call
	 adjust_context_for_raise before Raise_From_Signal_Hanler.
	(__gnat_install_handler, AIX): Add SA_SIGINFO to the sa_flags, to ensure
	siginfo is passed to the handler, necessary to let the zcx propagation
	engine unwind past it.

From-SVN: r125428
2007-06-06 12:36:17 +02:00
Vincent Celier
10e77af221 a-clrefi.adb, [...]: New files
2007-04-20  Vincent Celier  <celier@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

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

	* impunit.adb: Add s-os_lib in the list of user visible units.
	(Non_Imp_File_Names_95): Add a-clrefi to this list
	Remove obsolete run-time entries.
	(Non_Imp_File_Names_05): Add Ada 2005 entries for:
	 "a-exetim" -- Ada.Execution_Time
	 "a-extiti" -- Ada.Execution_Time.Timers

	* mlib-prj.ads, mlib-prj.adb
	(Build_Library): Use untouched object dir and library dir. At the
	same time makes sure that the checks are done using the canonical
	form. Removes hard-coded directory separator and use the proper host
	one instead.
	(Process_Project): Do not look in object directory to check if libgnarl
	is needed for a library, if there is no object directory.
	(Build_Library): Scan the ALI files to decide if libgnarl is needed for
	linking.
	(Build_Library): When invoking gnatbind, use a response file if the
	total size of the arguments is too large.

	* Makefile.rtl: (g-sttsne): New object file.
	Add entry for a-clrefi, s-utf_32, System.Exceptions

	* Make-lang.in: Remove bogus dependency of s-memory.o on memtrack.o.
	(GNAT_ADA_OBJS, GNATBIND_OBJS): Add s-except.o.
	(GNATBIND_OBJS): Add new objects a-clrefi.o and a-comlin.o
	Change g-string to s-string, g-os_lib to s-os_lib
	Change all g-utf_32 references to s-utf_32

From-SVN: r125427
2007-06-06 12:35:54 +02:00
Pascal Obry
26fa2a35f5 hostparm.ads (Normalized_CWD): Use the host directory separator instead of the hardcoded forward slash which...
2007-04-20  Pascal Obry  <obry@adacore.com>

	* hostparm.ads (Normalized_CWD): Use the host directory separator
	instead of the hardcoded forward slash which is not the proper
	character on Windows for example.
	(Java_VM): Removed.

From-SVN: r125426
2007-06-06 12:31:39 +02:00
Robert Dewar
45fdc75565 g-trasym.ads, [...]: Update list of supported targets Add note about symbolic traceback
2007-04-20  Robert Dewar  <dewar@adacore.com>

	* g-trasym.ads, g-traceb.ads: Update list of supported targets
	Add note about symbolic traceback

From-SVN: r125425
2007-06-06 12:31:28 +02:00
Thomas Quinot
9aeef76b6f g-soccon.ads: Add new constant Thread_Blocking_IO...
2007-04-20  Thomas Quinot  <quinot@adacore.com>

	* g-soccon.ads: Add new constant Thread_Blocking_IO, always True by
	default, set False on a per-runtime basis.
	(Need_Netdb_Buffer): New constant.

	* g-socket.ads, g-socket.adb: Import new package
	GNAT.Sockets.Thin.Task_Safe_NetDB.
	(Raise_Host_Error): Use Host_Error_Message from platform-specific thin
	binding to obtain proper message.
	(Close_Selector): Use GNAT.Sockets.Thin.Signalling_Fds.Close.
	Replace various occurrences of Arry (Arry'First)'Address with the
	equivalent Arry'Address (GNAT always follows implementation advice from
	13.3(14)).
	(Get_Host_By_Address, Get_Host_By_Name,
	Get_Service_By_Name, Get_Service_By_Port): Do not use GNAT.Task_Lock;
	instead, rely on platform-specific task safe netdb operations provided
	by g-socthi.

	* g-socthi.ads, g-socthi.adb (Initialize): Remove obsolete formal
	parameter Process_Blocking_IO.
	(Host_Error_Messages): Add stub body.
	(GNAT.Sockets.Thin.Signalling_Fds): New procedure Close.
	(Safe_Gethostbyname, Safe_Gethostbyaddr, Safe_Getservbyname,
	Safe_Getservbyport): Move functions into new child package
	Task_Safe_NetDB.
	(Nonreentrant_Gethostbyname, Nonreentrant_Gethostbyaddr,
	Nonreentrant_Getservbyname, Nonreentrant_Getservbyport): New routines.
	(In_Addr): Add alignment clause.

From-SVN: r125424
2007-06-06 12:31:06 +02:00
Emmanuel Briot
96338f1975 g-regpat.adb (Quote): Fix improper quoting of '.'
2007-04-20  Emmanuel Briot  <briot@adacore.com>

	* g-regpat.adb (Quote): Fix improper quoting of '.'

From-SVN: r125423
2007-06-06 12:30:52 +02:00
Thomas Quinot
bdfc3830f9 g-pehage.adb (Produce): Open output files in Binary mode...
2007-04-20  Thomas Quinot  <quinot@adacore.com>

	* g-pehage.adb (Produce): Open output files in Binary mode, so that
	they have UNIX line endings (LF only) even on Windows, and thus pass
	all GNAT style checks.

From-SVN: r125422
2007-06-06 12:30:40 +02:00
Vincent Celier
690792a21d g-os_lib.ads, [...] (Normalize_Pathname.Get_Directory): Correct obvious bug (return Dir; instead of return Directory;).
2007-04-20  Vincent Celier  <celier@adacore.com>

	* g-os_lib.ads, g-os_lib.adb (Normalize_Pathname.Get_Directory):
	Correct obvious bug (return Dir; instead of return Directory;).
	(Normalize_Pathname): Use Reference_Dir'Length, not Reference_Dir'Last

From-SVN: r125421
2007-06-06 12:30:30 +02:00
Vincent Celier
751089b271 gnatsym.adb: Update Copyright notice
2007-04-20  Vincent Celier  <celier@adacore.com>

	* gnatsym.adb: Update Copyright notice
	(Parse_Cmd_Line): Accept new switch -D
	(Gnatsym): In Direct policy (switch -D) copy reference file to symbol
	 file.

	* prj.ads (Policy): New policy Direct
	(Yes_No_Unknown): New enumeration type
	(Project_Data): New component Libgnarl_Needed

	* prj-nmsc.adb (Check_For_Source): When recording a source file make
	use the untouched pathname casing.
	(Get_Directories): Ensure that the Display_Exec_Directory is using the
	proper casing on non case-sensitive platforms like Windows.
	(Get_Unit): Accept file names x__... and x~... (where x = a, g, i or s)
	on all platforms, as it is not possible to know which one is allowed
	before processing the project files.
	(Check_Stand_Alone_Library): Check that Library_Reference_Symbol_File is
	specified when symbol policy is Direct. Check that when there is a
	symbol file defined (either by default or with attribute
	Library_Symbol_File) it is not the same as the reference symbol file.
	(Check_Stand_Alone_Library): Recognize new symbol policy Direct.
	(Look_For_Sources): Allow Locally_Removed_Files to be declare in non
	extending projects.
	(Record_Ada_Source): Record a source that has been locally removed in an
	imported project.

	* symbols.ads (Policy): New policy Direct

	* symbols-vms.adb (Initialize): Take new policy Direct in case
	statement

From-SVN: r125420
2007-06-06 12:30:19 +02:00
Vasiliy Fofanov
8cc39ff26b gmem.c: Add support for timestamps on memory operations.
2007-04-20  Vasiliy Fofanov  <fofanov@adacore.com>

	* gmem.c: Add support for timestamps on memory operations.

	* memtrack.adb, gnatmem.adb: Add support for timestamps on memory
	operations (not used currently, just foundation for future
	enhancements). Add possibility to perform full dump of gmem.out file.
	(Print_Back_Traces): Declare accesses to root arrays constants since
	they aren't modified.
	(Print_Back_Traces): allocate root arrays on the heap rather than stack.

From-SVN: r125419
2007-06-06 12:30:04 +02:00
Vincent Celier
9fd7938582 gnatls.adb: Add 3 spaces before the default project directory when...
2007-04-20  Vincent Celier  <celier@adacore.com>

	* gnatls.adb: 
	Add 3 spaces before the default project directory when displaying
	the project search path.
	Add new command line switch '-l' to display license information.

From-SVN: r125418
2007-06-06 12:29:53 +02:00
Vincent Celier
37ed3e0679 gnatlink.adb (Gnatlink): Do not specify -static-libgcc when --LINK= has been specified Correct error...
2007-04-20  Vincent Celier  <celier@adacore.com>

	* gnatlink.adb (Gnatlink): Do not specify -static-libgcc when --LINK=
	has been specified
	Correct error message when invocation of the linker fails
	Add explicit size clause for the C imported variables
	Object_List_File_Supported and Using_GNU_Linker to emphasize that
	we expect char size.
	Read target parameters earlier, since this is needed to set
	Target_VM properly. Also do not use -static/shared-libgcc for non GCC
	targets.

From-SVN: r125417
2007-06-06 12:29:41 +02:00
Vincent Celier
53a0bb66e7 gnatcmd.adb (GNATCmd): Accept switch -aP for commands that accept switch -P
2007-04-20  Vincent Celier  <celier@adacore.com>

	* gnatcmd.adb (GNATCmd): Accept switch -aP for commands that accept
	switch -P
	(ASIS_Main): New global variable
	(Get_Closure): New procedure
	(GNATCmd): Set ASIS_Main when -P and -U with a main is used for gnat
	check, metric or pretty. Call Get_Closure in this case.
	(Check_Files): For GNAT LIST, check all sources of all projects when
	All_Projects is True.
	(GNATCmd): Accept -U for GNAT LIST

From-SVN: r125416
2007-06-06 12:29:31 +02:00
Vincent Celier
f38df0e116 g-debpoo.ads, [...] (Free_Physically.Free_Blocks): Use the absolute value of Header.Block_Size when...
2007-04-20  Vincent Celier  <celier@adacore.com>
	    Emmanuel Briot  <briot@adacore.com>
	    Olivier Hainque  <hainque@adacore.com>

	* g-debpoo.ads, g-debpoo.adb (Free_Physically.Free_Blocks): Use the
	absolute value of Header.Block_Size when displaying the freed physical
	memory in traces.
	(Allocate): Compute Storage_Address using Integer_Address, not
	Storage_Offset, because the range of Storage_Offset may not be large
	enough.
	(Configure): New parameter Low_Level_Traces
	(Allocate, Deallocation, Free_Physically): Added low-level traces
	(Configure): new parameter Errors_To_Stdout.
	(Output_File): new subprogram
	(Deallocate, Dereference): Send error messages to the proper stream
	(Print_Pool, Print_Info_Stdout): Make sure the output goes to stdout, as
	documented. Previous code would send it to the current output file
	defined in GNAT.IO, which might not be stdout
	(Is_Valid): Adjust comment to mention that a positive reply means that
	Header_Of may be used to retrieve the allocation header associated with
	the subprogram Storage address argument. Return False early if this
	address argument is misaligned.

From-SVN: r125415
2007-06-06 12:29:21 +02:00
Robert Dewar
fbe627afbd g-comlin.ads, [...]: Add new warning for renaming of function return objects
2007-04-20  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* g-comlin.ads, g-comlin.adb: 
	Add new warning for renaming of function return objects

	* opt.adb (Tree_Write, Tree_Read): Use proper expressions for size
	(Tree_Read): Use size of object instead of type'object_size, since the
	latter is incorrect for packed array types.
	(Tree_Write): Same fix

	* opt.ads: Add new warning for renaming of function return objects
	(Generating_Code): New boolean variable used to indicate that the
	frontend as finished its work and has called the backend to process
	the tree and generate the object file.
	(GCC_Version): Is now private
	(Static_Dispatch_Tables): New constant declaration.
	(Overflow_Checks_Unsuppressed): New flag.
	(Process_Suppress_Unsuppress): Set Overflow_Checks_Unsuppressed.
	(List_Closure): New flag for gnatbind (-R)
	Zero_Formatting: New flag for gnatbind (-Z)
	(Special_Exception_Package_Used): New flag.
	(Warn_On_Unrepped_Components): New flag.

	* sem_ch8.adb (Check_Library_Unit_Renaming): Check that the renamed
	unit is a compilation unit, rather than relying on its scope, so that
	Standard can be renamed.
	(Analyze_Object_Renaming): Add new warning for renaming of function
	return objects.
	Also reject attempt to rename function return object in Ada 83 mode.
	(Attribute_Renaming): In case of tagged types, add the body of the
	generated function to the freezing actions of the type.
	(Find_Type): A protected type is visible right after the reserved word
	"is" is encountered in its type declaration. Set the entity and type
	rather than emitting an error message.
	(New_Scope): Properly propagate Discard_Names to inner scopes
	(Check_Nested_Access): New procedure.
	(Has_Nested_Access, Set_Has_Nested_Access): New procedures.
	(Find_Direct_Name, Note_Possible_Modification): Use Check_Nested_Access.

	* sem_warn.ads, sem_warn.adb: Improvements to infinite loop warning
	Add new warning for renaming of function return objects
	(Check_References): Suppress warnings for objects whose type or
	base type has Warnings suppressed.
	(Set_Dot_Warning_Switch): Add processing for -gnatw.c/C
	(Set_Warning_Switch): Include new -gnatwc in -gnatwa

From-SVN: r125414
2007-06-06 12:29:05 +02:00
Robert Dewar
f24f72e892 g-catiio.ads, [...] (Image): Check for null picture string
2007-04-20  Robert Dewar  <dewar@adacore.com>

	* g-catiio.ads, g-catiio.adb (Image): Check for null picture string

From-SVN: r125413
2007-06-06 12:28:45 +02:00
Robert Dewar
a2fd0ecb6e g-hesorg.ads, [...]: Update documentation GNAT.Heap/Bubble_Sort_G is now pure
2007-04-20  Robert Dewar  <dewar@adacore.com>

	* g-hesorg.ads, g-heasor.ads,
	g-busorg.ads, g-bubsor.ads: Update documentation
	GNAT.Heap/Bubble_Sort_G is now pure

From-SVN: r125412
2007-06-06 12:28:31 +02:00
Vincent Celier
804f7040cf frontend.adb (Frontend): Return immediately if the main source could not be parsed...
2007-04-20  Vincent Celier  <celier@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* frontend.adb (Frontend): Return immediately if the main source could
	not be parsed, because of preprocessing errors.

	* gnat1drv.adb (gnat1drv): Handle RE_Not_Available gracefully.
	(Gnat1drv): Exit with errors if the main source could not be parsed,
	because of preprocessing errors.
	(Check_Rep_Info): New procedure

From-SVN: r125411
2007-06-06 12:28:20 +02:00
Ed Schonberg
0712790c36 exp_util.ads, [...] (Expand_Subtype_From_Expr): In Ada2005...
2007-04-20  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.ads, exp_util.adb (Expand_Subtype_From_Expr): In Ada2005, an
	object of a limited type can be initialized with a call to a function
	that returns in place. If the limited type has unknown discriminants,
	and the underlying type is a constrained composite type, build an actual
	subtype from the function call, as is done for private types.
	(Side_Effect_Free): An expression that is the renaming of an object or
	whose prefix is the renaming of a object, is not side-effect free
	because it may be assigned through the renaming and its value must be
	captured in a temporary.
	(Has_Controlled_Coextensions): New routine.
	(Expand_Subtype_From_Expr): Do nothing if type is a limited interface,
	as is done for other limited types.
	(Non_Limited_Designated_Type): new predicate.
	(Make_CW_Equivalent_Type): Modified to handle class-wide interface
	objects.
	Remove all handling of with_type clauses.

        * par-ch10.adb: Remove all handling of with_type clauses.

	* lib-load.ads, lib-load.adb (Load_Main_Source): Do not get the
	checksum if the main source could not be parsed.
	(Loat_Unit): When processing a child unit, determine properly whether
	the parent unit is a renaming when the parent is itself a child unit.
	Remove handling of with_type clauses.

	* sinfo.ads, sinfo.adb (Is_Static_Coextension): New function.
	(Set_Is_Static_Coextension): New procedure.
	(Has_Local_Raise): New function
	(Set_Has_Local_Raise): New procedure
	(Renaming_Exception): New field
	(Has_Init_Expression): New flag
	(Delay_Finalize_Attach): Remove because flag is obsolete.
	(Set_Delay_Finalize_Attach): Remove because flag is obsolete.
	Remove all handling of with_type clauses.
	(Exception_Junk): Can now be set in N_Block_Statement

From-SVN: r125410
2007-06-06 12:28:07 +02:00
Robert Dewar
2ed216d057 exp_strm.adb (Make_Field_Attributes): Avoid _Parent components that are interface type.
2007-04-20  Robert Dewar  <dewar@adacore.com>

	* exp_strm.adb (Make_Field_Attributes): Avoid _Parent components that
	are interface type.
	(Build_Elementary_Input_Call): For floating-point use right type in the
	absence of strange size or stream size clauses.
	(Build_Elementary_Write_Call): Same fix
	(Has_Stream_Standard_Rep): Returns False if Stream_Size attribute
	set to value that does not match base type size.

From-SVN: r125409
2007-06-06 12:27:53 +02:00
Ed Schonberg
2fa9443ee9 exp_prag.adb (Expand_Pragma_Import_Or_Interface): Remove properly a default initialization on an imported object...
2007-04-20  Ed Schonberg  <schonberg@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): Remove properly a
	default initialization on an imported object, when there is no
	initialization call generated for it.
	(Expand_Pragma_Assert): Add handling of No_Exception_Propagation
	restriction

	* snames.h, snames.ads, snames.adb, par-prag.adb: New pragma
	Static_Elaboration_Desired.
	Remove pragma Thread_Body.
	Implement a new pragma No_Body
	Removes the Explicit_Overriding pragma
	Remove Optional_Overriding pragma
	(Prag): Deal with Universal_Aliasing.
	(Name_CIL, Name_CIL_Constructor, Convention_CIL,
	Pragma_CIL_Constructor): New names.

	* sem_cat.adb (Validate_Object_Declaration): An initialization that
	uses the equivalent aggregate of a type must be treated as an implicit
	initialization.
	(Get_Categorization): Check a unit for pragma Preelaborate only if it
	has none of the other categories.
	(Process_Import_Or_Interface_Pragma): Report an error for an attempt
	to apply Import to an object renaming declaration.

	* sem_prag.adb (Process_Import_Or_Interface): Warn that a type imported
	from a C++ class should be declared as limited and that it will be
	considererd limited.
	(Analyze_Pragma): Warn that a type specified with pragma CPP_Class
	should be declared as limited and that it will be considererd limited.
	(Ada_2005_Pragma): New procedure, used to deal with Ada 2005 pragmas
	(Analyze_Pragma, case Export): Diagnose export of enumeration literal
	(Analyze_Pragma): Deal with Universal_Aliasing.
	(Sig_Flags): Likewise.
	(Set_Encoded_Interface_Name): Suppress encoding when compiling for AAMP.
	(Overflow_Checks_Unsuppressed): New flag.
	(Process_Suppress_Unsuppress): Set Overflow_Checks_Unsuppressed.
	(Analyze_Pragma [case Pack]): Ignore pragma Pack and post warning in
	case of JVM or .NET targets, and compiling user code.
	Add debugging convenience routine rv

From-SVN: r125408
2007-06-06 12:27:41 +02:00
Robert Dewar
7d8b9c9990 exp_pakd.adb (Expand_Packed_Not): Use RM_Size rather than ESize to compute masking constant...
2007-04-20  Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_pakd.adb (Expand_Packed_Not): Use RM_Size rather than ESize to
	compute masking constant, since we now set Esize properly to the
	underlying size.
	(Create_Packed_Array_Type): Set proper Esize value adjusted as required
	to match the alignment.
	(Create_Packed_Array_Type): Use Short_Short_Unsigned as base type for
	packed arrays of 8 bits or less.

	* freeze.adb (Freeze_Entity): When freezing the formals of a
	subprogram, freeze the designated type of a parameter of an access type
	only if it is an access parameter.
	Increase size of C convention enumeration object
	(Freeze_Entity, array type case): Make sure Esize value is properly
	adjusted for the alignment if it is known.
	(Freeze_Entity, array type case): When checking bit packed arrays for
	the size being incorrect, check RM_Size, not Esize.
	(Freeze_Record_Type): Check for bad discriminated record convention
	(In_Exp_Body): Return true if the body is generated for a subprogram
	renaming, either an attribute renaming or a renaming as body.
	(Check_Itype): If the designated type of an anonymous access component
	is a non-protected subprogram type, indicate that it is frozen, to
	prevent out-of-scope freeze node at some subsequent call.
	(Freeze_Subprogram): On OpenVMS, reject descriptor passing mechanism
	only if the subprogram is neither imported nor exported, as well as the
	NCA descriptor class if the subprogram is exported.

From-SVN: r125407
2007-06-06 12:27:26 +02:00
Javier Miranda
b545a0f665 exp_intr.adb (Expand_Unc_Deallocation): Add missing support for deallocation of class-wide interface objects.
2007-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_intr.adb (Expand_Unc_Deallocation): Add missing support for
	deallocation of class-wide interface objects.
	(Expand_Dispatching_Constructor_Call): Take into account that if the
	result of the dispatching constructor is an interface type, the
	function returns a class-wide interface type; otherwise the returned
	object would be actual. The frontend previously accepted returning
	interface types because Expand_Interface_Actuals silently performed
	the management of the returned type "as if" it were a class-wide
	interface type.
	(Expand_Dispatching_Constructor_Call): Replace call to
	Make_DT_Access_Action by direct call to Make_Function_Call.

From-SVN: r125406
2007-06-06 12:27:12 +02:00
Javier Miranda
cde4a4b1a3 exp_imgv.adb (Expand_Value_Attribute): Disable compilation of this attribute compiling package Ada.Tags under...
2007-04-20  Javier Miranda  <miranda@adacore.com>

	* exp_imgv.adb (Expand_Value_Attribute): Disable compilation of this
	attribute compiling package Ada.Tags under No_Run_Time_Mode.

From-SVN: r125405
2007-06-06 12:27:01 +02:00
Geert Bosch
1091ce145a exp_fixd.adb (Integer_Literal): Add optional argument to construct a negative literal
2007-04-20  Geert Bosch  <bosch@adacore.com>

	* exp_fixd.adb (Integer_Literal): Add optional argument to construct a
	negative literal
	(Do_Divide_Fixed_Fixed): Add comments to indicate Frac is always
	positive
	(Do_Divide_Fixed_Universal): Handle case of negative Frac.
	(Do_Multiply_Fixed_Fixed): Add coments to indicate Frac is always
	positive
	(Do_Multiply_Fixed_Universal): Handle case of negative Frac.

From-SVN: r125404
2007-06-06 12:26:49 +02:00
Thomas Quinot
c3d593c9d3 exp_dist.ads, [...] (Make_Transportable_Check): New subprogram (GARLIC_Support.Build_Subprogram_Receiving_Stubs...
2007-04-20  Thomas Quinot  <quinot@adacore.com>

	* exp_dist.ads, exp_dist.adb (Make_Transportable_Check): New subprogram
	(GARLIC_Support.Build_Subprogram_Receiving_Stubs,
	PolyORB_Support.Build_Subprogram_Receiving_Stubs):
	For a remote call to a function with a classwide return type, apply an
	E.4(18) check to the returned value.
	(Add_RACW_Primitive_Declarations_And_Bodies): Do not generate stubs for
	stream attributes of the designated type of an RACW, as they are not
	dispatching primitive operations.

From-SVN: r125403
2007-06-06 12:26:39 +02:00
Javier Miranda
7853d93425 exp_dbug.adb (Get_Encoded_Name): Modified to continue providing its functionality when...
2007-04-20  Javier Miranda  <miranda@adacore.com>
	    Nicolas Setton  <setton@adacore.com>

	* exp_dbug.adb (Get_Encoded_Name): Modified to continue providing its
	functionality when the backend is generating code.
	Otherwise any serious error
	reported by the backend calling the frontend routine Error_Msg
	changes the Compilation_Mode to Check_Semantics, disables the
	functionality of this routine and causes the generation of
	spureous additional errors.

	* exp_dbug.ads (Pointers to Unconstrained Arrays): Document the
	debugging information now generated by the compiler for fat-pointer
	types.
	Document the contents of DW_AT_producer in the GNAT Vendor extensions to
	DWARF2/3.
	Document GNAT Vendor extensions to DWARF 2/3 and the "-gdwarf+" switch.

From-SVN: r125402
2007-06-06 12:26:28 +02:00
Ed Schonberg
3e038221c4 exp_ch9.ads, [...] (Build_Protected_Entry): Set sloc of generated exception handler appropriately when debugging generated code.
2007-04-20  Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch9.ads, exp_ch9.adb (Build_Protected_Entry): Set sloc of
	generated exception handler appropriately when debugging generated code.
	Deal properly with No_Exception_Propagation restriction mode.
	(Expand_N_Abort_Statement): Add an unchecked type conversion from
	System.Address to System.Tasking.Task_Id when processing the result of
	the predefined primitive _disp_get_task_id.
	(Expand_N_Asynchronous_Select): Clarify comment.
	(Expand_N_Protected_Type_Declaration): Minor code cleanup.
	(Find_Parameter_Type): New routine inside Type_Conformant_Parameters.
	(Type_Conformant_Parameters): New parameter Prim_Op_Typ. Code cleanup.
	(Add_Private_Declarations, Build_Protected_Body): Use proper slocs for
	privals and for generated call to Complete_Entry_Body, for better gdb
	behavior.
	(Copy_Result_Type): Utility to construct a parameter and result profile
	for protected functions whose return type is an anonymous access to
	subprogram.
	(Build_Protected_Sub_Spec and Expand_Access_Protected_Subprogram_Type):
	call the above.
	(Build_Task_Activation_Call): Insert Activate_Tasks call at proper
	point when the local-raise-to-goto transformation has taken place.

From-SVN: r125401
2007-06-06 12:26:18 +02:00
Ed Schonberg
dbe13a374e exp_ch7.ads, [...] (Expand_Cleanup_Actions): Set Sloc of inserted cleanup code appropriately for GDB use.
2007-04-20  Ed Schonberg  <schonberg@adacore.com>
	    Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.ads, exp_ch7.adb (Expand_Cleanup_Actions): Set Sloc of
	inserted cleanup code appropriately for GDB use.
	(Make_Deep_Proc): Use Make_Handler_For_Ctrl_Operation to create
	exception handler for Deep_Adjust or Deep_Finalize.
	(Make_Handler_For_Ctrl_Operation): New subprogram. When runtime entity
	Raise_From_Controlled_Operation is available, use a call to that
	subprogram instead of a plain "raise Program_Error" node to raise
	Program_Error if an exception is propagated from an Adjust or Finalize
	operation.
	(Insert_Actions_In_Scope_Around): If the statement to be wrapped
	appears in the optional statement list of a triggering alternative, the
	scope actions can be inserted directly there, and not in the list that
	includes the asynchronous select itself.

From-SVN: r125400
2007-06-06 12:26:05 +02:00
Gary Dismukes
7888a6aecc exp_ch6.ads, [...] (Expand_Call): When adding an extra accessibility actual...
2007-04-20  Gary Dismukes  <dismukes@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.ads, exp_ch6.adb (Expand_Call): When adding an extra
	accessibility actual, check for the case of an aliased object that has
	been rewritten as an Access attribute, and assign Prev to Prev_Orig so
	we fall into processing for the attribute rather than the name of the
	object.
	(Expand_Inline_Call): If an actual is a literal, and the corresponding
	formal has its address taken in the body, create a temporary to capture
	value.  If the return type is a limited interface, do not treat the
	return value as Controlled.
	(Is_In_Place_Function):  If the return type is a limited interface,
	treat as returning in place. The actual returned object may not always
	be limited, but the caller has to assume that it is returned in place.
	(Add_Final_List_Actual_To_Build_In_Place_Call): If the call is the
	context of an allocator, use the correct finalization chain (that is,
	the chain belonging to the access type, rather than the chain belonging
	to the current scope).
	(Add_Alloc_Form_Actual_To_Build_In_Place_Call): Test for a tagged
	result type rather than a controlling result as a precondition for
	adding an allocation form actual to a build-in-place call.
	(Add_Final_List_Actual_To_Build_In_Place_Call): Ditto.
	(Freeze_Subprogram): Code cleanup. Remove all the code that register the
	primitive in the dispatch tables. This work is now done by Make_DT when
	the type is frozen.
	(Register_Predefined_DT_Entry): Removed.
	(Add_Return): If end label is not present, use sloc of last statement
	for generated return statement in procedure, for better gdb behavior
	on expanded code.
	(Add_Access_Actual_To_Build_In_Place_Call): Set parent fields of the
	object address nodes to ensure proper processing by routines like
	Insert_After*.
	(Expand_Call): Fix generation of validity check for parameter
	(Add_Alloc_Form_Actual_To_Build_In_Place_Call): Return without passing
	the allocation form parameter if the result subtype is constrained,
	except when the function has a controlling result.
	(Add_Final_List_Actual_To_Build_In_Place_Call): Test Controlled_Type
	rather than Is_Controlled and Has_Controlled_Component, since we want to
	include class-wide result types in this treatment. Also test for a
	controlling result, since that also requires passing a finalization
	list.
	(Make_Build_In_Place_Call_In_Allocator): Call Add_Alloc_Form_Actual_*
	even when the result subtype is constrained, to handle calls involving
	controlling results.
	(Make_Build_In_Place_Call_In_Anonymous_Context): Add_Alloc_Form_Actual_*
	is now called even when the result subtype is constrained, to handle
	calls involving controlling results.
	(Make_Build_In_Place_Call_In_Assignment): Remove test for Is_Constrained
	on call to Add_Alloc_Form_Actual_To_Build_In_Place_Call (that procedure
	now performs the test).
	(Make_Build_In_Place_Call_In_Object_Declaration):
	Add_Alloc_Form_Actual_* is now called even when the result subtype is
	constrained, to handle calls involving controlling results.
	(Add_Return): Accomodate rewritten pattern from local raise to goto
	transformation, so that we still recognize an transfer statement
	and do the right thing here in that case.
	(Expand_N_Subprogram_Body): Add dummy Push/Pop_xxx_Label nodes at start
	and end of subprogram code.
	(Register_Interface_DT_Entry, Register_Predefined_DT_Entry): Add missing
	support for primitives that are functions (without formals) with a
	controlling result.
	(Inherited_From_Formal): If the actual subtype has not generic parent
	type, it is not an actual for a formal derived type, and there is no
	operation to inherit from the formal.

From-SVN: r125399
2007-06-06 12:25:50 +02:00
Ed Schonberg
a79ec8c58c exp_ch5.adb (Expand_N_Assignment_Statement): For the assignment of a controlled type...
2007-04-20  Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>
	    Javier Miranda  <miranda@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): For the assignment of a
	controlled type, use Make_Handler_For_Ctrl_Operation to construct the
	required exception handler.
	(Expand_Simple_Function_Return, Expand_N_Return_Statement): Handle
	properly the case of a function whose return type is a limited
	class-wide interface type. Modify the code of the accessibility
	check to handle class-wide interface objects. In this case we need to
	displace "this" to reference the primary dispatch table to get access
	to the TSD of the object (to evaluate its accessibility level).
	(Expand_N_Extended_Return_Statement): Test for a tagged result type
	rather than a controlling result as one of the conditions for
	generating tests of the implicit BIP_Alloc_Form formal. The
	initialization assignment is also handled according to whether the
	result is tagged instead of controlling.
	In the case where the init assignment is inserted in the "then" part of
	the allocation conditional, rewrite the target to be a dereference of
	the implicit BIP_Object_Access formal.
	If the returned value is unconstrained and created on the secondary
	stack, mark the enclosing block and function so that the secondary
	stack is not reclaimed on return.
	Treat returns from functions with controlling results similarly to
	returns from functions with unconstrained result subtypes.
	If the object returned is unconstrained, and an allocator must be
	created for it, analyze the allocator once the block for the extended
	return is installed, to ensure that finalizable components
	of the expression use the proper finalization list. Guard the call to
	Move_Final_List with a check that there is something to finalize.
	(Make_Tag_Ctrl_Assignment): Use "old" handling
	of controlled type assignment for virtual machines, since new code uses
	unsupported features (such as direct access to bytes in memory).

From-SVN: r125398
2007-06-06 12:25:25 +02:00
Javier Miranda
26bff3d98f exp_ch4.adb (Complete_Coextension_Finalization): Add machinery to handle the creation of finalization lists and calls for nested...
2007-04-20  Javier Miranda  <miranda@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>
	    Bob Duff  <duff@adacore.com>

	* exp_ch4.adb (Complete_Coextension_Finalization): Add machinery to
	handle the creation of finalization lists and calls for nested
	coextensions when the root of the chains is part of a return statement.
	(Inside_A_Return_Statement): New function inside Complete_Coextension_
	Finalization.
	(Expand_Record_Equality): Skip components that are interface types.
	(Displace_Allocator_Pointer): Add missing support for interface subtypes
	(Expand_N_Allocator): Replace invocation of Is_Local_Access_Discriminant
	with Rewrite_Coextension. Change the condition for detecting coextension
	root nodes.
	(Is_Local_Access_Discriminant): Removed.
	(Rewrite_Coextension): New routine which rewrites a static coextension
	as a temporary and uses its unrestricted access in the construction of
	the outer object.
	(Complete_Coextension_Finalization): New routine. Generate finalization
	attachment calls to all delayed coextensions.
	(Expand_N_Allocator): Call Complete_Coextension_Finalization whenever
	the allocator is not a coextension itself and has delayed coextensions.
	If the current allocator is controlled, but also a coextension, delay
	the generation of the finalization attachment call.
	Rename local variable "Node" to "Nod" in order to avoid confusion with
	"Elists.Node".
	(Expand_Allocator_Expression): Call Adjust for initialized allocators of
	limited types that are not inherently limited. Such an allocator is
	illegal, but is generated by the expander for a return statement, to
	copy the result onto the secondary stack. This is the only case where a
	limited object can be copied. Generate code to displace the pointer
	to the object if the qualified expression is a class-wide interface
	object. Such displacement was missing and hence the copy of the object
	was wrong.
	(Apply_Accessibility_Check): Handle allocated objects initialized in
	place.
	(Displace_Allocator_Pointer): Subsidiary procedure to Expand_N_Allocator
	and Expand_Allocator_Expression. Allocating class-wide interface objects
	this routine displaces the pointer to the allocated object to reference
	the component referencing the corresponding secondary dispatch table.
	Expand_Allocator_Expression): Add missing support to allocate class-wide
	interface objects initialized with a qualified expression.
	(Get_Allocator_Final_List): Test for an anonymous access type that is a
	function result type, and use the finalization list associated with the
	function scope in that case (such an anonymous type should not be
	treated like an access parameter's type).

From-SVN: r125397
2007-06-06 12:25:12 +02:00
Ed Schonberg
47cc8d6bfd exp_ch3.adb (Make_Controlling_Function_Wrappers): generate wrapper a wrapper when the full view of the controlling type of an...
2007-04-20  Ed Schonberg  <schonberg@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_ch3.adb (Make_Controlling_Function_Wrappers): generate wrapper a
	wrapper when the full view of the controlling type of an inherited
	function that dispatches on result implements interfaces.
	(Expand_N_Object_Declaration): In cases where the type of the
	declaration is anonymous access, create finalization list for it.
	(Expand_N_Object_Declaration): Generate a persistent_bss directive only
	if the object has no explicit initialization, to match description of
	functionality of pragam Persistent_BSS.
	(Build_Equivalent_Array_Aggregate, Build_Equivalent_Record_Aggregate):
	new function to build static aggregates, to replace initialization call
	when static initialization is desired.
	(Freeze_Type): Generate a list controller for an access type whenever
	its designated type has controlled anonymous access discriminants.
	(Build_Equivalent_Aggregate): New procedure to compute a static
	aggregate to be used as default initialization for composite types,
	instead of a generating a call to the initialization procedure for the
	type.
	(Build_Initialization_Call): When available, replace a call to the
	initialization procedure with a copy of the equivalent static aggregate
	for the type.
	(Expand_N_Object_Declaration):  Use New_Occurrence_Of in generated
	declarations for objects of a class-wide interface type, rather than
	just identifiers, to prevent visibility problems.
	(Expand_N_Object_Declaration): When expanding the declaration for an
	object of a class-wide interface type, preserve the homonym chain of
	the original entity before exchanging it with that of the generated
	renaming declaration.
	(Freeze_Enumeration_Type): Don't raise CE if No_Exception_Propagation
	active, because there is no way to handle the exception.
	(Freeze_Record_Type): In case of CPP_Class types add a call to Make_DT
	to do a minimum decoration of the Access_Disp_Table list.
	(Expand_Record_Controller): Avoid the addition of the controller between
	the component containing the tag of a secondary dispatch table and its
	adjacent component that stores the offset to the base of the object.
	This latter component is only generated when the parent type has
	discriminants ---documented in Add_Interface_Tag_Components).
	(Apply_Array_Size_Check): Removed, no longer needed.
	(Expand_N_Full_Type_Declaration): If the type has anonymous access
	components, create a Master_Entity for it only if it contains tasks.
	(Build_Init_Procedure): Suppress the tag assignment compiling under
	no run-time mode.
	(Freeze_Record_Type): Remove code associated with creation of dispatch
	table.
	(Init_Secondary_Tags): Update type of actuals when generating calls to
	Ada.Tags.Set_Offset_To_Top
	(Stream_Operation_OK): Disable use of streams compiling under no
	run-time mode
	(Expand_N_Object_Declaration): Don't do Initialize_Scalars initalization
	if Has_Init_Expression set.
	(Build_Init_Procedure): Replace call to Fill_DT_Entry by call to
	Register_Primitive, which provides the same functionality.
	(Requires_Init_Proc): Return false in case of interface types.
	(Add_Secondary_Tables): Use the new attribute Related_Interface to
	cleanup the code.
	(Predefined_Primitive_Freeze): Do not assume that an internal entity
	is always associated with a predefined primitive because the internal
	entities associated with interface types are not predefined primitives.
	Therefore, the call to Is_Internal is replaced by a call to the
	function Is_Predefined_Dispatching_Operation.
	(Make_Eq_If): When generating the list of comparisons for the
	components of a given variant, omit the controller component that is
	present if the variant has controlled components.

From-SVN: r125396
2007-06-06 12:24:57 +02:00
Hristian Kirtchev
822033ebf3 exp_ch2.adb: Remove "with" and "use" clauses for Namet and Snames.
2007-04-20  Hristian Kirtchev  <kirtchev@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_ch2.adb: Remove "with" and "use" clauses for Namet and Snames.
	Add "with" and "use" clauses for Sem_Attr.
	(Expand_Current_Value): Do not replace occurences of attribute
	references where the prefix must be a simple name.

	* sem_attr.ads, sem_attr.adb: Remove "with" and "use" clauses for
	Namet. Add new arrays Attribute_Name_Modifies_Prefix and
	Attribute_Requires_Simple_Name_Prefix.
	(Name_Modifies_Prefix): Body of new function.
	(Requires_Simple_Name_Prefix): Body of new function.
	(Resolve_Attribute, case Access): Improve error message for case of
	mismatched conventions.
	(Analyze_Attribute, case 'Tag): The prefix the attribute cannot be of an
	incomplete type.
	(Analyze_Attribute, case 'Access): If the type of the prefix is a
	constrained subtype for a nominal unconstrained type, use its base type
	to check for conformance with the context.
	(Resolve_Attribute): Remove test of the access type being associated
	with a return statement from condition for performing accessibility
	checks on access attributes, since this case is now captured by
	Is_Local_Anonymous_Access.
	(Analyze_Access_Attribute): Set Address_Taken on entity
	(Analyze_Attribute, case Address): Set Address_Taken on entity
	(OK_Self_Reference): Traverse tree to locate enclosing aggregate when
	validating an access attribute whose prefix is a current instance.
	(Resolve_Attribute): In case of attributes 'Code_Address and 'Address
	applied to dispatching operations, if freezing is required then we set
	the attribute Has_Delayed_Freeze in the prefix's entity.
	(Check_Local_Access): Set flag Suppress_Value_Tracking_On_Call in
	current scope if access of local subprogram taken
	(Analyze_Access_Attribute): Check legality of self-reference even if the
	expression comes from source, as when a single component association in
	an aggregate has a box association.
	(Resolve_Attribute, case 'Access): Do not apply accessibility checks to
	the prefix if it is a protected operation and the attribute is
	Unrestricted_Access.
	(Resolve_Attribute, case 'Access): Set the Etype of the attribute
	reference to the base type of the context, to force a constraint check
	when the context is an access subtype with an explicit constraint.
	(Analyze_Attribute, case 'Class): If the prefix is an interface and the
	node is rewritten as an interface conversion. leave unanalyzed after
	resolution, to ensure that type checking against the context will take
	place.

From-SVN: r125395
2007-06-06 12:24:40 +02:00
Ed Schonberg
33160237cb exp_ch13.adb (Expand_N_Attribute_Definition_Clause, [...]): If the initialization is the equivalent aggregate of the initialization...
2007-04-20  Ed Schonberg  <schonberg@adacore.com>
	    Gary Dismukes  <dismukes@adacore.com>

	* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case 'Address):
	If the initialization is the equivalent aggregate of the initialization
	procedure of the type, do not remove it.
	(Expand_N_Attribute_Definition_Clause): Exclude access variables
	initialized to null from having their expression reset to empty and
	note this exception in the comment.

From-SVN: r125394
2007-06-06 12:24:22 +02:00
Hristian Kirtchev
31104818b7 exp_attr.adb (Expand_N_Attribute_Reference): Case Callable and Terminated...
2007-04-20  Hristian Kirtchev  <kirtchev@adacore.com>
	    Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (Expand_N_Attribute_Reference): Case Callable and
	Terminated: Add unchecked type conversion from System.Address to
	System.Tasking.Task_Id when calling the predefined primitive
	_disp_get_task_id.
	Disable new Ada 05 accessibility check for JVM.NET targets, which
	cannot be implemented in a practical way.
	(Expand_N_Attribute_Reference: case Attribute_Tag): The use of 'Tag in
	the sources always references the tag of the actual object. Therefore,
	if 'Tag is applied in the sources to class-wide interface objects we
	generate code that displaces "this" to reference the base of the object.
	(Expand_N_Attribute_Reference, case Size): Return specified size if
	known to front end.
	(Expand_N_Attribute_Reference): The expansion of the 'Address attribute
	has code that displaces the pointer of the object to manage interface
	types. However this code must not be executed when the prefix is a
	subprogram. This bug caused the wrong expansion of the internally
	generated assignment that fills the dispatch table when the primitive
	is a function returning a class-wide interface type.
	(Expand_N_Attribute_Reference:Attribute_Valid): Remove incorrect call to
	Set_Attribute_Name for Name_Unaligned_Valid.

From-SVN: r125393
2007-06-06 12:24:07 +02:00
Javier Miranda
0f95b17845 exp_aggr.ads, [...]:
2007-04-20  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Bob Duff  <duff@adacore.com>
	    Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_aggr.ads, exp_aggr.adb: 
	(Build_Record_Aggr_Code): Add missing initialization of secondary tags
	in extension aggregates.
	(Flatten): Other conditions being met, an aggregate is static if the
	low bound given by component associations is different from the low
	bound of the base index type.
	(Packed_Array_Aggregate_Handled): If the component type is itself a
	packed array or record, the front-end must expand into assignments.
	(Gen_Ctrl_Actions_For_Aggr): In call to Init_Controller, pass False to
	Init_Pr, instead of Ancestor_Is_Expression.
	(Gen_Ctrl_Actions_For_Aggr): When processing an aggregate of a
	coextension chain root, either generate a list controller or use the
	already existing one.
	(Static_Array_Aggregate): New procedure to construct a positional
	aggregate that can be handled by the backend, when all bounds and
	components are compile-time known constants.
	(Expand_Record_Aggregate): Force conversion of aggregates of tagged
	types covering interface types into assignments.
	(Replace_Type): move to Build_Record_Aggr_Code.
	(Expand_Record_Aggr_Code): if the target of the aggregate is an
	interface type, convert to the definite type of the aggregate itself,
	so that needed components are visible.
	(Convert_Aggr_In_Object_Decl): If the aggregate has controlled
	components and the context is an extended return statement do not
	create a transient block for it, to prevent premature finalization
	before the return is executed.
	(Gen_Assign): Do not generate a call to deep adjust routine if the
	component type is itself an array of controlled (sub)-components
	initialized with an inner aggregate.
	(Component_Check): New name for Static_Check. This name is now more
	appropriate, and documentation is added which was missing.
	(Component_Check): Add test for bit aligned component value
	(Component_Not_OK_For_Backend): Renames Has_Delayed_Nested_Aggregate_Or_
	Tagged_Comps, name is more appropriate given added function below.
	(Component_Not_OK_For_Backend): Check for bit aligned component ref.

From-SVN: r125392
2007-06-06 12:23:46 +02:00
Robert Dewar
1c28fe3afe sinput.ads, [...] (Unlock): New procedure.
2007-04-20  Robert Dewar  <dewar@adacore.com>

	* sinput.ads, sinput.adb, uintp.ads, urealp.adb, stringt.adb,
	sem_elim.adb, prj-strt.adb, repinfo.ads, repinfo.adb, namet.ads,
	elists.ads, elists.adb, lib.ads, lib.adb (Unlock): New procedure.
	Fix lower bound of tables.
	Add rep clauses.

	* nlists.adb: Ditto.
	(Prev_Node, Next_Node): Change index type to Int so that it properly
	covers the range First_Node_Id - 1 up.

From-SVN: r125391
2007-06-06 12:23:26 +02:00
Javier Miranda
0a36105d56 einfo.ads, einfo.adb (Available_View): New synthesized attribute applicable to types that have the With_Type flag set.
2007-04-20  Javier Miranda  <miranda@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Eric Botcazou  <ebotcazou@adacore.com>
	    Arnaud Charlet  <charlet@adacore.com>

	* einfo.ads, einfo.adb (Available_View): New synthesized attribute
	applicable to types that have the With_Type flag set. Returns the
	non-limited view of the type, if available, otherwise the type itself.
	For class-wide types, there is no direct link in the tree, so we have
	to retrieve the class-wide type of the non-limited view of the Etype.
	New attributes Static_Initialization and Static_Elaboration_Desired.
	Remove the pragma Thread_Body, and the associated flag
	Is_Thread_Body in entities, and all related code.
	(Suppress_Value_Tracking_On_Call): New flag
	E_Exception has Esize and Alignment fields
	(Universal_Aliasing): New function.
	(Set_Universal_Aliasing): New procedure.
	(Write_Entity_Flags): Deal with Universal_Aliasing flag.
	(Check_Nested_Access): New procedure.
	(Has_Up_Level_Access, Set_Has_Up_Level_Access): New procedures.
	(Find_Direct_Name, Note_Possible_Modification): Use Check_Nested_Access.
	(Related_Interface): New attribute. Present in dispatch table pointer
	components of records. Set to point to the entity of the corresponding
	interface type.
	(Is_By_Reference_Type): Recurse on the full view of an incomplete type.
	(Original_Access_Type): Remove, not needed.
	(Root_Type): Handle properly subtypes of class-wide-types.
	Update comments.

	* sem_ch4.adb (Analyze_Explicit_Dereference): Add support for
	class-wide types visible through limited-with clauses.
	(Try_Primitive_Operation): When examining all primitive operations of a
	tagged type, do not consider subprograms labeled as hidden unless they
	belong to a private generic type with a tagged parent.
	(Try_Object_Operation): Extensive rewriting, to handle properly various
	overloading cases, when several ancestors may have class-wide operations
	that are possible candidates, and when the overloaded functions return
	array types and have defaulted parameters so that the call may be
	interpreted as an indexing.
	(Analyze_Allocator): Remove Mark_Allocator and its invocation.
	(Process_Function_Call): use Next, rather than Next_Actual, to analyze
	successive actuals before analyzing the call itself.
	(Try_Primitive_Operation): A primitive operation is compatible with the
	prefix if the prefix has a synchronized type and the type of the formal
	is its corresponding record, as can be the case when the primitive
	operation is declared outside of the body of the type.
	(Traverse_Homonyms): New subprocedure of Try_Class_Wide_Operation, to
	perform homonym traversal, looking for class-wide operation matches
	(formerly done in statements of Try_Class_Wide_Operation). Matches on
	access parameters are now restricted to anonymous access types.
	(Mark_Allocator): An allocator with a discriminant association parent is
	a coextension.
	(Try_One_Prefix_Interpretation): If the type of the object is
	incomplete, as can be happen when it is a limited view obtained through
	a limited_with_clause, the selected component is not part of a prefixed
	call.
	(Complete_Object_Operation): Diagnose properly an object that is not
	aliased when the corresponding controlling formal is an access
	parameter.
	(Try_Primitive_Operation, Try_Class_Wide_Operation): Diagnose properly
	ambiguous calls in prefixed notation, where two primitives differ only
	in that the controlling argument of one is an access parameter.

	* sem_ch6.adb (Has_Single_Return): Add guard in code that determines
	whether a function that returns an unconstrained type can be inlined.
	(Process_Formals): Diagnose properly the illegal use of an incomplete
	type in the profile of an access_to_subprogram declaration.
	(Check_Synchronized_Overriding): Nothing check for concurrent types, the
	operations are attached to the corresponding record.
	(Analyze_Subprogram_Specification): Add variables Formal and Formal_Typ.
	When processing a primitive of a concurrent type which implements an
	interface change the type of all controlling formals to that of the
	corresponding record type.
	(Check_Synchronized_Overriding): Relax the conditional logic when trying
	to determine the tagged type to which a primitive belongs.
	(Check_Conventions): Capture condition to ignore a primitive operation
	(which is shared between the loop in Check_Conventions and the one in
	Check_Convention) in a new local function Skip_Check.
	(Check_Convention): Rename Prim_Op to Second_Prim_Op to avoid possible
	confusion with Check_Conventions' own Prim_Op local variable.
	(Create_Extra_Formals): Test for a tagged result type rather than a
	controlling result when determining whether to add a BIP_Alloc_Form
	formal and a BIP_Final_List formal to the function.
	(Check_Conformance); For parameters that are anonymous access types,
	subtype conformance requires that the not null and the constant
	indicators must match
	(Check_Synchronized_Overriding): New parameter Formal_Typ. Add machinery
	to retrieve the appropriate type when processing a concurrent type
	declared within a generic. Minor comment reformatting. Change invocation
	of Overrides_Synchronized_Primitive to Find_Overridden_Synchronized_Pri-
	mitive.
	(Analyze_Subprogram_Body): If the return type of a function is an
	anonymous access to the limited view of a class-wide type, and the
	non-limited view of the type is available, update the type of the
	function so that code can be generated.
	(Process_Formals): In case of access-subtype itype whose designated
	type is also an itype (situation that happens now with access to
	subprograms) we mark the access-type itype with the Has_Delayed_Freeze
	attribute to avoid backend problems.
	(Check_Return_Subtype_Indication): Replace R_Type with R_Stm_Type in
	init of R_Stm_Type_Is_Anon_Access. Also check that base types of the
	anonymous types' designated types are same before testing
	Subtypes_Statically_Match.
	(Create_Extra_Formals): Test for a named access parameter that is a
	controlling formal as an additional condition for adding an
	accessibility level formal. This can occur in the subp type created for
	dispatching calls in Expand_Dispatching_Call, and allows calling
	Create_Extra_Formals from that procedure rather than special-casing the
	extra formals there.
	(Create_Extra_Formals): Add BIP_Alloc_Form and BIP_Final_List formals
	when the function has a controlling result.
	(Check_Returns): Add much more knowledge of the optimization of local
	raise statements to gotos, to retain proper warnings in this case.
	(Check_Statement_Sequence): Ignore N_Push_xxx_Label and N_Pop_xxx_Label
	nodes when looking for last statement.

	* sem_type.ads, sem_type.adb (Specific_Type): Add support for
	class-wide types visible through limited with clauses.
	(Add_One_Interp): If the operands are anonymous access types, the
	predefined operator on universal_access is immediately visibles
	(Find_Unique_Type): Handle anonymous access to subprogram types just as
	other anonymous access types.
	(Disambiguate): Take into account CIL convention.
	(Interface_Present_In_Ancestor): Add support for class-wide interfaces.

From-SVN: r125390
2007-06-06 12:23:15 +02:00
Pascal Obry
109949cd3c clean.adb (Clean_Archive): Use untouched casing for the archive name and the corresponding .deps file.
2007-04-20  Pascal Obry  <obry@adacore.com>

	* clean.adb (Clean_Archive): Use untouched casing for the archive name
	and the corresponding .deps file.
	(Clean_Interface_Copy_Directory): Use untouched casing for the library
	src directory. Minor code-clean-up. Use untouched casing for files
	read into the library src dir.
	(Clean_Library_Directory): Idem.
	(Parse_Cmd_Line): Accept new switch -aP

From-SVN: r125389
2007-06-06 12:22:52 +02:00
Javier Miranda
11b4899f8a checks.ads, checks.adb (Apply_Address_Clause_Check): Handle case in which the address-clause is applied to in-mode actuals (allowed...
2007-04-20  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>
	    Ed Schonberg  <schonberg@adacore.com>

	* checks.ads, checks.adb (Apply_Address_Clause_Check): Handle case in
	which the address-clause is applied to in-mode actuals (allowed by
	13.1(22)).
	(Apply_Discriminant_Check): Do not generate a check if the type is
	constrained by a current instance.
	(Activate_Division_Check): New procedure
	(Activate_Overflow_Check): New procedure
	(Activate_Range_Check): New procedure
	Call these new Activate procedures instead of setting flags directly
	(Apply_Array_Size_Check): Removed, no longer needed.
	Code clean up: remove obsolete code related to GCC 2.
	(Get_E_Length): Protect against bomb in case scope is standard
	(Selected_Range_Checks): If the node to be checked is a conversion to
	an unconstrained array type, and the expression is a slice, use the
	bounds of the slice to construct the required constraint checks.
	Improve NOT NULL error messages
	(Apply_Constraint_Check): If the context is a null-excluding access
	type, diagnose properly the literal null.

From-SVN: r125388
2007-06-06 12:22:41 +02:00