+2007-04-06 Javier Miranda <miranda@adacore.com>
+ Matt Heaney <heaney@adacore.com>
+ Robert Dewar <dewar@adacore.com>
+
+ a-coprnu.ads, a-cohata.ads, a-chtgop.ads, a-chtgop.adb, a-cgcaso.ads,
+ a-cgarso.ads, a-secain.ads, a-slcain.ads, a-shcain.ads, a-chtgke.ads,
+ a-chtgke.ads, a-coprnu.ads, a-contai.ads, a-chtgke.ads, a-chtgke.adb,
+ a-stwiha.ads, a-strhas.ads, a-lfztio.ads, a-liztio.ads, a-llfzti.ads,
+ a-llizti.ads, a-sfztio.ads, a-siztio.ads, a-ssizti.ads, a-stzfix.ads,
+ a-stzhas.ads, a-szuzha.ads, a-tiunio.ads, a-wwunio.ads, a-ztcoio.ads,
+ a-ztinio.ads, a-zttest.ads, a-zzunio.ads, a-astaco.ads, a-charac.ads,
+ a-chlat1.ads, ada.ads, a-dynpri.ads, a-flteio.ads, a-fwteio.ads,
+ a-inteio.ads, a-intnam.ads, a-ioexce.ads, a-iwteio.ads, a-lfteio.ads,
+ a-lfwtio.ads, a-liteio.ads, a-liwtio.ads, a-llftio.ads, a-llfwti.ads,
+ a-llitio.ads, a-lliwti.ads, a-ncelfu.ads, a-ngcefu.ads, a-ngelfu.ads,
+ a-nlcefu.ads, a-nlcoty.ads, a-nlelfu.ads, a-nllcef.ads, a-nllcty.ads,
+ a-nllefu.ads, a-nscefu.ads, a-nscoty.ads, a-nselfu.ads, a-nucoty.ads,
+ a-nuelfu.ads, a-numeri.ads, a-sfteio.ads, a-sfwtio.ads, a-siteio.ads,
+ a-siwtio.ads, a-ssitio.ads, a-ssiwti.ads, a-storio.ads, a-strfix.ads,
+ a-string.ads, a-stwifi.ads, a-titest.ads, a-unccon.ads, a-uncdea.ads,
+ a-wtcoio.ads, a-wtinio.ads, a-wttest.ads, calendar.ads, directio.ads,
+ i-c.ads, ioexcept.ads, machcode.ads, sequenio.ads, text_io.ads,
+ unchconv.ads, unchdeal.ads, a-widcha.ads, a-zchara.ads, a-stboha.ads,
+ a-stfiha.ads, a-coteio.ads, a-envvar.ads, a-lcteio.ads, a-llctio.ads,
+ a-scteio.ads, a-swbwha.ads, a-swfwha.ads, a-szbzha.ads, a-szfzha.ads,
+ a-tiboio.ads, a-wwboio.ads, a-zzboio.ads, a-dispat.ads, a-tgdico.ads,
+ expander.adb, g-socket.ads, par-labl.adb, sinput-c.adb, s-tarest.ads,
+ s-stchop.ads, g-expect-vms.adb, s-taprop-lynxos.adb,
+ s-taprop-tru64.adb, s-taprop-irix.adb,
+ s-taprop-hpux-dce.adb, s-traceb-hpux.adb,
+ s-taprop-linux.adb, s-taprop-dummy.adb, s-osprim-unix.adb,
+ s-osprim-solaris.adb, s-taprop-solaris.adb, s-taprop-vms.adb,
+ s-osprim-mingw.adb, s-taprop-mingw.adb, s-osprim-posix.adb,
+ s-taprop-posix.adb, a-exexpr-gcc.adb, a-ststio.adb, a-ststio.ads,
+ a-textio.adb, a-textio.ads, a-tideau.adb, a-tideau.ads, a-witeio.adb,
+ a-witeio.ads, a-wtdeau.adb, a-wtdeau.ads, g-calend.adb, g-calend.ads,
+ g-dirope.adb, g-expect.ads, gnatchop.adb, g-spipat.adb, g-spipat.ads,
+ s-direio.adb, s-direio.ads, s-fatgen.adb, s-fatgen.ads, s-parint.adb,
+ s-sequio.adb, s-sequio.ads, s-taprop.ads, s-valdec.adb, s-valdec.ads,
+ s-valint.adb, s-valint.ads, s-vallld.adb, s-vallld.ads, s-vallli.adb,
+ s-vallli.ads, s-valllu.adb, s-valllu.ads, s-valrea.adb, s-valrea.ads,
+ s-valuns.adb, s-valuns.ads, s-valuti.adb, s-valuti.ads, xref_lib.adb,
+ s-stchop.adb, i-vxwork-x86.ads, a-crbtgo.ads, a-crbtgo.adb,
+ a-coorse.ads, a-coorse.adb, a-cohama.ads, a-cohama.adb, a-ciorse.ads,
+ a-ciorse.adb, a-cihama.ads, a-cihama.adb, a-chtgop.ads, a-chtgop.ads,
+ a-coormu.adb, a-ciormu.adb, a-cihase.adb, a-cihase.ads, a-cohase.adb,
+ a-cohase.ads, a-swuwha.ads, a-ciormu.ads, a-coormu.ads, a-rbtgso.ads,
+ a-stunha.ads, a-ciorma.adb, a-coorma.adb, a-ztdeau.adb, a-ztdeau.ads,
+ a-ztexio.adb, a-ztexio.ads: Addition of null-exclusion to anonymous
+ access types.
+ Update documentation.
+ Minor rewording.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+
+ * system-linux-ia64.ads, system-freebsd-x86.ads, system-lynxos-ppc.ads,
+ system-lynxos-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
+ system-vxworks-sparcv9.ads, system-solaris-x86.ads, system-irix-o32.ads,
+ system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
+ system-linux-x86.ads, system-vxworks-mips.ads, system-interix.ads,
+ system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
+ system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
+ system-vxworks-alpha.ads, system-vms_64.ads, system-darwin-ppc.ads,
+ system-vxworks-x86.ads, system-linux-ppc.ads, system-linux-hppa.ads,
+ system-hpux-ia64.ads, targparm.adb,
+ targparm.ads (Functions_Return_By_DSP_On_Target): Removed
+
+ * system.ads: Move Functions_Return_By_DSP to obsolete section,
+ kept for bootstrap purposes only.
+
+2007-04-06 Arnaud Charlet <charlet@adacore.com>
+
+ * s-osinte-lynxos-3.ads, s-osinte-hpux.ads, s-osinte-solaris-posix.ads,
+ s-osinte-freebsd.ads, s-osinte-aix.ads, s-osinte-darwin.ads,
+ s-taprop-posix.adb (Create_Task): Fix handling of Task_Info.
+ (PTHREAD_SCOPE_PROCESS, PTHREAD_SCOPE_SYSTEM): New constants.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+
+ * a-except.adb, a-except.ads, a-except-2005.ads, a-except-2005.adb
+ (Local_Raise): New dummy procedure called when a raise is converted
+ to a local goto. Used for debugger to detect that the exception
+ is raised.
+
+ * debug.adb: Document new d.g flag (expand local raise statements to
+ gotos even if pragma Restriction (No_Exception_Propagation) is not set)
+
+ * exp_sel.adb: Use Make_Implicit_Exception_Handler
+
+ * exp_ch11.adb (Expand_Exception_Handlers): Use new flag -gnatw.x to
+ suppress warnings for unused handlers.
+ (Warn_If_No_Propagation): Use new flag -gnatw.x to suppress
+ warnings for raise statements not handled locally.
+ (Get_RT_Exception_Entity): New function
+ (Get_Local_Call_Entity): New function
+ (Find_Local_Handler): New function
+ (Warn_If_No_Propagation): New procedure
+ (Expand_At_End_Handler): Call Make_Implicit_Handler
+ (Expand_Exception_Handlers): Major additions to deal with local handlers
+ (Expand_N_Raise_Constraint_Error, Expand_N_Raise_Program_Error,
+ Expand_N_Raise_Storage_Error, (Expand_N_Raise_Statement): Add handling
+ for local raise
+
+ * exp_ch11.ads (Get_RT_Exception_Entity): New function
+ (Get_Local_Call_Entity): New function
+
+ * gnatbind.adb (Restriction_List): Add No_Exception_Propagation to list
+ of restrictions that the binder will never suggest adding.
+
+ * par-ch11.adb (P_Exception_Handler): Set Local_Raise_Statements field
+ to No_Elist.
+
+ * restrict.adb (Check_Restricted_Unit): GNAT.Current_Exception may not
+ be with'ed in the presence of pragma Restriction
+ (No_Exception_Propagation).
+
+ * sem.adb (Analyze): Add entries for N_Push and N_Pop nodes
+
+ * sem_ch11.adb (Analyze_Exception_Handler): If there is a choice
+ parameter, then the handler is not a suitable target for a local raise,
+ and this is a violation of restriction No_Exception_Propagation.
+ (Analyze_Handled_Statements): Analyze choice parameters in exception
+ handlers before analyzing statement sequence (needed for proper
+ detection of local raise statements).
+ (Analyze_Raise_Statement): Reraise statement is a violation of the
+ No_Exception_Propagation restriction.
+
+ * s-rident.ads: Add new restriction No_Exception_Propagation
+
+ * tbuild.ads, tbuild.adb (Make_Implicit_Exception_Handler): New
+ function, like Make_Exception_Handler but sets Local_Raise_Statements
+ to No_List.
+ (Add_Unique_Serial_Number): Deal with case where this is called during
+ processing of configuration pragmas.
+
+2007-04-06 Thomas Quinot <quinot@adacore.com>
+ Pat Rogers <rogers@adacore.com>
+ Pascal Obry <obry@adacore.com>
+
+ * g-stsifd-sockets.adb: New file.
+
+ * g-socthi.ads, g-socket.adb, g-socthi-vxworks.adb,
+ g-socthi-vxworks.ads, g-socthi-mingw.ads, g-socthi-vms.ads,
+ g-socthi-vms.adb: Move signalling
+ fd management to a nested package, so that they can conveniently be
+ moved to a subunit that is shared across Windows, VMS, and VxWorks
+ (Ada implementation) or completed with imported bodies from socket.c
+ (UNIX case).
+ (Read_Signalling_Fd, Write_Signalling_Fd, Create_Signalling_Fds): New
+ subprograms.
+ (Check_Selector): Use Read_Signalling_Fd to read and discard data from
+ the signalling file descriptor.
+ (Abort_Selector): Use Write_Signalling_Fd to write dummy data to the
+ signalling file descriptor.
+ (Create_Selector): Use new C-imported subprogram Create_Signalling_Fds
+ instead of creating a pair of sockets for signalling here.
+
+ * g-socthi.adb: Ditto.
+ Set the runtime process to ignore SIGPIPEs on platforms that support
+ neither SO_NOSIGPIPE nor MSG_NOSIGNAL functionality.
+
+ * g-socthi-mingw.adb: Ditto.
+ (WS_Version): Use Windows 2.2.
+ Use Winsock 2.2 (instead of 1.1) for the GNAT.Socket API.
+
+ * g-soliop-mingw.ads: Link with ws2_32 for Windows 2.x support.
+ Use Winsock 2.2 (instead of 1.1) for the GNAT.Socket API.
+
+ * Makefile.in: New libgnat pair g-stsifd.adb<g-stsifd-sockets.adb.
+ added GNAT byte swapping facility
+ Update FreeBSD THREADSLIB from -lc_r to -lpthread, for FreeBSD 6.
+
+ * g-bytswa.adb, g-bytswa-x86.adb, g-bytswa.ads: New files.
+
+ * socket.c (__gnat_read_signalling_fd, __gnat_write_controlling_fd):
+ New subprograms.
+ (__gnat_create_signalling_fds): New subprogram.
+ Set the runtime process to ignore SIGPIPEs on platforms that support
+ neither SO_NOSIGPIPE nor MSG_NOSIGNAL functionality.
+
+2007-04-06 Hristian Kirtchev <kirtchev@adacore.com>
+ Vincent Celier <celier@adacore.com>
+
+ * a-calend-vms.ads, a-calend.ads, a-calend.adb, a-calend-vms.adb:
+ New version of Ada.Calendar which supports the new upper bound of Ada
+ time (2399-12-31 86_399.999999999).
+ The following modifications have been made to the package:
+ - New representation of time as count of nanoseconds since the start of
+ Ada time (1901-1-1 0.0).
+ - Target independent Split and Time_Of routines which service both
+ Ada 95 and Ada 2005 code.
+ - Target independent interface to the Ada 2005 children of Calendar.
+ - Integrated leap seconds into Ada 95 and Ada 2005 mode.
+ - Handling of non-leap centenial years.
+ - Updated clock function.
+ - Updated arithmetic and comparison operators.
+
+ * a-caldel.adb (To_Duration): Add call to target independent routine in
+ Ada.Calendar to handle the conversion of time to duration.
+
+ * sysdep.c (__gnat_localtime_tzoff): Test timezone before setting off
+ (UTC Offset).
+ If timezone is obviously incorrect (outside of -14 hours .. 14 hours),
+ set off to 0.
+ (__gnat_localtime_tzoff for Lynx and VxWorks): Even though these
+ targets do not have a natural time zone, GMT is used as a default.
+ (__gnat_get_task_options): New.
+
+ * a-direct.adb (Modification_Time): Add with and use clauses for
+ Ada.Calendar and Ada.
+ Calendar.Formatting. Remove with clause for Ada.Unchecked_Conversion
+ since it is no longer needed.
+ (Duration_To_Time): Removed.
+ (OS_Time_To_Long_Integer): Removed.
+ (Modification_Time): Rewritten to use Ada.Calendar and Ada.Calendar.
+ Formatting Time_Of routines which automatically handle time zones,
+ buffer periods and leap seconds.
+
+ * a-calari.ads, a-calari.adb ("+", "-", Difference): Add calls to
+ target independent routines in Ada.Calendar.
+
+ * a-calfor.ads, a-calfor.adb:
+ Code cleanup and addition of validity checks in various routines.
+ (Day_Of_Week, Split, Time_Of): Add call to target independent routine in
+ Ada.Calendar.
+
+ * a-catizo.ads, a-catizo.adb (UTC_Time_Offset): Add call to target
+ independent routine in Ada.Calendar.
+
+2007-04-06 Olivier Hainque <hainque@adacore.com>
+
+ * adaint.c:
+ (convert_addresses): Adjust prototype and dummy definition to expect an
+ extra file_name argument.
+
+ * gmem.c (__gnat_convert_addresses): Wrapper to convert_addresses,
+ filling the now expected file_name argument with the appropriate
+ argv[0] expansion.
+ (__gnat_gmem_a2l_initialize, __gnat_gmem_read_next_frame): Use it.
+ (tracebk): Array of void * instead of char *, corresponding to what
+ convert_addresses expects.
+ (exename): New static global, to hold the executable file name to be
+ used in all convert_addresses invocations.
+ (gmem_read_backtrace, __gnat_gmem_symbolic): Account for tracebk type
+ change.
+ (__gnat_gmem_a2l_initialize): Resolve exename.
+ (__gnat_convert_addresses): Use exename as the convert_addresses
+ file_name argument.
+
+ * g-trasym.adb (Symbolic_Traceback): Adjust signature of imported
+ "convert_addresses", now expecting a filename argument. Import the
+ necessary entities to compute the filename to use and pass it to
+ convert_addresses.
+
+2007-04-06 Matt Gingell <gingell@adacore.com>
+
+ * system-aix.ads: Back out previous change.
+ (Functions_Return_By_DSP): Removed
+
+2007-04-06 Pascal Obry <obry@adacore.com>
+
+ * s-osprim-mingw.adb (Timed_Delay): Use the right clock (standard one
+ or the monotonic used by Ada.Real_Time) to compute the sleep duration
+ on Windows.
+
+2007-04-06 Jose Ruiz <ruiz@adacore.com>
+
+ * s-osinte-vxworks.ads, s-osinte-vxworks.adb (VX_FP_TASK): Remove this
+ function. Its value changes in different VxWorks versions, and it is
+ now handled by the function __gnat_get_task_options.
+
+ * s-taprop-vxworks.adb (Create_Task): Call the function
+ __gnat_get_task_options to get the required options for creating a task.
+
+2007-04-06 Pascal Obry <obry@adacore.com>
+ Thomas Quinot <quinot@adacore.com>
+
+ * adaint.c: Replace all occurences of S2WS to S2WSU (Unicode) when
+ dealing with filename.
+ (__gnat_fopen): Call the proper macro (8bits or UTF8) to convert the
+ filename from a standard string to a wide-string depending on the
+ encoding value.
+ (__gnat_freopen): Idem.
+ (__gnat_current_time): New function (wrapper for time(3) standard C
+ function).
+
+ * g-os_lib.ads (Current_Time): New function. Returns the current
+ system time as an OS_Time value.
+
+ * s-osprim.ads (Clock): Add more precise definition of UNIX epoch.
+ (Monotonic_Clock): Same.
+
+2007-04-06 Quentin Ochem <ochem@adacore.com>
+
+ * ali.ads, ali.adb (Get_Nat): Raise an exception if the file cursor is
+ not on a natural.
+ (Scan_ALI): Cancel the xref line if there has been a reading ALI error.
+
+2007-04-06 Jose Ruiz <ruiz@adacore.com>
+
+ * a-retide.adb: Add elaboration code to ensure that the tasking run
+ time is initialized when using delay operations even when no task is
+ created.
+
+2007-04-06 Javier Miranda <miranda@adacore.com>
+
+ * a-tags.ads, a-tags.adb (Object_Specific_Data): Remove
+ component Num_Prim_Ops.
+ (Set_Num_Prim_Ops): Removed.
+ Remove all the assertions because all the routines of this
+ package are inline always.
+ (Get_Offset_Index): Add support to primary dispatch tables.
+ Move the documentation about the dispatch table to a-tags.ads
+ (Set_External_Tag): Removed
+ (Inherit_TSD): Removed.
+ (Interface_Data_Element, Interfaces_Array, Interface_Data): Declarations
+ moved to a-tags.ads
+ (Displace, IW_Membership, Inherit_TSD, Interface_Ancestor_Tags,
+ Register_Interface_Tag, Set_Offset_To_Top): Update all the occurrences
+ of the TSD field "Table" because this field has been renamed to
+ "Ifaces_Table".
+ (Inherit_CPP_DT): Removed.
+ (K_Typeinfo, K_Offset_To_Top, K_Tagged_Kind, K_Signature,
+ Cstring, Tag_Table, Type_Specific_Data, Dispatch_Table): These
+ declarations have been moved to a-tags.ads
+ (Check_Size): Removed.
+ (Expanded_Name): Updated to get access to the new field of TSD
+ containing the address of the expanded name.
+ (Get_Access_Level/Set_Access_Level): Removed.
+ (Get_Predefined_Prim_Op_Address): Removed.
+ (Set_Predefined_Prim_Op_Address): Removed.
+ (Get_Prim_Op_Address/Set_Prim_Op_Address): Removed.
+ (Get_Remotely_Callable/Set_Remotely_Callable): Removed.
+ (Set_Expanded_Name): Removed.
+ (Inherit_DT): Removed.
+ (Inherit_CPP_DT): Removed.
+ (Set_RC_Offset): Removed.
+ (Set_TSD): Removed.
+ (Base_Address): New function that displaces "this" to point to the base
+ of the object (that is, to point to the primary tag of the object).
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Javier Miranda <miranda@adacore.com>
+
+ * exp_ch3.ads, exp_ch3.adb (Analyze_N_Full_Type_Declaration): For an
+ anonymous access component, do not create a master_id if type already
+ has one, as may happen if the type is a subcomponent of a packed array
+ type.
+ (Build_Init_Procedure, Component_Needs_Simple_Initialization,
+ Initialize_Tag): Remove code associated with the old CPP pragmas.
+ CPP_Virtual and CPP_Vtable are no longer supported.
+ (Build_Offset_To_Top_Internal): Add support for concurrent record types
+ (Build_Offset_To_Top_Functions): Add support for concurrent record types
+ (Freeze_Record_Type): Remove call to
+ Init_Predefined_Interface_Primitives.
+ (Init_Secondary_Tags.Initialize_Tag): New subprogram containing all the
+ code required to initialize the tags of the secondary dispatch tables.
+ This leaves the algoritm more clear.
+ (Init_Secondary_Tags): Add support for concurrent record types
+ (Make_Predefined_Primitive_Specs): Code cleanup.
+ (Predefined_Primitive_Bodies): Code cleanup.
+ (Build_Master_Renaming): New local subprogram.
+ (Expand_N_Full_Type_Declaration): Build the master_id associated with
+ anonymous access to task type components.
+ (Expand_N_Subtype_Indication): The bounds of a range constraint in a
+ subtype indication are resolved during analysis, and must not be done
+ here.
+ (Stream_Operation_OK): Check Restriction_Active before RTE_Available.
+
+2007-04-06 Geert Bosch <bosch@adacore.com>
+ Ed Schonberg <schonberg@adacore.com>
+ Javier Miranda <miranda@adacore.com>
+ Bob Duff <duff@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Type_Conversion): Remove special processing
+ for conversion of a Float_Type'Truncation to integer.
+
+ * exp_attr.adb (Is_Inline_Floating_Point_Attribute): New function to
+ check if a node is an attribute that can be handled directly by the
+ back end.
+ (Expand_N_Attribute_Reference): Suppress expansion of floating-point
+ attributes that can be handled directly by the back end.
+ (Expand_N_Attribute_Reference, case 'Access and 'Unchecked_Access):
+ use new predicate Is_Access_Protected_Subprogram_Type.
+ (Expand_N_Attribute_Reference, case 'Write): The reference is legal for
+ and Unchecked_Union if it is generated as part of the default Output
+ procedure for a type with default discriminants.
+ (Expand_N_Attribute_Reference): Avoid the expansion of dispatching calls
+ if we are compiling under restriction No_Dispatching_Calls.
+ (Constrained): Use Underlying_Type, in case the type is private without
+ discriminants, but the full type has discriminants.
+ (Expand_N_Attribute_Reference): Replace call to Get_Access_Level by
+ call to Build_Get_Access_Level.
+ (Expand_N_Attribute_Reference): The use of 'Address with class-wide
+ interface objects requires a call to the run-time subprogram that
+ returns the base address of the object.
+ (Valid_Conversion): Improve error message on illegal attempt to store
+ an anonymous access to subprogram value into a record component.
+
+ * sem_res.adb (Resolve_Equality_Op): Detect ambiguity for "X'Access =
+ null".
+ (Simplify_Type_Conversion): New procedure that performs simplification
+ of Int_Type (Float_Type'Truncation (X)).
+ (Resolve_Type_Conversion): Call above procedure after resolving operand
+ and before performing checks. This replaces the existing ineffective
+ code in Exp_Ch4.
+ (Set_String_Literal_Subtype): When creating the internal static lower
+ bound subtype for a string literal, use a newly created copy of the
+ subtree representing the lower bound.
+ (Resolve_Call): Exclude build-in-place function calls from transient
+ scope treatment. Update comments to describe this exception.
+ (Resolve_Equality_Op): In case of dispatching call check violation of
+ restriction No_Dispatching_Calls.
+ (Resolve_Call): If the call returns an array, the context imposes the
+ component type of the array, and the function has one non-defaulted
+ parameter, rewrite the call as the indexing of a call with a single
+ parameter, to handle an Ada 2005 syntactic ambiguity for calls written
+ in prefix form.
+ (Resolve_Actuals): If an actual is an allocator for an access parameter,
+ the master of the created object is the innermost enclosing statement.
+ (Remove_Conversions): For a binary operator, check if type of second
+ formal is numeric, to check if an abstract interpretation is present
+ in the case of exponentiation as well.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Bob Duff <duff@adacore.com>
+
+ * atree.h, atree.ads, atree.adb (Copy_Node_With_Replacement): When
+ copying a parameter list in a call, set properly the First_Named_Formal
+ and Next_Named_Formal fields in the new list and in the enclosing call.
+ (Watch_Node,New_Node_Breakpoint,New_Node_Debugging_Output): Shorten
+ names, to ease typing in the debugger. Improve comments.
+ (Watch_Node): New variable, intended to be set in the debugger.
+ (New_Node_Breakpoint): New do-nothing procedure to set a breakpoint on,
+ called when the watched node is created.
+ (New_Node_Debugging_Output): Combined version of local procedures
+ New_Node_Debugging_Output and New_Entity_Debugging_Output, now global,
+ with a parameter so that conditional breakpoints like "if Node = 12345"
+ work.
+ (New_Node, New_Entity): Call the global New_Node_Debugging_Output.
+ Add Elist1 function
+
+2007-04-06 Thomas Quinot <quinot@adacore.com>
+ Ed Schonberg <schonberg@adacore.com>
+ Gary Dismukes <dismukes@adacore.com>
+
+ * checks.ads, checks.adb (Selected_Range_Checks): No range check is
+ required for a conversion between two access-to-unconstrained-array
+ types.
+ (Expr_Known_Valid): Validity checks do not apply to discriminants, but
+ to discriminant constraints on discriminant objects. This rule must
+ apply as well to discriminants of protected types in private components.
+ (Null_Exclusion_Static_Checks): If No_Initialization is set on an
+ object of a null-excluding access type then don't require the
+ the object declaration to have an expression and don't emit a
+ run-time check.
+
+2007-04-06 Arnaud Charlet <charlet@adacore.com>
+ Eric Botcazou <botcazou@adacore.com>
+
+ * gnatvsn.ads, comperr.adb (Get_Gnat_build_Type): Renamed Build_Type
+ and made constant.
+
+ * comperr.ads, comperr.adb (Compiler_Abort): Add third parameter
+ Fallback_Loc. Use it as the sloc info when Current_Error_Node doesn't
+ carry any.
+
+ * fe.h (Compiler_Abort): Add third parameter.
+
+ * misc.c (internal_error_function): Build third argument from current
+ input location and pass it to Compiler_Abort.
+
+2007-04-06 Gary Dismukes <dismukes@adacore.com>
+
+ * cstand.adb (Create_Standard): When the target's storage unit size is
+ greater than a byte, set Has_Non_Standard_Rep and Has_Pragma_Pack on
+ Standard_String.
+
+2007-04-06 Nicolas Roche <roche@adacore.com>
+
+ * cstreams.c (__gnat_full_name): Fix issues on VxWorks 6.x for which
+ absolute path can have the following form: device:/a/b. In this case
+ '/' should be inserted between the path and the filename.
+
+2007-04-06 Olivier Hainque <hainque@adacore.com>
+ Eric Botcazou <botcazou@adacore.com>
+
+ * decl.c (gnat_to_gnu_entity) <E_Constant>: Associate an external
+ VAR_DECL to a CONST_DECL we make for a public constant when we know the
+ corresponding definition has created the so made visible variable.
+ Handle anonymous access to protected subprogram.
+ (gnat_to_gnu_entity) <E_Variable>: Do not make the underlying type of an
+ object with an address clause volatile. Re-enable original fix.
+ <E_Subprogram_Type>: Set TYPE_REF_CAN_ALIAS_ALL on the reference type
+ too.
+ (gnat_to_gnu_entity) <E_Class_Wide_Type>: Retrieve the TYPE_DECL
+ associated with either the Equivalent or Root type, instead of the
+ naked type node.
+ (gnat_to_gnu_entity): Manually mark the top of the DECL_FIELD_OFFSET
+ subtree for every field of a global record type.
+ (gnat_to_gnu_entity) <E_Record_Subtype>: If the subtype has
+ discriminants, invoke again variable_size on its newly computed sizes.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+ Thomas Quinot <quinot@adacore.com>
+ Ed Schonberg <schonberg@adacore.com>
+ Bob Duff <duff@adacore.com>
+
+ * einfo.ads, einfo.adb: (First_Component_Or_Discriminant): New function
+ (Next_Component_Or_Discriminant): New function and procedure
+ (First_Index, First_Literal, Master_Id,
+ Set_First_Index, Set_First_Literal, Set_Master_Id):
+ Add missing Ekind assertions.
+ (Is_Access_Protected_Subprogram_Type): New predicate.
+ (Has_RACW): New entity flag, set on package entities to indicate that
+ the package contains the declaration of a remote accecss-to-classwide
+ type.
+ (E_Return_Statement): This node type has the Finalization_Chain_Entity
+ attribute, in case the result type has controlled parts.
+ (Requires_Overriding): Add this new flag, because "requires
+ overriding" is subtly different from "is abstract" (see AI-228).
+ (Is_Abstract): Split Is_Abstract flag into Is_Abstract_Subprogram and
+ Is_Abstract_Type. Make sure these are called only when appropriate.
+ (Has_Pragma_Unreferenced_Objects): New flag
+
+ * exp_ch5.adb (Expand_N_Assignment_Statement): If the left-hand side is
+ class-wide, the tag of the right-hand side must be an exact match, not
+ an ancestor of that of the object on left-hand side.
+ (Move_Activation_Chain): New procedure to create the call to
+ System.Tasking.Stages.Move_Activation_Chain.
+ (Expand_N_Extended_Return_Statement): Generate code to call
+ System.Finalization_Implementation.Move_Final_List at the end of a
+ return statement if the function's result type has controlled parts.
+ Move asserts to Build_In_Place_Formal.
+ (Move_Final_List): New function to create the call statement.
+ (Expand_N_Assignment_Statement): In case of assignment to a class-wide
+ tagged type, replace generation of call to the run-time subprogram
+ CW_Membership by call to Build_CW_Membership.
+ (Expand_N_Return_Statement): Replace generation of call to the run-time
+ subprogram Get_Access_Level by call to Build_Get_Access_Level.
+ (Expand_N_Simple_Function_Return): Replace generation of call to the
+ run-time subprogram Get_Access_Level by call to Build_Get_Access_Level.
+
+ * exp_ch6.ads, exp_ch6.adb (Expand_Call): Use new predicate
+ Is_Access_Protected_Subprogram_Type, to handle both named and anonymous
+ access to protected operations.
+ (Add_Task_Actuals_To_Build_In_Place_Call): New procedure to add the
+ master and chain actual parameters to a build-in-place function call
+ involving tasks.
+ (BIP_Formal_Suffix): Add new enumeration literals to complete the case
+ statement.
+ (Make_Build_In_Place_Call_In_Allocator,
+ Make_Build_In_Place_Call_In_Anonymous_Context,
+ Make_Build_In_Place_Call_In_Assignment,
+ Make_Build_In_Place_Call_In_Object_Declaration): Call
+ Add_Task_Actuals_To_Build_In_Place_Call with the appropriate master.
+ (Expand_Inlined_Call): If the subprogram is a null procedure, or a
+ stubbed procedure with a null body, replace the call with a null
+ statement without using the full inlining machinery, for efficiency
+ and to avoid invalid values in source file table entries.
+
+ * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Add support for
+ renamings of calls to build-in-place functions.
+
+ * rtsfind.adb (RTE_Record_Component_Available): New subprogram that
+ provides the functionality of RTE_Available to record components.
+ (RTU_Entity): The function Entity has been renamed to RTU_Entity
+ to avoid undesired overloading.
+ (Entity): New subprogram that returns the entity for the referened
+ unit. If this unit has not been loaded, it returns Empty.
+ (RE_Activation_Chain_Access, RE_Move_Activation_Chain): New entities.
+ Remove no longer used entities.
+ (RE_Finalizable_Ptr_Ptr, RE_Move_Final_List): New entities.
+ (RE_Type_Specific_Data): New entity.
+ (RE_Move_Any_Value): New entity.
+ (RE_TA_A, RE_Get_Any_Type): New entities.
+ (RE_Access_Level, RE_Dispatch_Table, E_Default_Prim_Op_Count,
+ RE_Prims_Ptr, RE_RC_Offset, RE_Remotely_Callable,
+ RE_DT_Typeinfo_Ptr_Size, RE_Cstring_Ptr, RE_DT_Expanded_Name): Added.
+ (Entity): New subprogram that returns the entity for the referened
+ unit. If this unit has not been loaded, it returns Empty.
+ (RTE): Addition of a new formal that extends the search to the scopes
+ of the record types found in the chain of the package.
+
+ * sem_ch6.ads, sem_ch6.adb (Check_Overriding_Indicator): Print
+ "abstract subprograms must be visible" message, whether or not the type
+ is an interface; that is, remove the special case for interface types.
+ (Analyze_Function_Return): Remove error message "return of task objects
+ is not yet implemented" because this is now implemented.
+ (Create_Extra_Formals): Add the extra master and activation chain
+ formals in case the result type has tasks.
+ Remove error message "return of limited controlled objects is not yet
+ implemented".
+ (Create_Extra_Formals): Add the extra caller's finalization list formal
+ in case the result type has controlled parts.
+ (Process_Formals): In case of access formal types there is no need
+ to continue with the analysis of the formals if we already notified
+ errors.
+ (Check_Overriding_Indicator): Add code to check overriding of predefined
+ operators.
+ (Create_Extra_Formals): Prevent creation of useless Extra_Constrained
+ flags for formals that do not require them,.
+ (Enter_Overloaded_Entity): Do not give -gnatwh warning message unless
+ hidden entity is use visible or directly visible.
+ (Analyze_Abstract_Subprogram_Declaration,Analyze_Subprogram_Body,
+ Analyze_Subprogram_Declaration,Analyze_Subprogram_Specification,
+ Check_Conventions,Check_Delayed_Subprogram,Make_Inequality_Operator,
+ New_Overloaded_Entity): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type.
+
+ * s-finimp.ads, s-finimp.adb (Move_Final_List): New procedure to move
+ a return statement's finalization list to the caller's list, used for
+ build-in-place functions with result type with controlled parts.
+ Remove no longer used entities.
+
+ * s-taskin.ads (Activation_Chain): Remove pragma Volatile. It is no
+ longer needed, because the full type is now limited, and therefore a
+ pass-by-reference type.
+ (Foreign_Task_Level): New constant.
+
+ * s-tassta.ads, s-tassta.adb (Move_Activation_Chain): New procedure to
+ move tasks from the activation chain belonging to a return statement to
+ the one passed in by the caller, and update the master to the one
+ passed in by the caller.
+ (Vulnerable_Complete_Master, Check_Unactivated_Tasks): Check the master
+ of unactivated tasks, so we don't kill the ones that are being returned
+ by a build-in-place function.
+ (Create_Task): Ignore AI-280 for foreign threads.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Robert Dewar <dewar@adacore.com>
+ Bob Duff <duff@adacore.com>
+ Gary Dismukes <dismukes@adacore.com>
+
+ * errout.adb (Unwind_Internal_Type): Use predicate
+ Is_Access__Protected_Subprogram_Type.
+
+ * freeze.adb (Size_Known): Use First/Next_Component_Or_Discriminant
+ (Freeze_Entity, packed array case): Do not override explicitly set
+ alignment and size clauses.
+ (Freeze_Entity): An entity declared in an outer scope can be frozen if
+ the enclosing subprogram is a child unit body that acts as a spec.
+ (Freeze_Entity): Use new predicate Is_Access_Protected_Subprogram_Type.
+ (Freeze_Record_Type): New Ada 2005 processing for reverse bit order
+ Remove all code for DSP option
+
+ * layout.adb (Layout_Record_Type): Use First/
+ Next_Component_Or_Discriminant
+ (Layout_Type): Use new predicate Is_Access_Protected_Subprogram_Type,
+ to handle properly the anonymous access case.
+
+ * sem_attr.adb (Build_Access_Object_Type): Use E_Access_Attribute_Type
+ for all access attributes, because overload resolution should work the
+ same for 'Access, 'Unchecked_Access, and 'Unrestricted_Access. This
+ causes the error message for the ambiguous "X'Access = Y'Access" and
+ "X'Unrestricted_Access = Y'Access" and so forth to match.
+ (Resolve_Attribute, case 'Access): Remove use of Original_Access_Type,
+ now that anonymous access to protected operations have their own kind.
+ (Resolve_Attribute): In case of dispatching call check the violation of
+ restriction No_Dispatching_Calls.
+ (Check_Array_Type): Check new -gnatyA array index style option
+
+ * sem_ch3.ads, sem_ch3.adb (Derived_Type_Declaration): Reject an
+ attempt to derive from a synchronized tagged type.
+ (Analyze_Type_Declaration): If there is a incomplete tagged view of the
+ type, inherit the class-wide type already created, because it may
+ already have been used in a self-referential anonymous access component.
+ (Mentions_T): Recognize self-referential anonymous access components
+ that use (a subtype of) the class-wide type of the enclosing type.
+ (Build_Derived_Record_Type): Add earlier setting of Is_Tagged_Type. Pass
+ Derived_Type for Prev formal on call to
+ Check_Anonymous_Access_Components rather than Empty.
+ (Make_Incomplete_Type_Declaration): Add test for case where the type has
+ a record extension in deciding whether to create a class-wide type,
+ rather than just checking Tagged_Present.
+ (Replace_Anonymous_Access_To_Protected_Subprogram): Procedure applies
+ to stand-alone object declarations as well as component declarations.
+ (Array_Type_Declaration): Initialize Packed_Array_Type to Empty, to
+ prevent accidental overwriting when enclosing package appears in
+ a limited_with_clause.
+ (Array_Type_Declaration): If the component type is an anonymous access,
+ the associated_node for the itype is the type declaration itself.
+ (Add_Interface_Tag_Components): Modified to support concurrent
+ types with abstract interfaces.
+ (Check_Abstract_Interfaces): New subprogram that verifies the ARM
+ rules 3.9.4 (15/2), 9.1 (9.d/2) and 9.4 (11.d/2).
+ (Build_Derived_Record_Type): Add call to Analyze_Interface_Declaration
+ to complete the decoration of synchronized interface types. Add also
+ a call to Check_Abstract_Interfaces to verify the ARM rules.
+ (Derive_Interface_Subprograms): Modified to support concurrent types
+ with abstract interfaces.
+ (Analyze_Subtype_Indication): Resolve the range with the given subtype
+ mark, rather than delaying the full resolution depending on context.
+ (Analyze_Component_Declaration,Analyze_Interface_Declaration,
+ Analyze_Object_Declaration,Analyze_Subtype_Declaration,
+ Array_Type_Declaration,Build_Derived_Record_Type,
+ Build_Discriminated_Subtype,Check_Abstract_Overriding,Check_Completion,
+ Derive_Interface_Subprograms,Derive_Subprogram,Make_Class_Wide_Type,
+ Process_Full_View,Record_Type_Declaration): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type. Make sure these are
+ called only when appropriate.
+ (Copy_And_Swap): Copy Has_Unreferenced_Objects flag from full type
+ to private type.
+ (Analyze_Subtype_Declaration): For an access subtype declaration, create
+ an itype reference for the anonymous designated subtype, to prevent
+ scope anonmalies in gigi.
+ (Build_Itype_Reference): New utility, to simplify construction of such
+ references.
+
+2007-04-06 Vincent Celier <celier@adacore.com>
+
+ * errutil.adb (Initialize): Initialize warnings table, if all warnings
+ are suppressed, supply an initial dummy entry covering all possible
+ source locations.
+
+ * make.adb (Scan_Make_Arg): Reject options that should start with "--"
+ and start with only one, such as "-RTS=none".
+ (Collect_Arguments): Do not check for sources outside of projects.
+ Do not collect arguments if project is externally built.
+ (Compile_Sources): Do nothing, not even check if the source is up to
+ date, if its project is externally built.
+ (Compile): When compiling a predefined source, add -gnatpg
+ as the second switch, after -c.
+ (Compile_Sources): Allow compilation of Annex J renames without -a
+ (Is_In_Object_Directory): Check if the ALI file is in the object
+ even if there is no project extension.
+ (Create_Binder_Mapping_File): Only put a unit in the mapping file for
+ gnatbind if the ALI file effectively exists.
+ (Initialize): Add the directory where gnatmake is invoked in front of
+ the path if it is invoked from a bin directory, even without directory
+ information, so that the correct GNAT tools will be used when spawned
+ without directory information.
+
+ * makeusg.adb: Change switch -S to -eS
+ Add lines for new switches -we, -wn and -ws
+ Add line for new switch -p
+
+ * prj-proc.adb (Process): Set Success to False when Warning_Mode is
+ Treat_As_Error and there are warnings.
+
+ * switch-m.ads, switch-m.adb (Normalize_Compiler_Switches): Do not skip
+ -gnatww Change gnatmake switch -S to -eS
+ (Scan_Make_Switches): Code reorganisation. Process separately multi
+ character switches and single character switches.
+ (Scan_Make_Switches): New Boolean out parameter Success. Set Success to
+ False when switch is not recognized by gnatmake.
+ (Scan_Make_Switches): Set Setup_Projects True when -p or
+ --create-missing-dirs is specified.
+
+ * fname.adb (Is_Predefined_File_Name): Return True for annex J
+ renamings Calendar, Machine_Code, Unchecked_Conversion and
+ Unchecked_Deallocation only when Renamings_Included is True.
+
+ * par.adb: Allow library units Calendar, Machine_Code,
+ Unchecked_Conversion and Unchecked_Deallocation to be recompiled even
+ when -gnatg is not specified.
+ (P_Interface_Type_Definition): Remove the formal Is_Synchronized because
+ there is no need to generate always a record_definition_node in case
+ of synchronized interface types.
+ (SIS_Entry_Active): Initialize global variable to False
+ (P_Null_Exclusion): For AI-447: Add parameter Allow_Anonymous_In_95 to
+ indicate cases where AI-447 says "not null" is legal.
+
+ * makeutl.ads, makeutil.adb (Executable_Prefix_Path): New function
+
+ * makegpr.adb (Check_Compilation_Needed): Take into account dependency
+ files with with several lines starting with the object fileb name.
+ (Scan_Arg): Set Setup_Projects True when -p or --create-missing-dirs
+ is specified.
+ (Initialize): Add the directory where gprmake is invoked in front of the
+ path, if it is invoked from a bin directory or with directory
+ information, so that the correct GNAT tools will be used when invoked
+ directly.
+ (Check_Compilation_Needed): Process correctly backslashes on Windows.
+
+ * vms_data.ads: Update switches/qualifiers
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Thomas Quinot <quinot@adacore.com>
+
+ * exp_aggr.adb:
+ If the array component is a discriminated record, the array aggregate
+ is non-static even if the component is given by an aggregate with
+ static components.
+ (Expand_Record_Aggregate): Use First/Next_Component_Or_Discriminant
+ (Convert_Aggr_In_Allocator): If the allocator is for an access
+ discriminant and the type is controlled. do not place on a finalization
+ list at this point. The proper list will be determined from the
+ enclosing object.
+ (Build_Record_Aggr_Code): If aggregate has box-initialized components,
+ initialize record controller if needed, before the components, to ensure
+ that they are properly finalized.
+ (Build_Record_Aggr_Code): For the case of an array component that has a
+ corresponding array aggregate in the record aggregate, perform sliding
+ if required.
+
+2007-04-06 Javier Miranda <miranda@adacore.com>
+ Gary Dismukes <dismukes@adacore.com>
+ Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch13.adb (Expand_External_Tag_Definition): Replace call to the
+ run-time subprogram Set_External_Tag by call to Build_Set_External_Tag.
+
+ * exp_ch4.adb (Expand_Allocator_Expression): Don't perform a run-time
+ accessibility on class-wide allocators if the allocator occurs at the
+ same scope level as the allocator's type. The check is guaranteed to
+ succeed in that case, even when the expression originates from a
+ parameter of the containing subprogram.
+ (Expand_N_Op_Eq): Do nothing in case of dispatching call if compiling
+ under No_Dispatching_Calls restriction. During the semantic analysis
+ we already notified such violation.
+ (Tagged_Membership): Constant folding. There is no need to check
+ the tag at run-time if the type of the right operand is non
+ class-wide abstract.
+ Replace call to Is_Ancestor by call to Is_Parent
+ to support concurrent types with interface types.
+ (Expand_N_Allocator): Add an assertion associated with the generation
+ of the master_id.
+ (Expand_N_Slice): Do not enable range check to nodes associated
+ with the frontend expansion of the dispatch table.
+ (Is_Local_Access_Discriminant): Subsidiary function to
+ Expand_N_Allocator.
+ (Tagged_Membership): Replace generation of call to the run-time
+ subprogram CW_Membership by call to Build_CW_Membership.
+ (Expand_Allocator_Expression): Replace generation of call to the
+ run-time subprogram Get_Access_Level by call to Build_Get_Access_Level.
+
+ * exp_disp.ads, exp_disp.adb (Make_DT): Code reorganization to
+ initialize most the TSD components by means of an aggregate.
+ Modify the declaration of the object containing the TSD
+ because we now expand code that has a higher level of abstraction.
+ The TSD has a discriminant containing the Inheritance Depth Level,
+ value that is used in the membership test but also to fix the size
+ of the table of ancestors.
+ (Expand_Interface_Conversion): Insert function body at the closest place
+ to the conversion expression, to prevent access-before-elaboration
+ errors in the backend.
+ Code improved to reduce the size of the dispatch table if
+ compiling under restriction No_Dispatching_Calls plus code cleanup.
+ Code reorganization plus removal of calls to Set_Num_Prim_Ops
+ (Make_Secondary_DT): Remove call to Set_Num_Prim_Ops.
+ (Expand_Dispatching_Call): Minor code reorganization plus addition of
+ code to return immediately if compiling under No_Dispatching_Calls
+ restriction.
+ (Set_All_DT_Position): Remove code associated with the old CPP pragmas.
+ CPP_Virtual and CPP_Vtable are no longer supported.
+ (Expand_Interface_Conversion): Add missing support for interface type
+ derivations.
+ (Expand_Interface_Actuals): Replace calls to Is_Ancestor by calls to
+ Is_Parent to support concurrent types with interfaces.
+ (Init_Predefined_Interface_Primitives): Removed.
+ (Make_Secondary_DT): Modified to support concurrent record types.
+ (Set_All_DT_Position): Modified to support concurrent record types.
+ (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entries associated
+ with Get_External_Tag, Inherit_TSD, Set_External_Tag.
+ (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entry associated
+ with CW_Membership.
+ (Ada_Actions, Action_Is_Proc, Action_Nb_Arg): Remove entries associated
+ with Get_Access_Level, Get_Predefined_Prim_Op_Address,
+ Get_Prim_Op_Address Get_RC_Offset, Get_Remotely_Callable, Inherit_DT,
+ Set_Access_Level, Set_Expanded_Name, Set_Predefined_Prim_Op_Address,
+ Set_Prim_Op_Address, Set_RC_Offset, Set_Remotely_Callable, Set_TSD.
+ (Expand_Dispatching_Call): Replace generation of call to the run-time
+ subprograms Get_Predefined_Prim_Op_Address and Get_Prim_Op_Address by
+ calls to Build_Get_Predefined_Prim_Op_Address, and Build_Get_Prim_Op_
+ Address.
+ (Fill_DT_Entry, Fill_Secondary_DT_Entry): Replace generation of call to
+ the run-time subprograms Set_Predefined_Prim_Op_Address and Set_Prim_
+ Op_Address by calls to Build_Set_Predefined_Prim_Op_Address, and
+ Build_Set_Prim_Op_Address.
+ (Get_Remotely_Callable): Subprogram removed.
+ (Init_Predefined_Interface_Primitives): Replace generation of call to
+ the run-time subprograms Inherit_DT by call to Build_Inherit_Predefined_
+ Prims.
+
+ * sem_elab.adb (Set_Elaboration_Constraint): Replace the call to
+ First (Parameter_Associations ()) with the call to First_Actual that
+ returns an actual parameter expression for both named and positional
+ associations.
+
+ * sem_disp.adb (Check_Dispatching_Call): In case of dispatching call
+ check violation of restriction No_Dispatching_Calls.
+ (Check_Controlling_Type): A formal of a tagged incomplete type is a
+ controlling argument.
+
+ * exp_util.ads, exp_util.adb (Type_May_Have_Bit_Aligned_Components): Use
+ First/Next_Component_Or_Discriminant
+ (Insert_Actions): Add entries for new N_Push and N_Pop nodes
+ (Find_Implemented_Interface): Removed. All the calls to this subprogram
+ specify Any_Limited_Interface, and this functionality is already
+ provided by the function Has_Abstract_Interfaces.
+ (Find_Interface, Find_Interface_Tag, Find_Interface_ADT): Modified to
+ support concurrent types implementing interfaces.
+ (Find_Implemented_Interface): Removed. All the calls to this subprogram
+ specify kind Any_Limited_Interface, and this functionality is already
+ provided by the function Has_Abstract_Interfaces.
+ (Remove_Side_Effects): replace Controlled_Type by
+ CW_Or_Controlled_Type whenever the issue is related to
+ using or not the secondary stack.
+
+ * par-ch12.adb (P_Formal_Type_Definition): Update calls to
+ P_Interface_Type_Definition to fulfill the new interface (the formal
+ Is_Synchronized is no longer required).
+
+ * Make-lang.in (GNAT_ADA_OBJS): Addition of exp_atag.o
+ Update dependencies.
+
+ * exp_atag.ads, exp_atag.adb: New file
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Bob Duff <duff@adacore.com>
+ Cyrille Comar <comar@adacore.com>
+
+ * exp_ch7.ads, exp_ch7.adb (Find_Final_List): If the access type is
+ anonymous, use finalization list of enclosing dynamic scope.
+ (Expand_N_Package_Declaration): For a library package declaration
+ without a corresponding body, generate RACW subprogram bodies in the
+ spec (just as we do for the task activation call).
+ (Convert_View): Split Is_Abstract flag into Is_Abstract_Subprogram and
+ Is_Abstract_Type. Make sure these are called only when appropriate.
+ Remove all code for DSP option
+ (CW_Or_Controlled_Type): new subprogram.
+
+2007-04-06 Eric Botcazou <botcazou@adacore.com>
+ Ed Schonberg <schonberg@adacore.com>
+ Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch9.ads, exp_ch9.adb (Family_Offset): Add new 'Cap' boolean
+ parameter. If it is set to true, return a result capped according to
+ the global upper bound for the index of an entry family.
+ (Family_Size): Add new 'Cap' boolean parameter. Pass it to Family_Offset
+ (Build_Find_Body_Index): Adjust for above change.
+ (Entry_Index_Expression): Likewise.
+ (Is_Potentially_Large_Family): New function extracted from...
+ (Collect_Entry_Families): ...here. Call it to detect whether the family
+ is potentially large.
+ (Build_Entry_Count_Expression): If the family is potentially large, call
+ Family_Size with 'Cap' set to true.
+ (Expand_N_Protected_Type_Declaration, Expand_N_Protected_Body): Generate
+ a protected version of an operation declared in the private part of
+ a protected object, because they may be invoked through a callback.
+ (Set_Privals): If the type of a private component is an anonymous access
+ type, do not create a new itype for each protected body.
+ If the body of a protected operation creates
+ controlled types (including allocators for class-widetypes), the
+ body of the corresponding protected subprogram must include a
+ finalization list.
+ (Build_Activation_Chain_Entity): Build the chain entity for extended
+ return statements.
+ (Type_Conformant_Parameters): Use common predicate Conforming_Types
+ to determine whether operation overrides an inherited primitive.
+ (Build_Wrapper_Spec): Add code to examine the parents while looking
+ for a possible overriding candidate.
+ (Build_Simple_Entry_Call): Set No_Initialization on the object used to
+ hold an actual parameter value since its initialization is separated
+ from the the declaration. Prevents errors on null-excluding access
+ formals.
+
+2007-04-06 Thomas Quinot <quinot@adacore.com>
+
+ * exp_dist.ads, exp_dist.adb (Build_To_Any_Call, Build_From_Any_Call):
+ Do an Unchecked_Conversion to handle the passage from the Underlying
+ Type to the Base Type when calling Build_To_Any_Call and
+ Build_From_Any_Call.
+ (Build_Actual_Object_Declaration): Set Object's Ekind to E_Variable or
+ E_Constant, depending upon Variable formal.
+ (GARLIC_Support.Build_Subprogram_Receiving_Stubs,
+ PolyORB_Support.Build_Subprogram_Receiving_Stubs): For a formal
+ parameter that requires an extra constrained parameter, declare
+ temporary for actual as a variable, not a constant.
+ (Add_RACW_Primitive_Declarations_And_Bodies): Generate bodies only when
+ the unit being compiled is the one that contains the stub type.
+ Change primitive operation name for the RACW associated with a RAS
+ from Call to _Call so it cannot clash with any legal identifier.
+ (PolyORB_Support.Add_RACW_Write_Attribute): Remove unused constant
+ Is_RAS.
+ (Append_RACW_Bodies): New subprogram.
+ (Expand_Receiving_Stubs_Bodies): Pass a 'Stmts' list to
+ Add_Receiving_Stubs_To_Declarations functions.
+ When expanding a package body, this list correspond to the
+ statements in the HSS at the end of the pacakge.
+ When expanding a package spec, this list correspond to the
+ spec declarations.
+ (Add_Receiving_Stubs_To_Declarations): Append the function
+ registering the receiving stubs at the end of the 'Stmts' list.
+ (RCI_Package_Locator): Pass the new Version generic formal when
+ instantiating a RCI_Locator package.
+ (Build_From_Any_Function): To compute the High bound for an
+ unconstrained array actual, we add the Low bound with the length.
+ Thus we must convert the low bound and the length to an appropriate
+ type before doing the sum.
+ (Build_Subprogram_Receiving_Stubs, PolyORB):
+ * Retrieve the extra formals parameters at the
+ end of the parameter stream.
+ * Use Move_Any_Value to write back out parameters
+ after executing the request as it is more efficient
+ than Copy_Any_Value.
+ * Build the any containing Extra Formals with the
+ appropriate typecode.
+ (PolyORB_Support.Helpers.Append_Record_Traversal): Nothing to do for an
+ empty Component_List.
+ (Build_Actual_Object_Declaration): New subprogram. Build and insert into
+ the tree the declaration for an object that serves as actual parameter
+ in server-side stubs.
+ (GARLIC_Support.Build_Subprogram_Receiving_Stubs,
+ PolyORB_Support.Build_Subprogram_Receiving_Stubs):
+ Use Build_Actual_Object_Declaration to prepare the actuals.
+ (Add_Parameter_To_NVList): Set the parameter mode to In for
+ Extra Constrained Parameters.
+ (Build_General_Calling_Stubs): Set the parameter type to boolean for
+ Extra Constrained parameters.
+ (Build_To_Any_Function, Build_From_Any_Function,
+ Built_TypeCode_Function): When Typ is implicit, call the correct
+ function with the first not implicit parent type.
+ (TC_Rec_Add_Process_Element, FA_Rec_Add_Process_Element,
+ (FA_Ary_Add_Process_Element): When Datum is an Any, we cannot infer the
+ typecode from the Etype. Therefore we retrieve the correct typecode
+ with a call to Get_Any_Type.
+ (Copy_Specification): Do controlling formal type substitution based on
+ Is_Controlling_Formal flag, instead of caller-provided object type.
+ (Build_Subprogram_Calling_Stubs): When retrieveing the original spec for
+ a RACW primitive operation, we might get a subprogram declaration for an
+ ancestor of the RACW designated type (not for the designated type
+ itself), in the case where this operation is inherited. In this case we
+ have no easy means of determining the original tagged type for which
+ the primitive was declared, so instead we now rely on
+ Copy_Specification to use the Is_Controlling_Formal flag to determine
+ which formals require type substitution.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+ Ed Schonberg <schonberg@adacore.com>
+
+ * exp_intr.adb (Expand_Exception_Call): Calls to subprograms in
+ GNAT.Current_Exception are not allowed if pragma Restrictions
+ (No_Exception_Propagation) is set and in any case make the associated
+ handler unsuitable as a target for a local raise statement.
+ (Expand_Dispatching_Constructor_Call): Replace generation of call to the
+ run-time subprogram CW_Membership by call to Build_CW_Membership.
+ (Expand_Dispatching_Constructor_Call): If the dispatching tag is given
+ by a function call, a temporary must be created before expanding the
+ Constructor_Call itself, to prevent out-of-order elaboration in the
+ back-end when stack checking is enabled..
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_pakd.adb (Expand_Packed_Boolean_Operator): The bounds of the
+ result are the bounds of the left operand, not the right.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_strm.adb
+ (Build_Mutable_Record_Write_Procedure): For an Unchecked_Union type, use
+ discriminant defaults.
+ (Build_Record_Or_Elementary_Output_Procedure): Ditto.
+ (Make_Component_List_Attributes): Ditto.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Bob Duff <duff@adacore.com>
+
+ * sem_aggr.adb (Resolve_Record_Aggregate): In semantics-only mode treat
+ an association with a box as providing a value even though the
+ initialization procedure for the type is not available.
+ (Resolve_Record_Aggregate): Check that a choice of an association with a
+ box corresponds to a component of the type.
+ (Resolve_Record_Aggregate): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type.
+
+ * exp_tss.adb (Base_Init_Proc): Use Is_Type instead of Type_Kind for
+ assert.
+
+ * inline.adb (Add_Inlined_Body): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type. Make sure these are
+ called only when appropriate.
+
+2007-04-06 Olivier Hainque <hainque@adacore.com>
+
+ * g-alleve.ads (Low Level Vector type definitions): Map each to the
+ associated vector view instead of all to the unsigned char view.
+
+ * g-altcon.adb (Generic_Conversions): New internal generic package,
+ offering facilities for all the Vector/View conversion routines
+ implemented by this unit.
+ (To_View/To_Vector - all versions): Reimplemented in a systematic
+ manner, using the internal Generic_Conversions facilities.
+
+2007-04-06 Pascal Obry <obry@adacore.com>
+
+ * g-arrspl.adb (Free) [Element_Access]: New routine to free the source
+ string.
+ (Create): Free the source string before storing the new one.
+
+2007-04-06 Vincent Celier <celier@adacore.com>
+
+ * g-debpoo.adb (Validity): New package with a complete new
+ implementation of subprograms Is_Valid and Set_Valid.
+ (Is_Valid): Move to local package Validity
+ (Set_Valid): Move to local package Validity
+
+2007-04-06 Arnaud Charlet <charlet@adacore.com>
+
+ * g-expect.adb (Get_Command_Output): When expanding the output buffer
+ we must ensure that there is enough place for the new data we are going
+ to copy in.
+
+2007-04-06 Thomas Quinot <quinot@adacore.com>
+
+ * g-md5.ads, g-md5.adb (Digest): Fix off-by-one error in padding
+ computation.
+
+2007-04-06 Jose Ruiz <ruiz@adacore.com>
+ Vincent Celier <celier@adacore.com>
+
+ * gnatcmd.adb (B_Start): Add prefix of binder generated file.
+ (Stack_String): Add this String that contains the name of the Stack
+ package in the project file.
+ (Packages_To_Check_By_Stack): Add this list that contains the packages
+ to be checked by gnatstack, which are the naming and the stack packages.
+ (Check_Files): If no .ci files were specified for gnatstack we add all
+ the .ci files belonging to the projects, including binder generated
+ files.
+ (Non_VMS_Usage): Document that gnatstack accept project file switches.
+ (GNATCmd): Update the B_Start variable if we are in a VMS environment.
+ Add gnatstack to the list of commands that use project file related
+ switches, and get the single attribute Switches from the stack package
+ in a project file when calling gnatstack. Parse the -U flag for
+ processing files belonging to all projects in the project tree.
+ Remove all processing for command Setup
+
+ * prj-attr.adb: Add new package Stack with single attribute Switches
+
+ * vms_conv.ads (Command_Type): Add command Stack.
+ Move to body declarations that are only used in the body: types Item_Id,
+ Translation_Type, Item_Ptr, Item and its subtypes.
+
+ * vms_conv.adb: (Initialize): Add data for new command Stack.
+ Add declarations moved from the spec: types Item_Id, Translation_Type,
+ Item_Ptr, Item and its subtypes.
+ (Cargs_Buffer): New table
+ (Cargs): New Boolean global variable
+ (Process_Buffer): New procedure to create arguments
+ (Place): Put character in table Buffer or Cargs_Buffer depending on the
+ value of Cargs.
+ (Process_Argument): Set Cargs when processing qualifiers for GNAT
+ COMPILE
+ (VMS_Conversion): Call Process_Buffer for table Buffer and, if it is not
+ empty, for table Cargs_Buffer.
+ (Initialize): Remove component Setup in Command_List
+
+2007-04-06 Vincent Celier <celier@adacore.com>
+
+ * gprep.adb (Process_Files.Process_One_File): Use full file name when
+ issuing pragma Source_Reference.
+
+2007-04-06 Emmanuel Briot <briot@adacore.com>
+
+ * g-regpat.adb (Parse_Posix_Character_Class): Fix handling of
+ [[:xdigit:]] character class.
+ Also raise an exception when an invalid character class is used.
+
+2007-04-06 Pascal Obry <obry@adacore.com>
+
+ * i-cstrea.ads: (fopen): Add encoding parameter.
+ (freopen): Idem.
+ Change reference from a-sysdep.c to sysdep.c in comment.
+ Update copyright notice.
+ This set of patch add support for the encoding form parameter.
+
+ * mingw32.h (S2WSU): New macro to convert from a string to a
+ wide-string using the UTF-8 encoding. The S2WS macro supports now only
+ standard 8bits encoding.
+ (WS2SU): As above but converting from wide-sring to string.
+ This is needed as it is necessary to have access to both versions in the
+ runtime for the form parameter encoding support.
+ This set of patch add support for the encoding form parameter.
+ (S2WS): Improve implementation to handle cases where the filename is not
+ UTF-8 encoded. In this case we default to using the current code page
+ for the conversion.
+
+ * s-crtl-vms64.ads, s-crtl.ads (Filename_Encoding): New enumeration
+ type (UTF8, ASCII_8bits). This enumeration has a rep clause to match
+ the constants defined in adaint.h.
+ (fopen): Add encoding parameter.
+ (freopen): Idem.
+
+ * s-ficobl.ads (AFCB): Add Encoding field to record the filename
+ encoding. This is needed for the Reset routine (freopen low level-call).
+
+ * s-fileio.adb (Open): Decode encoding form parameter and set the
+ corresponding encoding value into AFCB structure.
+ (Reset): Pass the encoding value to freopen.
+ (Close): Move the call to Lock_Task to the beginning of the procedure.
+
+2007-04-06 Geert Bosch <bosch@adacore.com>
+ Robert Dewar <dewar@adacore.com>
+
+ * i-fortra.ads: Add Double_Complex type.
+
+ * impunit.adb: (Is_Known_Unit): New function
+ Add Gnat.Byte_Swapping
+ Add GNAT.SHA1
+ Add new Ada 2005 units
+ Ada.Numerics.Generic_Complex_Arrays, Ada.Numerics.Generic_Real_Arrays,
+ Ada.Numerics.Complex_Arrays, Ada.Numerics.Real_Arrays,
+ Ada.Numerics.Long_Complex_Arrays, Ada.Numerics.Long_Long_Complex_Arrays,
+ Ada.Numerics.Long_Long_Real_Arrays and Ada.Numerics.Long_Real_Arrays
+
+ * impunit.ads (Is_Known_Unit): New function
+
+ * a-ngcoar.adb, a-ngcoar.ads, a-ngrear.adb,
+ a-ngrear.ads, a-nlcoar.ads, a-nllcar.ads, a-nllrar.ads, a-nlrear.ads,
+ a-nucoar.ads, a-nurear.ads, g-bytswa.adb, g-bytswa-x86.adb,
+ g-bytswa.ads, g-sha1.adb, g-sha1.ads, i-forbla.ads, i-forlap.ads,
+ s-gearop.adb, s-gearop.ads, s-gecobl.adb, s-gecobl.ads, s-gecola.adb,
+ s-gecola.ads, s-gerebl.adb, s-gerebl.ads, s-gerela.adb, s-gerela.ads:
+ New files.
+
+ * Makefile.rtl: Add g-bytswa, g-sha1, a-fzteio and a-izteio
+
+ * a-fzteio.ads, a-izteio.ads: New Ada 2005 run-time units.
+
+2007-04-06 Eric Botcazou <botcazou@adacore.com>
+ Arnaud Charlet <charlet@adacore.com>
+
+ * init.c: Reuse PA/HP-UX code for IA-64/HP-UX, except
+ __gnat_adjust_context_for_raise.
+ (__gnat_init_float): on x86 vxworks 5.x and 6.x, we use the same
+ implementation of floating point operations as native x86 targets.
+ So the FPU should be initialized in the same way using finit. Fix
+ floating point operations accuracy issues.
+ (__gnat_install_handler, case FreeBSD): Use proper type for sa_sigaction
+ member in struct sigaction, so as to avoid warning for incompatible
+ pointer types.
+
+2007-04-06 Serguei Rybin <rybin@adacore.com>
+
+ * lib.ads, lib.adb (Tree_Read): Release the memory occupied by the
+ switches from previously loaded tree
+
+2007-04-06 Thomas Quinot <quinot@adacore.com>
+
+ * lib-writ.adb (Write_With_Lines): Factor duplicated code between the
+ cases where a given dependency has a body or not.
+ (Write_With_File_Names): New subprogram, common code for the two cases
+ above.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Javier Miranda <miranda@adacore.com>
+
+ * lib-xref.ads, lib-xref.adb:
+ Modify the loop that collects type references, to include interface
+ types that the type implements. List each of these interfaces when
+ building the entry for the type.
+ (Generate_Definition): Initialize component Def and Typ of new entry
+ in table Xrefs, to avoid to have these components unitialized.
+ (Output_References): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type.
+ (Generate_Reference): Add barrier to do not generate the warning
+ associated with Ada 2005 entities with entities generated by the
+ expander.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+ Arnaud Charlet <charlet@adacore.com>
+ Vincent Celier <celier@adacore.com>
+
+ * gnat_rm.texi, gnat_ugn.texi: Add -gnatyl documentation
+ Update 'Exception Handling Control' chapter which was outdated.
+ Minor fix to documentation of -gnatwq
+ Remove section "Adapting the Run Time to a New C++ Compiler" because
+ it is now obsolete.
+ Add passage on need of -nostart-files in some non-ada-main cases.
+ Document new switch -eS (/STANDARD_OUTPUT_FOR_COMMANDS) for gnatmake
+ Update documentation about Interfacing with C++
+ Add documentation for new gnatmake switch -p
+ Add missing protocol part in URLs.
+ Document -gnatyA
+ Document pragma Compile_Time_Error
+ Add documentation for Object_Size indicating that stand alone
+ objects can have a larger size in some cases.
+ Add node for GNAT.Byte_Swapping, GNAT.SHA1
+ Update reference to the Ravenscar profile.
+ Document pragma Unreferenced_Objects
+
+ * gnat-style.texi: Fix typo
+
+2007-04-06 Vincent Celier <celier@adacore.com>
+
+ * mlib.adb (Building_Library): Only output "building a library..." in
+ verbose mode
+
+ * mlib-prj.adb (Build_Library): Only output lists of object and ALI
+ files in verbose mode.
+
+ * mlib-utl.adb (Ar): Only output the first object files when not in
+ verbose mode.
+ (Gcc): Do not display all the object files if not in verbose mode, only
+ the first one.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+
+ * namet.ads, namet.adb (wn): Improve this debugging routine. Calling
+ it no longer destroys the contents of Name_Buffer or Name_Len and
+ non-standard and invalid names are handled better.
+ (Get_Decoded_Name_String): Improve performance by using
+ Name_Has_No_Encodings flag in the name table.
+ (Is_Valid_Name): New function to determine whether a Name_Id is valid.
+ Used for debugging printouts.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+ Javier Miranda <miranda@adacore.com>
+ Bob Duff <duff@adacore.com>
+
+ * par-ch3.adb: (P_Type_Declaration): Set Type_Token_Location
+ (P_Interface_Type_Definition): Remove the formal Is_Synchronized because
+ there is no need to generate always a record_definition_node in case
+ of synchronized interface types.
+ (P_Type_Declaration): Update calls to P_Interface_Type_Definition.
+ (P_Null_Exclusion): For AI-447: Remove warnings about "not null" being
+ illegal in Ada 95, in cases where it is legal. Change the warnings to
+ errors in other cases. Don't give the error unless the "not null"
+ parses properly. Correct the source position at which the error occurs.
+ (P_Known_Discriminant_Part_Opt): Pass Allow_Anonymous_In_95 => True to
+ P_Null_Exclusion, to suppress "not null" warnings.
+ (P_Identifier_Declarations): Code cleanup. Removed unrequired label and
+ associated goto statements.
+
+ * par-endh.adb (Pop_End_Context): Allow more flexibility in placement
+ of END RECORD
+
+ * scans.ads (Type_Token_Location): New flag
+
+ * par-ch6.adb (P_Mode): Check specifically for case of IN ACCESS
+ (P_Formal_Part): Pass Allow_Anonymous_In_95 => True to
+ P_Null_Exclusion, to suppress "not null" warnings.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+ Javier Miranda <miranda@adacore.com>
+ Bob Duff <duff@adacore.com>
+ Vincent Celier <celier@adacore.com>
+
+ * par-prag.adb (Prag): Add dummy entry for pragma Compile_Time_Error
+ (Extensions_Allowed): No longer sets Ada_Version
+ Entry for pragma Unreferenced_Objects
+
+ * sem_prag.adb (Analyze_Pragma, case Priority): Force with of
+ system.tasking if pragma priority used in a procedure
+ (Analyze_Pragma, case Warning): Handle dot warning switches
+ (Process_Compile_Time_Warning_Or_Error): New procedure
+ (Analyze_Pragma): Add processing for Compile_Time_Error
+ Add support for extra arguments External_Name and Link_Name.
+ Remove code associated with pragmas CPP_Virtual and CPP_Vtable.
+ (Process_Import_Or_Interface): Add support for the use of pragma Import
+ with tagged types.
+ (Extensions_Allowed): No longer affects Ada_Version
+ (Analyze_Pragma): Split Is_Abstract flag into Is_Abstract_Subprogram and
+ Is_Abstract_Type. Make sure these are called only when appropriate.
+ Add processing for pragma Unreferenced_Objects
+
+ * snames.h, snames.ads, snames.adb: Add entry for pragma
+ Compile_Time_Error
+ Add new standard name Minimum_Binder_Options for new gprmake
+ Add new standard names for gprmake: Archive_Suffix,
+ Library_Auto_Init_Supported, Library_Major_Minor_Id_Supported,
+ Library_Support, Library_Version_Options,
+ Shared_Library_Minimum_Options,
+ Shared_Library_Prefix, Shared_Library_Suffix, Symbolic_Link_Supported.
+ Change Name_Call to Name_uCall so that it cannot clash with a legal
+ subprogram name.
+ Add new standard names Mapping_Spec_Suffix and Mapping_Body_Suffix
+ Append C_Plus_Plus to convention identifiers as synonym for CPP
+ Add new standard names Stack and Builder_Switches
+ Add new standard names: Compiler_Minimum_Options, Global_Config_File,
+ Library_Builder, Local_Config_File, Objects_Path, Objects_Path_File,
+ Run_Path_Option, Toolchain_Version.
+ Entry for pragma Unreferenced_Objects
+
+ * switch-c.adb (Scan_Front_End_Switches): Store correct -gnateD
+ switches, without repetition of "eD". Make sure that last character of
+ -gnatep= switch is not taken as -gnat switch character.
+ Complete rewrite of circuit for handling saving compilation options
+ Occasioned by need to support dot switchs for -gnatw, but cleans up
+ things in general.
+ -gnatX does not affect Ada_Version
+ Include -gnatyA in -gnatg style switches
+
+ * sem_warn.ads, sem_warn.adb (Output_Unreferenced_Messages): Exclude
+ warnings on return objects.
+ (Warn_On_Useless_Assignment): Exclude warnings on return objects
+ (Set_Dot_Warning_Switch): New procedure
+ (Check_References): Add missing case of test for
+ Has_Pragma_Unreferenced_Objects
+ (Output_Unreferenced_Messages): Implement effect of new pragma
+ Unreferenced_Objects, remove special casing of limited controlled
+ variables.
+
+2007-04-06 Vincent Celier <celier@adacore.com>
+
+ * prj-ext.adb (Initialize_Project_Path): New procedure that initialize
+ the default project path, initially done during elaboration of the
+ package.
+ If the prefix returned by Sdefault is null, get the prefix from a call
+ to Executable_Prefix_Path.
+ (Project_Path): Call Initialize_Project_Path if Current_Project_Path is
+ null.
+
+ * prj-nmsc.adb (Get_Path_Names_And_Record_Sources): Use the non
+ canonical directory name to open the directory from which files are
+ retrieved.
+ (Record_Other_Sources): Idem.
+ (Locate_Directory): Add the possibility to create automatically missing
+ directories when Setup_Projects is True.
+ Call Locate_Directory so that the directory will be created when
+ Setup_Projects is True, for object dir, library dir, library ALI dir,
+ library source copy dir and exec dir.
+
+ * prj-pp.adb (Max_Line_Length): Set to 255 for compatibility with older
+ versions of GNAT.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+
+ * sem_ch13.ads, sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order):
+ Use First/Next_Component_Or_Discriminant
+ (Analyze_Record_Representation_Clause):
+ Use First/Next_Component_Or_Discriminant
+ (Check_Component_Overlap): Use First/Next_Component_Or_Discriminant
+ (Analyze_Attribute_Definition_Clause, case Value_Size): Reject
+ definition if type is unconstrained.
+ (Adjust_Record_For_Reverse_Bit_Order): New procedure
+ (Analyze_Attribute_Definition_Clause): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type.
+ (Adjust_Record_For_Reverse_Bit_Order): New procedure
+
+ * repinfo.adb (List_Record_Info): Use First/
+ Next_Component_Or_Discriminant.
+
+ * style.ads, styleg-c.adb, styleg-c.ads (Check_Array_Attribute_Index):
+ New procedure.
+
+ * stylesw.ads, stylesw.adb: Recognize new -gnatyA style switch
+ Include -gnatyA in default switches
+
+ * opt.ads: (Warn_On_Non_Local_Exception): New flag
+ (Warn_On_Reverse_Bit_Order): New flag
+ (Extensions_Allowed): Update the documentation.
+ (Warn_On_Questionable_Missing_Parens): Now on by default
+
+ * usage.adb: Add documentation of -gnatw.x/X switches
+ Document new -gnatyA style switch
+ -gnatq warnings are on by default
+
+2007-04-06 Ed Falis <falis@adacore.com>
+
+ * s-carun8.adb, s-carsi8.adb (Compare_Array_?8): modify so that last
+ full word is no longer compared twice.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch10.adb (Install_Limited_Context_Clauses.
+ Expand_Limited_With_Clause): Use a new copy of selector name in the
+ call to Make_With_Clause. This fixes the tree structure for ASIS
+ purposes. Nothing is changed in the compiler behaviour.
+ (Process_Body_Clauses): Handle properly use clauses whose prefix is
+ a package renaming.
+ (Install_Limited_With_Clauses): Do not install non-limited view when it
+ is still incomplete.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch12.adb (Check_Generic_Actuals): Use first subtype of actual
+ when capturing size information, instead of base type, which for a
+ formal array type will be the unconstrained type.
+ (Analyze_Formal_Object_Declaration): Add check for illegal default
+ expressions for a formal in object of a limited type.
+ (Instantiate_Object): Ditto.
+ (Check_Formal_Package_Instance): Skip entities that are formal objects,
+ because they were defaulted in the formal package and no check applies
+ to them.
+ (Check_Formal_Package_Instance): Extend conformance check to other
+ discrete types beyond Integer.
+ (Process_Default): Copy directly the unmatched formal. A generic copy
+ has already been performed in Analyze_Formal_Package.
+ (Analyze_Associations): If a formal subprogram has no match, check for
+ partial parametrization before looking for a default, to prevent
+ spurious errors.
+ (Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation): Do
+ not set the instantiation environment before analyzing the actuals.
+ Fixes regression on 8515-003 with implementation of AI-133.
+ Set_Instance_Env checks whether the generic unit is a predefined
+ unit, in which case the instance must be analyzed with the latest Ada
+ mode. This setting must take place after analysis of the actuals,
+ because the actuals must be analyzed and frozen in the Ada mode extant
+ outside of the current instantiation.
+ (Save_Env, Restore_Env): Preserve and restore the configuration
+ parameters so that predefined units can be compiled in the proper Ada
+ mode.
+ (Analyze_Formal_Object_Declaration,Analyze_Formal_Subprogram,
+ Instantiate_Type): Split Is_Abstract flag into Is_Abstract_Subprogram
+ and Is_Abstract_Type.
+ (Analyze_Formal_Package): For better error recovery, Add exception
+ handler to catch Instantion_Error, which can be raised in
+ Analyze_Associations
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Bob Duff <duff@adacore.com>
+ Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch4.adb (Try_Primitive_Operation): The call is legal if the
+ prefix type is a discriminated subtype of the type of the formal.
+ (Analyze_Allocator): Collect all coextensions regardless of the context.
+ Whether they can be allocated statically is determined in exp_ch4.
+ (Analyze_Selected_Component): If the prefix is a limited view and the
+ non-limited view is available, use the non-limited one.
+ (Operator_Check): For "X'Access = Y'Access" (which is ambiguous, and
+ therefore illegal), suggest a qualified expression rather than a type
+ conversion, because a type conversion would be illegal in this context.
+ (Anayze_Allocator): Trace recursively all nested allocators so that all
+ coextensions are on the corresponding list for the root. Do no mark
+ coextensions if the root allocator is within a declaration for a stack-
+ allocated object, because the access discriminants will be allocated on
+ the stack as well.
+ (Analyze_Call): Remove restriction on calls to limited functions for the
+ cases of generic actuals for formal objects, defaults for formal objects
+ and defaults for record components.
+ (Analyze_Allocator): Before analysis, chain coextensions on the proper
+ element list. Their expansion is delayed until the enclosing allocator
+ is processed and its finalization list constructed.
+ (Try_Primitive_Operation): If the prefix is a concurrent type, looks
+ for an operation with the given name among the primitive operations of
+ the corresponding record type.
+ (Analyze_Selected_Component): If the prefix is a task type that
+ implements an interface, and there is no entry with the given name,
+ check whether there is another primitive operation (e.g. a function)
+ with that name.
+ (Try_Object_Operation, Analyze_One_Call, Try_Indexed_Call): Handle
+ properly the indexing of a function call written in prefix form, where
+ the function returns an array type, and all parameters of the function
+ except the first have defaults.
+ (Analyze_Equality_Op): If this is a call to an implicit inequality, keep
+ the original operands, rather than relocating them, for efficiency and
+ to work properly when an operand is overloaded.
+ (Analyze_Allocator,Operator_Check,Remove_Abstract_Operations): Split
+ Is_Abstract flag into Is_Abstract_Subprogram and Is_Abstract_Type.
+ (Analyze_Selected_Component): If the prefix is a private extension, only
+ scan the visible components, not those of the full view.
+ (Try_Primitive_Operation): If the operation is a procedure, collect all
+ possible interpretations, as for a function, because in the presence of
+ classwide parameters several primitive operations of the type can match
+ the given arguments.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Robert Dewar <dewar@adacore.com>
+
+ * sem_ch5.adb (Analyze_Assignment): Reject a right-hand side that is a
+ tag-indeterminate call to an abstract function, when the left-hand side
+ is not classwide.
+ (Analyze_Loop_Statement): Improve detection of infinite loops
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Thomas Quinot <quinot@adacore.com>
+
+ * sem_ch7.ads, sem_ch7.adb (Inspect_Deferred_Constant_Completion): Move
+ out of Analyze_Package_Declaration, because processing must be applied
+ to package bodies as well, for deferred constants completed by pragmas.
+ (Analyze_Package_Declaration): When the package declaration being
+ analyzed does not require an explicit body, call Check_Completion.
+ (May_Need_Implicit_Body): An implicit body is required when a package
+ spec contains the declaration of a remote access-to-classwide type.
+ (Analyze_Package_Body): If the package contains RACWs, append the
+ pending subprogram bodies generated by exp_dist at the end of the body.
+ (New_Private_Type,Unit_Requires_Body): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type.
+ (Preserve_Full_Attributes): The full entity list is not an attribute
+ that must be preserved from full to partial view.
+
+ * sem_dist.adb (Add_RAS_Dereference_TSS):
+ Change primitive name to _Call so it cannot clash with any legal
+ identifier, and be special-cased in Check_Completion.
+ Mark the full view of the designated type for the RACW associated with
+ a RAS as Comes_From_Source to get proper view switching when installing
+ private declarations.
+ Provite a placeholder nested package body along with the nested spec
+ to have a place for Append_RACW_Bodies to generate the calling stubs
+ and stream attributes.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Robert Dewar <dewar@adacore.com>
+
+ * sem_ch8.adb (Has_Components): If the argument is an incomplete type
+ that is a limited view, check the non-limited view if available.
+ (Undefined): Refine error message for missing with of Text_IO
+ (Find_Expanded_Name): Use Is_Known_Unit for more accurate error message
+ to distinguish real missing with cases.
+ Fix format of all missing with messages
+ (Analyze_Subprogram_Renaming): Emit proper error message on illegal
+ renaming as body when renamed entity is abstract.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Javier Miranda <miranda@adacore.com>
+
+ * sem_type.ads, sem_type.adb (Has_Abstract_Interpretation): Make
+ predicate recursive, to handle complex expressions on literals whose
+ spurious ambiguity comes from the abstract interpretation of some
+ subexpression.
+ (Interface_Present_In_Ancestor): Add support to concurrent record
+ types.
+ (Add_One_Interp,Disambiguate): Split Is_Abstract flag into
+ Is_Abstract_Subprogram and Is_Abstract_Type.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Javier Miranda <miranda@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Object_Access_Level): If the object is a
+ dereference of a local object R created as a reference to another
+ object O, use the access level of O.
+ (Matches_Prefixed_View_Profile): Use common predicate Conforming_Types,
+ rather than local Same_Formal_Type, to check whether protected operation
+ overrides an inherited one.
+ (Same_Formal_Type): New predicate, used when matching signatures of
+ overriding synchronized operations, to handle the case when a formal
+ has a type that is a generic actual.
+ (Is_Aliased_View): Replace check on E_Task_Type and E_Protected_Type by
+ predicate Is_Concurrent_Type. This ensures supportin case of subtypes.
+ (Needs_One_Actual): New predicate, for Ada 2005 use, to resolve
+ syntactic ambiguities involving indexing of function calls that return
+ arrays.
+ (Abstract_Interface_List): New subprogram that returns the list of
+ abstract interfaces associated with a concurrent type or a
+ concurrent record type.
+ (Interface_Present_In_Parent): New subprogram used to check if a
+ given type or some of its parents implement a given interface.
+ (Collect_Abstract_Interfaces): Add support for concurrent types
+ with interface types.
+ (Has_Abstract_Interfaces): Add support for concurrent types with
+ interface types.
+ (Is_Parent): New subprogram that determines whether E1 is a parent
+ of E2. For a concurrent type its parent is the first element of its
+ list of interface types; for other types this function provides the
+ same result than Is_Ancestor.
+ (Enclosing_Subprogram): Add test for N_Extended_Return_Statement.
+ (Collect_Synchronized_Interfaces): Removed because the subprogram
+ Collect_Abstract_Interfaces provides this functionality.
+ (Collect_Abstract_Interfaces): Minor update to give support to
+ concurrent types and thus avoid undesired code duplication.
+ (Get_Subprogram_Entity): Handle entry calls.
+ (May_Be_Lvalue): Include actuals that appear as in-out parameters in
+ entry calls.
+ (Enter_Name): Do not give -gnatwh hiding warning for record component
+ entities, they never result in hiding.
+
+2007-04-06 Ed Schonberg <schonberg@adacore.com>
+ Robert Dewar <dewar@adacore.com>
+
+ * sinfo.ads, sinfo.adb (Coextensions): New element list for allocators,
+ to chain nested components that are allocators for access discriminants
+ of the enclosing object.
+ Add N_Push and N_Pop nodes
+ New field Exception_Label added
+ (Local_Raise_Statements): New field in N_Exception_Handler_Node
+ (Local_Raise_Not_OK): New flag in N_Exception_Handler_Node
+ (Is_Coextension): New flag for allocators, to mark allocators that
+ correspond to access discriminants of dynamically allocated objects.
+ (N_Block_Statement): Document the fact that the corresponding entity
+ can be an E_Return_Statement.
+ (Is_Coextension): New flag for allocators.
+ Remove all code for DSP option
+
+ * sprint.ads, sprint.adb: Display basic information for class_wide
+ subtypes. Add handling of N_Push and N_Pop nodes
+
+2007-04-06 Arnaud Charlet <charlet@adacore.com>
+
+ * s-tpobop.adb (Exceptional_Complete_Entry_Body): Undefer abortion
+ before propagating exception.
+
+2007-04-06 Olivier Hainque <hainque@adacore.com>
+
+ * tracebak.c (PC_ADJUST - ia64): -4 instead of -16, expected to yield
+ an address always within the call instruction from a return address.
+
+2007-04-06 Olivier Hainque <hainque@adacore.com>
+ Eric Botcazou <botcazou@adacore.com>
+
+ * trans.c (call_to_gnu) <TYPE_RETURNS_BY_TARGET_PTR_P>: Return an
+ expression with a COMPOUND_EXPR including the call instead of emitting
+ the call directly here.
+ (gnat_to_gnu) <N_Slice>: Do not return a non-constant low bound if the
+ high bound is constant and the slice is empty. Tidy.
+ (tree_transform, case N_Op_Not): Handle properly the case where the
+ operation applies to a private type whose full view is a modular type.
+ (Case_Statement_To_gnu): If an alternative is an E_Constant with an
+ Address_Clause, use the associated Expression as the GNAT tree
+ representing the choice value to ensure the corresponding GCC tree is
+ of the proper kind.
+ (maybe_stabilize_reference): Stabilize COMPOUND_EXPRs as a whole
+ instead of just the operands, as the base GCC stabilize_reference does.
+ <CALL_EXPR>: New case. Directly stabilize the call if an lvalue is not
+ requested; otherwise fail.
+ (addressable_p) <COMPONENT_REF>: Do not test DECL_NONADDRESSABLE_P.
+
+2007-04-06 Thomas Quinot <quinot@adacore.com>
+
+ * uintp.ads, uintp.adb (UI_Div_Rem): New subprogram, extending previous
+ implementation of UI_Div.
+ (UI_Div): Reimplement as a call to UI_Div_Rem.
+ (UI_Rem): Take advantage of the fact that UI_Div_Rem provides the
+ remainder, avoiding the cost of a multiplication and a subtraction.
+ (UI_Modular_Inverse): Take advantage of the fact that UI_Div_Rem
+ provides both quotient and remainder in a single computation.
+ (UI_Modular_Exponentiation, UI_Modular_Inverse): New modular arithmetic
+ functions for uint.
+ (UI_Modular_Inverse): Add a note that the behaviour of this subprogram
+ is undefined if the given n is not inversible.
+
+2007-04-06 Olivier Hainque <hainque@adacore.com>
+
+ * utils2.c (known_alignment): Handle COMPOUND_EXPR, COND_EXPR and
+ BIT_AND_EXPR. Handle also VIEW_CONVERT_EXPR, as the other conversion
+ opcodes.
+
+2007-04-06 Eric Botcazou <botcazou@adacore.com>
+ Olivier Hainque <hainque@adacore.com>
+
+ * utils.c (update_pointer_to): Make a copy of the couple of FIELD_DECLs
+ when updating the contents of the old pointer to an unconstrained array.
+ (end_subprog_body): Set error_gnat_node to Empty.
+ (write_record_type_debug_info): Do not be unduly sparing with our bytes.
+ (unchecked_convert): For subtype to base type conversions, require that
+ the source be a subtype if it is an integer type.
+ (builtin_decls): New global, vector of available builtin functions.
+ (gnat_pushdecl): Add global builtin function declaration nodes to the
+ builtin_decls list.
+ (gnat_install_builtins): Adjust comments.
+ (builtin_function): Set DECL_BUILTIN_CLASS and DECL_FUNCTION_CODE before
+ calling gnat_pushdecl, so that it knows when it handed a builtin
+ function declaration node.
+ (builtin_decl_for): Search the builtin_decls list.
+
+2007-04-06 Eric Botcazou <botcazou@adacore.com>
+
+ * s-stchop-vxworks.adb:
+ (Stack_Check): Raise Storage_Error if the argument has wrapped around.
+
+2007-04-06 Robert Dewar <dewar@adacore.com>
+ Arnaud Charlet <charlet@adacore.com>
+
+ * a-diroro.ads: Inserted the pragma Unimplemented_Unit
+
+ * bindgen.adb (Gen_Output_File_Ada): Generate pragma Ada_95 at start
+ of files
+ Add mention of -Sev (set initialize_scalars option from environment
+ variable at run time) in gnatbind usage message.
+
+ * elists.ads, elists.adb: (Append_Unique_Elmt): New procedure
+
+ * fname-uf.ads: Minor comment fix
+
+ * osint.ads: Change pragma Elaborate to Elaborate_All
+
+ * par-load.adb: Add documentation.
+
+ * sem_cat.ads, sem_cat.adb: Minor code reorganization
+
+ * s-parint.ads (RCI_Locator) : Add 'Version' generic formal
+
+ * s-secsta.ads: Extra comments
+
+ * s-soflin.ads: Minor comment fixes
+
+ * s-stratt.ads (Block_Stream_Ops_OK): Removed.
+
+ * s-wchcon.ads: Minor comment addition
+
+ * treepr.adb: Minor change in message
+ (Print_Name,Print_Node): Make these debug printouts more robust: print
+ "no such..." instead of crashing on bad input.
+
2007-03-30 Rafael Avila de Espindola <espindola@google.com>
* trans.c (Attribute_to_gnu): Use get_signed_or_unsigned_type