From 4b437c6bb91baf785bd3f2c9db288eeb4aa38a49 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Fri, 6 Apr 2007 11:36:45 +0200 Subject: [PATCH] Resync From-SVN: r123607 --- gcc/ada/ChangeLog | 1776 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1776 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 60901bf..7a3a096 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,1779 @@ +2007-04-06 Javier Miranda + Matt Heaney + Robert Dewar + + 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 + + * 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 + + * 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 + + * 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 + Pat Rogers + Pascal Obry + + * 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 + Vincent Celier + + * 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 + + * 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 + + * system-aix.ads: Back out previous change. + (Functions_Return_By_DSP): Removed + +2007-04-06 Pascal Obry + + * 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 + + * 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 + Thomas Quinot + + * 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 + + * 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 + + * 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 + + * 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 + Javier Miranda + + * 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 + Ed Schonberg + Javier Miranda + Bob Duff + + * 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 + Bob Duff + + * 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 + Ed Schonberg + Gary Dismukes + + * 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 + Eric Botcazou + + * 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 + + * 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 + + * 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 + Eric Botcazou + + * decl.c (gnat_to_gnu_entity) : 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) : Do not make the underlying type of an + object with an address clause volatile. Re-enable original fix. + : Set TYPE_REF_CAN_ALIAS_ALL on the reference type + too. + (gnat_to_gnu_entity) : 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) : If the subtype has + discriminants, invoke again variable_size on its newly computed sizes. + +2007-04-06 Robert Dewar + Thomas Quinot + Ed Schonberg + Bob Duff + + * 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 + Robert Dewar + Bob Duff + Gary Dismukes + + * 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 + + * 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 + Thomas Quinot + + * 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 + Gary Dismukes + Ed Schonberg + + * 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 + Bob Duff + Cyrille Comar + + * 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 + Ed Schonberg + Gary Dismukes + + * 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 + + * 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 + Ed Schonberg + + * 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 + + * 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 + + * 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 + Bob Duff + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * g-md5.ads, g-md5.adb (Digest): Fix off-by-one error in padding + computation. + +2007-04-06 Jose Ruiz + Vincent Celier + + * 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 + + * gprep.adb (Process_Files.Process_One_File): Use full file name when + issuing pragma Source_Reference. + +2007-04-06 Emmanuel Briot + + * 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 + + * 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 + Robert Dewar + + * 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 + Arnaud Charlet + + * 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 + + * lib.ads, lib.adb (Tree_Read): Release the memory occupied by the + switches from previously loaded tree + +2007-04-06 Thomas Quinot + + * 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 + Javier Miranda + + * 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 + Arnaud Charlet + Vincent Celier + + * 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 + + * 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 + + * 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 + Javier Miranda + Bob Duff + + * 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 + Javier Miranda + Bob Duff + Vincent Celier + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + Gary Dismukes + + * 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 + Bob Duff + Gary Dismukes + + * 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 + Robert Dewar + + * 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 + Thomas Quinot + + * 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 + Robert Dewar + + * 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 + Javier Miranda + + * 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 + Javier Miranda + + * 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 + Robert Dewar + + * 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 + + * s-tpobop.adb (Exceptional_Complete_Entry_Body): Undefer abortion + before propagating exception. + +2007-04-06 Olivier Hainque + + * 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 + Eric Botcazou + + * trans.c (call_to_gnu) : Return an + expression with a COMPOUND_EXPR including the call instead of emitting + the call directly here. + (gnat_to_gnu) : 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. + : New case. Directly stabilize the call if an lvalue is not + requested; otherwise fail. + (addressable_p) : Do not test DECL_NONADDRESSABLE_P. + +2007-04-06 Thomas Quinot + + * 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 + + * 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 + Olivier Hainque + + * 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 + + * s-stchop-vxworks.adb: + (Stack_Check): Raise Storage_Error if the argument has wrapped around. + +2007-04-06 Robert Dewar + Arnaud Charlet + + * 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 * trans.c (Attribute_to_gnu): Use get_signed_or_unsigned_type -- 2.7.4