- 31 Oct, 2006 40 commits
-
-
exp_intr.adb (Expand_Dispatching_Constructor_Call): Add missing run-time membership test to ensure that the constructed object... 2006-10-31 Javier Miranda <miranda@adacore.com> * exp_intr.adb (Expand_Dispatching_Constructor_Call): Add missing run-time membership test to ensure that the constructed object implements the target abstract interface. From-SVN: r118267
Javier Miranda committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * exp_imgv.adb (Expand_Image_Attribute): For Wide_[Wide_]Character cases, pass the encoding method, since it is now required by the run time. * s-valwch.ads, s-valwch.adb (Value_Wide_Wide_Character): Avoid assumption that Str'First = 1. (Value_Wide_Character): Takes EM (encoding method) parameter and passes it on to the Value_Wide_Wide_Character call. (Value_Wide_Wide_Character): Takes EM (encoding method) parameter and properly handles a string of the form quote-encoded_wide_char-quote. * s-wchcnv.adb: Minor reformatting From-SVN: r118266
Robert Dewar committed -
exp_fixd.adb (Rounded_Result_Set): For multiplication and division of fixed-point operations in an integer context... 2006-10-31 Ed Schonberg <schonberg@adacore.com> * exp_fixd.adb (Rounded_Result_Set): For multiplication and division of fixed-point operations in an integer context, i.e. as operands of a conversion to an integer type, indicate that result must be rounded. From-SVN: r118265
Ed Schonberg committed -
exp_dist.adb (Get_Subprogram_Ids): This function will no more assign subprogram Ids, even if they are not yet assigned. 2006-10-31 Thomas Quinot <quinot@adacore.com> Pablo Oliveira <oliveira@adacore.com> * exp_dist.adb (Get_Subprogram_Ids): This function will no more assign subprogram Ids, even if they are not yet assigned. (Build_Subprogram_Id): It is now this function that will take care of calling Assign_Subprogram_Ids if necessary. (Add_Receiving_Stubs_To_Declarations): Checking the subprograms ids should be done only once they are assigned. (Build_From_Any_Function, case of tagged types): Add missing call to Allocate_Buffer. (Corresponding_Stub_Type): New subprogram. Returns the associated stub type for an RACW type. (Add_RACW_Features): When processing an RACW declaration for which the designated type is already frozen, enforce E.2.2(14) rules immediately. (GARLIC_Support.Build_Subprogram_Receiving_Stubs): Do not perform any special reordering of controlling formals. * exp_dist.ads (Corresponding_Stub_Type): New subprogram. Returns the associated stub type for an RACW type. From-SVN: r118264
Thomas Quinot committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * exp_dbug.ads, exp_dbug.adb (Get_External_Name): Add missing initialization of Homonym_Len. (Fully_Qualify_Name): Remove kludge to eliminate anonymous block names from fully qualified name. Fixes problem of duplicate external names differing only in the presence of such a block name. From-SVN: r118263
Robert Dewar committed -
exp_ch9.adb (Update_Prival_Types): Simplify code for entity references that are private components of the... 2006-10-31 Ed Schonberg <schonberg@adacore.com> * exp_ch9.adb (Update_Prival_Types): Simplify code for entity references that are private components of the protected object. (Build_Barrier_Function): Set flag Is_Entry_Barrier_Function (Update_Prival_Subtypes): Add explicit Process argument to Traverse_Proc instantiation to deal with warnings. (Initialize_Protection): If expression for priority is non-static, use System_Priority as its expected type, in case the expression has not been analyzed yet. From-SVN: r118261
Ed Schonberg committed -
2006-10-31 Robert Dewar <dewar@adacore.com> Ed Schonberg <schonberg@adacore.com> Bob Duff <duff@adacore.com> Gary Dismukes <dismukes@adacore.com> * exp_ch6.ads, exp_ch6.adb: Use new Validity_Check suppression capability. (Expand_Inlined_Call): Tagged types are by-reference types, and therefore should be replaced by a renaming declaration in the expanded body, as is done for limited types. (Expand_Call): If this is a call to a function with dispatching access result, propagate tag from context. (Freeze_Subprogram): Enable full ABI compatibility for interfacing with CPP by default. (Make_Build_In_Place_Call_In_Assignment): New procedure to do build-in-place when the right-hand side of an assignment is a build-in-place function call. (Make_Build_In_Place_Call_In_Allocator): Apply an unchecked conversion of the explicit dereference of the allocator to the result subtype of the build-in-place function. This is needed to satisfy type checking in cases where the caller's return object is created by an allocator for a class-wide access type and the type named in the allocator is a specific type. (Make_Build_In_Place_Call_In_Object_Declaration): Apply an unchecked conversion of the reference to the declared object to the result subtype of the build-in-place function. This is needed to satisfy type checking in cases where the declared object has a class-wide type. Also, in the class-wide case, change the type of the object entity to the specific result subtype of the function, to avoid passing a class-wide object without explicit initialization to the back end. (Register_Interface_DT_Entry): Moved outside the body of Freeze_Subprogram because this routine is now public; it is called from Check_Dispatching_Overriding to handle late overriding of abstract interface primitives. (Add_Access_Actual_To_Build_In_Place_Call): New utility procedure for adding an implicit access actual on a call to a build-in-place function. (Expand_Actuals): Test for an actual parameter that is a call to a build-in-place function and apply Make_Build_In_Place_Call_In_Anonymous_Context to the call. (Is_Build_In_Place_Function): New function to determine whether an entity is a function whose calls should be handled as build-in-place. (Is_Build_In_Place_Function_Call): New function to determine whether an expression is a function call that should handled as build-in-place. (Make_Build_In_Place_Call_In_Allocator): New procedure for handling calls to build-in-place functions as the initialization of an allocator. (Make_Build_In_Place_Call_In_Anonymous_Context): New procedure for handling calls to build-in-place functions in contexts that do not involve init of a separate object (for example, actuals of subprogram calls). (Make_Build_In_Place_Call_In_Object_Declaration): New procedure for handling calls to build-in-place functions as the initialization of an object declaration. (Detect_Infinite_Recursion): Add explicit parameter Process to instantiation of Traverse_Body to avoid unreferenced warning. (Check_Overriding_Inherited_Interfaces): Removed. (Register_Interface_DT_Entry): Code cleanup. (Register_Predefined_DT_Entry): Code cleanup. (Expand_Inlined_Call.Rewrite_Procedure_Call): Do not omit block around inlined statements if within a transient scope. (Expand_Inlined_Call.Process_Formals): When replacing occurrences of formal parameters with occurrences of actuals in inlined body, establish visibility on the proper view of the actual's subtype for the body's context. (Freeze_Subprogram): Do nothing if we are compiling under full ABI compatibility mode and we have an imported CPP subprogram because for now we assume that imported CPP primitives correspond with objects whose constructor is in the CPP side (and therefore we don't need to generate code to register them in the dispatch table). (Expand_Actuals): Introduce copy of actual, only if it might be a bit- aligned selected component. (Add_Call_By_Copy_Node): Add missing code to handle the case in which the actual of an in-mode parameter is a type conversion. (Expand_Actuals): If the call does not come from source and the actual is potentially misaligned, let gigi handle it rather than rejecting the (Expand_N_Subprogram_Body, Freeze_Subprogram): set subprograms returning Class Wide types as returning by reference independantly of their controlled status since with HIE runtimes class wide types are not potentially controlled anymore. From-SVN: r118260
Robert Dewar committed -
PR target/24071 * gthr-posix.h (__gthread_active_p): New implementation on Solaris. * gthr-posix95.h (__gthread_active_p): Likewise. From-SVN: r118259
Eric Botcazou committed -
2006-10-31 Bob Duff <duff@adacore.com> Robert Dewar <dewar@adacore.com> Gary Dismukes <dismukes@adacore.com> Ed Schonberg <schonberg@adacore.com> * exp_ch5.ads (Expand_N_Extended_Return_Statement): New procedure. * exp_ch5.adb (Expand_N_Loop_Statement): Do validity checks on range (Expand_N_Assignment_Statement): Call Make_Build_In_Place_Call_In_Assignment if the right-hand side is a build-in-place function call. Currently, this can happen only for assignments that come from aggregates. Add -gnatd.l --Use Ada 95 semantics for limited function returns, in order to alleviate the upward compatibility introduced by AI-318. (Expand_N_Extended_Return_Statement): Add support for handling the return object as a build-in-place result. (Expand_Non_Function_Return): Implement simple return statements nested within an extended return. (Enable_New_Return_Processing): Turn on the new processing of return statements. (Expand_Non_Function_Return): For a return within an extended return, don't raise Program_Error, because Sem_Ch6 now gives a warning. (Expand_N_Extended_Return_Statement): Implement AI-318 (Expand_Simple_Function_Return): Ditto. (Expand_N_If_Statement): Handle new -gnatwt warning (Expand_N_Case_Statement): Handle new -gnatwt warning (Expand_N_Assignment): Handle assignment to the Priority attribute of a protected object. (Expand_N_Assignment_Statement): Implement -gnatVe/E to control validity checking of assignments to elementary record components. (Expand_N_Return_Statement): return Class Wide types on the secondary stack independantly of their controlled status since with HIE runtimes, class wide types are not potentially controlled anymore. * expander.adb (Expand): Add case for new N_Extended_Return_Statement node kind. * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Avoid Expand_Cleanup_Actions in case of N_Extended_Return_Statement, because it expects a block, procedure, or task. The return statement will get turned into a block, and Expand_Cleanup_Actions will happen then. From-SVN: r118258
Bob Duff committed -
2006-10-31 Javier Miranda <miranda@adacore.com> Ed Schonberg <schonberg@adacore.com> Bob Duff <duff@adacore.com> Gary Dismukes <dismukes@adacore.com> Robert Dewar <dewar@adacore.com> * exp_ch4.adb (Expand_N_Type_Conversion): Handle missing interface type conversion. (Expand_N_In): Do validity checks on range (Expand_Selected_Component): Use updated for of Denotes_Discriminant. (Expand_N_Allocator): For "new T", if the object is constrained by discriminant defaults, allocate the right amount of memory, rather than the maximum for type T. (Expand_Allocator_Expression): Suppress the call to Remove_Side_Effects when the allocator is initialized by a build-in-place call, since the allocator is already rewritten as a reference to the function result, and this prevents an unwanted duplication of the function call. Add with and use of Exp_Ch6. (Expand_Allocator_Expresssion): Check for an allocator whose expression is a call to build-in-place function and apply Make_Build_In_Place_Call_In_Allocator to the call (for both tagged and untagged designated types). (Expand_N_Unchecked_Type_Conversion): Do not do integer literal optimization if source or target is biased. (Expand_N_Allocator): Add comments for case of an allocator within a function that returns an anonymous access type designating tasks. (Expand_N_Allocator): apply discriminant checks for access discriminants of anonymous access types (AI-402, AI-416) From-SVN: r118257
Javier Miranda committed -
exp_ch3.ads, [...] (Expand_N_Object_Declaration): Do not register in the final list objects containing class-wide interfaces... 2006-10-31 Javier Miranda <miranda@adacore.com> Robert Dewar <dewar@adacore.com> Ed Schonberg <schonberg@adacore.com> Gary Dismukes <dismukes@adacore.com> * exp_ch3.ads, exp_ch3.adb (Expand_N_Object_Declaration): Do not register in the final list objects containing class-wide interfaces; otherwise we incorrectly register the tag of the interface in the final list. (Make_Controlling_Function_Wrappers): Add missing barrier to do not generate the wrapper if the parent primitive is abstract. This is required to report the correct error message. (Expand_N_Subtype_Indication): Do validity checks on range (Clean_Task_Names): If an initialization procedure includes a call to initialize a task (sub)component, indicate that the procedure will use the secondary stack. (Build_Init_Procedure, Init_Secondary_Tags): Enable full ABI compatibility for interfacing with CPP by default. (Expand_N_Object_Declaration): Only build an Adjust call when the object's type is a nonlimited controlled type. * exp_ch3.adb: Add with and use of Exp_Ch6. (Expand_N_Object_Declaration): Check for object initialization that is a call to build-in-place function and apply Make_Build_In_Place_Call_In_ Object_Declaration to the call. (Freeze_Type): When the designated type of an RACW was not frozen at the point where the RACW was declared, validate the primitive operations with respect to E.2.2(14) when it finally is frozen. (Build_Initialization_Call,Expand_Record_Controller): Rename Is_Return_By_Reference_Type to be Is_Inherently_Limited_Type, because return-by-reference has no meaning in Ada 2005. (Init_Secondary_Tags): Add missing call to Set_Offset_To_Top to register tag of the immediate ancestor interfaces in the run-time structure. (Init_Secondary_Tags): Moved to the specification to allow the initialization of extension aggregates with abstract interfaces. (Build_Master_Renaming): Make public, for use by function declarations whose return type is an anonymous access type. (Freeze_Record_Type): Replace call to Insert_List_Before by call to Insert_List_Before_And_Analyze after the generation of the specs associated with null procedures. (Expand_Tagged_Root): Update documentation in its specification. (Init_Secondary_Tags): Update documentation. (Build_Init_Procedure): If we are compiling under CPP full ABI compa- tibility mode and the immediate ancestor is a CPP_Pragma tagged type then generate code to inherit the contents of the dispatch table directly from the ancestor. (Expand_Record_Controller): Insert controller component after tags of implemented interfaces. (Freeze_Record_Type): Call new procedure Make_Null_Procedure_Specs to create null procedure overridings when null procedures are inherited from interfaces. (Make_Null_Procedure_Specs): New procedure to generate null procedure declarations for overriding null primitives inherited from interfaces. (Is_Null_Interface_Procedure): New function in Make_Null_Procedure_Specs. (Make_Predefined_Primitive_Specs/Predefined_Primitive_Bodies): If the immediate ancestor of a tagged type is an abstract interface type we must generate the specification of the predefined primitives associated with controlled types (because the dispatch table of the ancestor is null and hence these entries cannot be inherited). This is required to elaborate well the dispatch table. From-SVN: r118256
Javier Miranda committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * exp_ch2.adb: Change Is_Lvalue to May_Be_Lvalue (Expand_Entity_Reference): Correct error of not handling subprogram formals in current_value processing. From-SVN: r118255
Robert Dewar committed -
2006-10-31 Ed Schonberg <schonberg@adacore.com> Thomas Quinot <quinot@adacore.com> Javier Miranda <miranda@adacore.com> Robert Dewar <dewar@adacore.com> * exp_attr.adb: (Expand_Access_To_Protected_Op): If the context indicates that an access to a local operation may be transfered outside of the object, create an access to the wrapper operation that must be used in an external call. (Expand_N_Attribute_Reference, case Attribute_Valid): For the AAMP target, pass the Valid attribute applied to a floating-point prefix on to the back end without expansion. (Storage_Size): Use the new run-time function Storage_Size to retrieve the allocated storage when it is specified by a per-object expression. (Expand_N_Attribute_Reference): Add case for Attribute_Stub_Type. Nothing to do here, the attribute has been rewritten during semantic analysis. (Expand_Attribute_Reference): Handle expansion of the new Priority attribute (Find_Fat_Info): Handle case of universal real (Expand_Access_To_Protected_Op): Fix use of access to protected subprogram from inside the body of a protected entry. (Expand_Access_To_Protected_Op): Common procedure for the expansion of 'Access and 'Unrestricted_Access, to transform the attribute reference into a fat pointer. (Is_Constrained_Aliased_View): New predicate to help determine whether a subcomponent's enclosing variable is aliased with a constrained subtype. (Expand_N_Attribute_Reference, case Attribute_Constrained): For Ada_05, test Is_Constrained_Aliased_View rather than Is_Aliased_View, because an aliased prefix must be known to be constrained in order to use True for the attribute value, and now it's possible for some aliased views to be unconstrained. From-SVN: r118254
Ed Schonberg committed -
2006-10-31 Bob Duff <duff@adacore.com> Ed Schonberg <schonberg@adacore.com> * exp_aggr.adb (Build_Record_Aggr_Code): For extension aggregates, if the parent part is a build-in-place function call, generate assignments. (Expand_Record_Aggregate): Call Convert_To_Assignments if any components are build-in-place function calls. (Replace_Self_Reference): New subsidiary of Make_OK_Assignment_Statement, to replace an access attribute that is a self-reference into an access to the appropriate component of the target object. Generalizes previous mechanism to handle self-references nested at any level. (Is_Self_Referential_Init): Remove, not needed. (Is_Self_Referential_Init): New predicate to simplify handling of self referential components in record aggregates. (Has_Default_Init_Comps, Make_OK_Assignment_Statement): Add guard to check for presence of entity before checking for self-reference. (Has_Default_Init_Comps): Return True if a component association is a self-reference to the enclosing type, which can only come from a default initialization. (Make_OK_Assignment_Statement): If the expression is of the form Typ'Acc, where Acc is an access attribute, the expression comes from a default initialized self-referential component. (Build_Record_Aggr_Code): If the type of the aggregate is a tagged type that has been derived from several abstract interfaces we must also initialize the tags of the secondary dispatch tables. From-SVN: r118253
Bob Duff committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * erroutc.ads, erroutc.adb (Set_Specific_Warning_On): New procedure (Set_Specific_Warning_Off): New procedure (Warning_Specifically_Suppressed): New function (Validate_Specific_Warnings): New procedure (Output_Msg_Text): Complete rewrite to support -gnatjnn * err_vars.ads: Implement insertion character ~ (insert string) From-SVN: r118252
Robert Dewar committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * errout.ads, errout.adb (Finalize): Implement switch -gnatd.m Avoid abbreviation Creat (Finalize): List all sources in extended mail source if -gnatl switch is active. Suppress copyright notice to file in -gnatl=f mode if -gnatd7 set (Finalize): Implement new -gnatl=xxx switch to output listing to file (Set_Specific_Warning_On): New procedure (Set_Specific_Warning_Off): New procedure Add implementation of new insertion \\ (Error_Msg_Internal): Add handling for Error_Msg_Line_Length (Unwind_Internal_Type): Improve report on anonymous access_to_subprogram types. (Error_Msg_Internal): Make sure that we set Last_Killed to True when a message from another package is suppressed. Implement insertion character ~ (insert string) (First_Node): Minor adjustments to get better placement. * frontend.adb: Implement new -gnatl=xxx switch to output listing to file * gnat1drv.adb: Implement new -gnatl=xxx switch to output listing to file * opt.ads: (Warn_On_Questionable_Missing_Paren): New switch (Commands_To_Stdout): New flag Implement new -gnatl=xxx switch to output listing to file New switch Dump_Source_Text (Warn_On_Deleted_Code): New warning flag for -gnatwt Define Error_Msg_Line_Length (Warn_On_Assumed_Low_Bound): New switch * osint.ads, osint.adb (Normalize_Directory_Name): Fix bug. Implement new -gnatl=xxx switch to output listing to file (Concat): Removed, replaced by real concatenation Make use of concatenation now allowed in compiler (Executable_Prefix.Get_Install_Dir): First get the full path, so that we find the 'lib' or 'bin' directory even when the tool has been invoked with a relative path. (Executable_Name): New function taking string parameters. * osint-c.ads, osint-c.adb: Implement new -gnatl=xxx switch to output listing to file * sinput-d.adb: Change name Creat_Debug_File to Create_Debug_File * switch-c.adb: Implement new -gnatl=xxx switch to output listing to file Recognize new -gnatL switch (no longer keep in old warning about old style usage) Use concatenation to simplify code Recognize -gnatjnn switch (Scan_Front_End_Switches): Clean up handling of -gnatW (Scan_Front_End_Switches): Include Warn_On_Assumed_Low_Bound for -gnatg From-SVN: r118251
Robert Dewar committed -
2006-10-31 Robert Dewar <dewar@adacore.com> Ed Schonberg <schonberg@adacore.com> Bob Duff <duff@adacore.com> * einfo.ads, einfo.adb (Obsolescent_Warning): Now defined on all entities. Move other fields around to make this possible (Is_Derived_Type): Add missing call to Is_Type. (Extra_Formals): New function for subprograms, entries, subprogram types. (Set_Extra_Formals): New procedure for subprograms, entries, subp types. (First_Formal_With_Extras): New function for subprogs, entries, subp types. (Write_Field28_Name): New procedure for node display of "Extra_Formals". Add node information for E_Return_Statement. (Elaborate_Body_Desirable): New flag (Is_Return_By_Reference_Type): Rename Is_Return_By_Reference_Type to be Is_Inherently_Limited_Type, because return-by-reference has no meaning in Ada 2005. (E_Return_Statement): New entity kind. (Return_Applies_To): Field of E_Return_Statement. (Is_Return_Object): New flag in object entities. (Is_Dynamic_Scope): Make it True for E_Return_Statement. (Must_Have_Preelab_Init): New flag (Known_To_Have_Preelab_Init): New flag (Is_Formal_Object): Move from Sem_Ch8 body to Einfo (Is_Visible_Formal): New flag on entities in formal packages. (Low_Bound_Known): New flag (Non_Limited_View, Set_Non_Limited_View): Add membership test agains Incomplete_Kind. (Write_Field17_Name): Correct spelling of Non_Limited_View. Add name output when Id is an incomplete subtype. From-SVN: r118250
Robert Dewar committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * clean.adb, gnatname.adb, gnatsym.adb, prep.adb, prep.ads, prepcomp.adb, prj.ads, prj-strt.adb, sem_maps.ads, vms_conv.adb: Fix bad table increment values (much too small) * table.adb (Realloc): Make sure we get at least some new elements Defends against silly small values for table increment From-SVN: r118249
Robert Dewar committed -
2006-10-31 Robert Dewar <dewar@adacore.com> Ed Schonberg <schonberg@adacore.com> * treepr.adb: Use new subtype N_Membership_Test * checks.ads, checks.adb: Add definition for Validity_Check (Range_Or_Validity_Checks_Suppressed): New function (Ensure_Valid): Test Validity_Check suppressed (Insert_Valid_Check): Test Validity_Check suppressed (Insert_Valid_Check): Preserve Do_Range_Check flag (Validity_Check_Range): New procedure (Expr_Known_Valid): Result of membership test is always valid (Selected_Range_Checks): Range checks cannot be applied to discriminants by themselves. Disabling those checks must also be done for task types, where discriminants may be used for the bounds of entry families. (Apply_Address_Clause_Check): Remove side-effects if address expression is non-static and is not the name of a declared constant. (Null_Exclusion_Static_Checks): Extend to handle Function_Specification. Code cleanup and new error messages. (Enable_Range_Check): Test for some cases of suppressed checks (Generate_Index_Checks): Suppress index checks if index checks are suppressed for array object or array type. (Apply_Selected_Length_Checks): Give warning for compile-time detected length check failure, even if checks are off. (Ensure_Valid): Do not generate a check on an indexed component whose prefix is a packed boolean array. * checks.adb: (Alignment_Checks_Suppressed): New function (Apply_Address_Clause_Check): New procedure, this is a completely rewritten replacement for Apply_Alignment_Check (Get_E_Length/Get_E_First_Or_Last): Add missing barrier to ensure that we request a discriminal value only in case of discriminants. (Apply_Discriminant_Check): For Ada_05, only call Get_Actual_Subtype for assignments where the target subtype is unconstrained and the target object is a parameter or dereference (other aliased cases are known to be unconstrained). From-SVN: r118248
Robert Dewar committed -
2006-10-31 Jose Ruiz <ruiz@adacore.com> * cal.c: Use the header sys/time.h for VxWorks 6.2 or greater when using RTPs. * mkdir.c: Use a different version of mkdir for VxWorks 6.2 or greater when using RTPs. From-SVN: r118247
Jose Ruiz committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * bindusg.ads, bindusg.adb: Change to package and rename procedure as Display, which now ensures that it only outputs usage information once. From-SVN: r118246
Robert Dewar committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * binde.adb (Better_Choice, Worse_Choice): Implement new preferences. From-SVN: r118245
Robert Dewar committed -
2006-10-31 Javier Miranda <miranda@adacore.com> * a-tags.ads, a-tags.adb: (Predefined_DT): New function that improves readability of the code. (Get_Predefined_Prim_Op_Address, Set_Predefined_Prim_Op_Address, Inherit_DT): Use the new function Predefined_DT to improve code readability. (Register_Interface_Tag): Update assertion. (Set_Interface_Table): Update assertion. (Interface_Ancestor_Tags): New subprogram required to implement AI-405: determining progenitor interfaces in Tags. (Inherit_CPP_DT): New subprogram. * exp_disp.adb (Expand_Interface_Thunk): Suppress checks during the analysis of the thunk code. (Expand_Interface_Conversion): Handle run-time conversion of access to class wide types. (Expand_Dispatching_Call): When generating the profile for the subprogram itype for a dispatching operation, properly terminate the formal parameters chaind list (set the Next_Entity of the last formal to Empty). (Collect_All_Interfaces): Removed. This routine has been moved to sem_util and renamed as Collect_All_Abstract_Interfaces. (Set_All_DT_Position): Hidden entities associated with abstract interface primitives are not taken into account in the check for 3.9.3(10); this check is done with the aliased entity. (Make_DT, Set_All_DT_Position): Enable full ABI compatibility for interfacing with CPP by default. (Expand_Interface_Conversion): Add missing support for static conversion from an interface to a tagged type. (Collect_All_Interfaces): Add new out formal containing the list of abstract interface types to cleanup the subprogram Make_DT. (Make_DT): Update the code to generate the table of interfaces in case of abstract interface types. (Is_Predefined_Dispatching_Alias): New function that returns true if a primitive is not a predefined dispatching primitive but it is an alias of a predefined dispatching primitive. (Make_DT): If the ancestor of the type is a CPP_Class and we are compiling under full ABI compatibility mode we avoid the generation of calls to run-time services that fill the dispatch tables because under this mode we currently inherit the dispatch tables in the IP subprogram. (Write_DT): Emit an "is null" indication for a null procedure primitive. (Expand_Interface_Conversion): Use an address as the type of the formal of the internally built function that handles the case in which the target type is an access type. From-SVN: r118244
Javier Miranda committed -
2006-10-31 Robert Dewar <dewar@adacore.com> Jose Ruiz <ruiz@adacore.com> * a-dispat.ads, a-diroro.ads, a-diroro.adb: New files. * ali.adb (Get_Name): Properly handle scanning of wide character names encoded with brackets notation. (Known_ALI_Lines): Add S lines to this list. (Scan_ALI): Acquire S (priority specific dispatching) lines. New flag Elaborate_All_Desirable in unit table * ali.ads (Priority_Specific_Dispatching): Add this range of identifiers to be used for Priority_Specific_Dispatching table entries. (ALIs_Record): Add First_Specific_Dispatching and Last_Specific_Dispatching that point to the first and last entries respectively in the priority specific dispatching table for this unit. (Specific_Dispatching): Add this table for storing each S (priority specific dispatching) line encountered in the input ALI file. New flag Elaborate_All_Desirable in unit table * bcheck.adb: (Check_Configuration_Consistency): Add call to Check_Consistent_Dispatching_Policy. (Check_Consistent_Dispatching_Policy): Add this procedure in charge of verifying that the use of Priority_Specific_Dispatching, Task_Dispatching_Policy, and Locking_Policy is consistent across the partition. * bindgen.adb: (Public_Version_Warning): function removed. (Set_PSD_Pragma_Table): Add this procedure in charge of getting the required information from ALI files in order to initialize the table containing the specific dispatching policy. (Gen_Adainit_Ada): Generate the variables required for priority specific dispatching entries (__gl_priority_specific_dispatching and __gl_num_specific_dispatching). (Gen_Adainit_C): Generate the variables required for priority specific dispatching entries (__gl_priority_specific_dispatching and __gl_num_specific_dispatching). (Gen_Output_File): Acquire settings for Priority_Specific_Dispatching pragma entries. (Gen_Restrictions_String_1, Gen_Restrictions_String_2): Removed. (Gen_Restrictions_Ada, Gen_Restrictions_C, Set_Boolean): New procedures. (Tab_To): Removed. (Gen_Output_File_Ada/_C): Set directly __gl_xxx variables instead of a call to gnat_set_globals. Generate a string containing settings from Priority_Specific_Dispatching pragma entries. (Gen_Object_Files_Options): Do not include the runtime libraries when pragma No_Run_Time is specified. * init.c (__gnat_install_handler, case FreeBSD): Use SA_SIGINFO, for consistency with s-intman-posix.adb. (__gnat_error_handler, case FreeBSD): Account for the fact that the handler is installed with SA_SIGINFO. (__gnat_adjust_context_for_raise, FreeBSD case): New function for FreeBSD ZCX support, copied from Linux version. Add MaRTE-specific definitions for the linux target. Redefine sigaction, sigfillset, and sigemptyset so the routines defined by MaRTE. (__gl_priority_specific_dispatching): Add this variable that stores the string containing priority specific dispatching policies in the partition. (__gl_num_specific_dispatching): Add this variable that indicates the highest priority for which a priority specific dispatching pragma applies. (__gnat_get_specific_dispatching): Add this routine that returns the priority specific dispatching policy, as set by a Priority_Specific_Dispatching pragma appearing anywhere in the current partition. The input argument is the priority number, and the result is the upper case first character of the policy name. (__gnat_set_globals): Now a dummy function. (__gnat_handle_vms_condition): Feed adjust_context_for_raise with mechargs instead of sigargs, as the latter can be retrieved from the former and sigargs is not what we want on ia64. (__gnat_adjust_context_for_raise, alpha-vms): Fetch sigargs from the mechargs argument. (__gnat_adjust_context_for_raise, ia64-vms): New function. (tasking_error): Remove unused symbol. (_abort_signal): Move this symbol to the IRIX specific part since this is the only target that uses this definition. (Check_Abort_Status): Move this symbol to the IRIX specific part since this is the only target that uses this definition. (Lock_Task): Remove unused symbol. (Unlock_Task): Remove unused symbol. * lib-writ.adb (Write_ALI): Output new S lines for Priority_Specific_Dispatching pragmas. Implement new flag BD for elaborate body desirable * lib-writ.ads: Document S lines for Priority Specific Dispatching. (Specific_Dispatching): Add this table for storing the entries corresponding to Priority_Specific_Dispatching pragmas. Document new BD flag for elaborate body desirable * par-prag.adb (Prag): Add Priority_Specific_Dispatching to the list of known pragmas. From-SVN: r118243
Robert Dewar committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * lib.adb, lib.ads: (In_Predefined_Unit): New functions * a-finali.ads, a-ngcoty.ads, a-strbou.ads, a-stream.ads, a-strmap.ads, a-strunb.ads, a-stwibo.ads, a-stwima.ads, a-stwiun.ads, a-taside.ads, a-coorse.ads, a-convec.ads, a-coinve.ads, a-cohama.ads, a-ciorse.ads, a-cihama.ads, a-cihase.ads, a-cohase.ads, a-ciorma.ads, a-coorma.ads, a-ciormu.ads, a-coormu.ads, a-stzbou.ads, a-stzmap.ads, a-stzunb.ads, a-except-2005.ads: Add pragma Preelaborable_Warning From-SVN: r118242
Robert Dewar committed -
2006-10-31 Bob Duff <duff@adacore.com> * a-filico.adb (Finalize(List_Controller)): Mark the finalization list as finalization-started, so we can raise Program_Error on 'new'. * s-finimp.adb: Raise Program_Error on 'new' if finalization of the collection has already started. * s-finimp.ads (Collection_Finalization_Started): Added new special flag value for indicating that a collection's finalization has started. * s-tassta.adb (Create_Task): Raise Program_Error on an attempt to create a task whose master has already waited for dependent tasks. From-SVN: r118241
Bob Duff committed -
adaint.c (__gnat_get_libraries_from_registry): Call explicitly the ASCII version of the registry API. 2006-10-31 Pascal Obry <obry@adacore.com> Eric Botcazou <ebotcazou@adacore.com> Vincent Celier <celier@adacore.com> * adaint.c (__gnat_get_libraries_from_registry): Call explicitly the ASCII version of the registry API. This is needed as the GNAT runtime is now UNICODE by default. Include version.h. (get_gcc_version): Do not hardcode the return value. (__gnat_file_time_name): On Windows properly set the default returned value to -1 which corresponds to Invalid_Time. (__gnat_fopen): New routine. A simple wrapper on all plateforms except on Windows where it does conversion for unicode support. (__gnat_freopen): Idem. (__gnat_locate_exec_on_path): If environment variable PATH does not exist, return a NULL pointer * adaint.h: (__gnat_fopen): Declare. (__gnat_freopen): Likewise. * mingw32.h (_tfreopen): Define this macro here for older MingW version. Activate the unicode support on platforms using a MingW runtime version 3.9 or newer. * s-crtl.ads (fopen): Is now an import to the wrapper __gnat_freopen. This is needed for proper unicode support on Windows. (freopen): Idem. From-SVN: r118240
Pascal Obry committed -
2006-10-31 Jose Ruiz <ruiz@adacore.com> * s-osinte-vxworks.ads, s-osinte-vxworks.adb: (getpid): New body for this function that uses the underlying taskIdSelf function for VxWorks 5 and VxWorks 6 in kernel mode. (unsigned_int): New type, modular to allow logical bit operations. (taskOptionsGet): New imported function. * s-taspri-vxworks.ads (Private_Data): Change the type for the LWP field to be compliant with the type used by the corresponding operating system primitive. From-SVN: r118239
Jose Ruiz committed -
2006-10-31 Eric Botcazou <ebotcazou@adacore.com> * s-taprop-solaris.adb: (Time_Slice_Val): Change type to Integer. (Initialize): Add type conversions required by above change. From-SVN: r118238
Eric Botcazou committed -
2006-10-31 Vincent Celier <celier@adacore.com> Eric Botcazou <ebotcazou@adacore.com> * mlib-tgt-lynxos.adb, mlib-tgt-mingw.adb, mlib-tgt-tru64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb, mlib-tgt-hpux.adb, mlib-tgt-linux.adb, mlib-tgt-solaris.adb: Use Append_To, instead of Ext_To, when building the library file name * mlib-tgt-vxworks.adb: ditto. (Get_Target_Suffix): Add support for x86 targets. * mlib-fil.ads, mlib-fil.adb: (Append_To): New function * mlib-tgt-darwin.adb: Use Append_To, instead of Ext_To, when building the library file name (Flat_Namespace): New global variable. (No_Shared_Libgcc_Switch): Rename to No_Shared_Libgcc_Options. (Shared_Libgcc_Switch): Rename to With_Shared_Libgcc_Options. (Link_Shared_Libgcc): Delete. (Build_Dynamic_Library): Adjust for above changes. Use Opt package. (Build_Dynamic_Library): Pass -shared-libgcc if GCC 4 or later. From-SVN: r118237
Vincent Celier committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * system-vms_64.ads, system-darwin-ppc.ads, system-vxworks-x86.ads, system-linux-hppa.ads, system-hpux-ia64.ads, system-lynxos-ppc.ads, system-lynxos-x86.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-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.ads: Add pragma Warnings(Off, Default_Bit_Order) to kill constant condition warnings for references to this switch. From-SVN: r118236
Robert Dewar committed -
s-osinte-posix.adb, [...] (To_Target_Priority): New function maps from System.Any_Priority to a POSIX priority on the target. 2006-10-31 Arnaud Charlet <charlet@adacore.com> Jose Ruiz <ruiz@adacore.com> * s-osinte-posix.adb, s-osinte-linux.ads, s-osinte-freebsd.adb, s-osinte-freebsd.ads, s-osinte-solaris-posix.ads, s-osinte-hpux.ads, s-osinte-darwin.adb, s-osinte-darwin.ads, s-osinte-lynxos-3.ads, s-osinte-lynxos-3.adb (To_Target_Priority): New function maps from System.Any_Priority to a POSIX priority on the target. * system-linux-ia64.ads: Extend range of Priority types on Linux to use the whole range made available by the system. * s-osinte-aix.adb, s-osinte-aix.ads (To_Target_Priority): New function maps from System.Any_Priority to a POSIX priority on the target. (PTHREAD_PRIO_PROTECT): Set real value. (PTHREAD_PRIO_INHERIT): Now a function. (SIGCPUFAIL): New signal. (Reserved): Add SIGALRM1, SIGWAITING, SIGCPUFAIL, since these signals are documented as reserved by the OS. * system-aix.ads: Use the full range of priorities provided by the system on AIX. * s-taprop-posix.adb: Call new function To_Target_Priority. (Set_Priority): Take into account Task_Dispatching_Policy and Priority_Specific_Dispatching pragmas when determining if Round Robin must be used for scheduling the task. * system-linux-x86_64.ads, system-linux-x86.ads, system-linux-ppc.ads: Extend range of Priority types on Linux to use the whole range made available by the system. * s-taprop-vms.adb, s-taprop-mingw.adb, s-taprop-irix.adb, s-taprop-tru64.adb, s-taprop-linux.adb, s-taprop-hpux-dce.adb, s-taprop-lynxos.adb (Finalize_TCB): invalidate the stack-check cache when deallocating the TCB in order to avoid potential references to deallocated data. (Set_Priority): Take into account Task_Dispatching_Policy and Priority_Specific_Dispatching pragmas when determining if Round Robin or FIFO within priorities must be used for scheduling the task. * s-taprop-vxworks.adb (Enter_Task): Store the user-level task id in the Thread field (to be used internally by the run-time system) and the kernel-level task id in the LWP field (to be used by the debugger). (Create_Task): Reorganize to unify the calls to taskSpawn into a single instance, and propagate the current task options to the spawned task. (Set_Priority): Take into account Priority_Specific_Dispatching pragmas. (Initialize): Set Round Robin dispatching when the corresponding pragma is in effect. From-SVN: r118235
Arnaud Charlet committed -
2006-10-31 Hristian Kirtchev <kirtchev@adacore.com> Jose Ruiz <ruiz@adacore.com> * a-calend-vms.adb (Leap_Sec_Ops): Temp body for package in private part of Ada.Calendar: all subprogram raise Unimplemented. (Split_W_Offset): Temp function body, raising Unimplemented * a-calend.ads, a-calend-vms.ads: Add imported variable Invalid_TZ_Offset used to designate targets unable to support time zones. (Unimplemented): Temporary function raised by the body of new subprograms below. (Leap_Sec_Ops): New package in the private part of Ada.Calendar. This unit provides handling of leap seconds and is used by the new Ada 2005 packages Ada.Calendar.Arithmetic and Ada.Calendar.Formatting. (Split_W_Offset): Identical spec to that of Ada.Calendar.Split. This version returns an extra value which is the offset to UTC. * a-calend.adb (Split_W_Offset): Add call to localtime_tzoff. (Leap_Sec_Ops): New body for package in private part of Ada.Calendar. (Split_W_Offset): New function body. (Time_Of): When a date is close to UNIX epoch, compute the time for that date plus one day (that amount is later substracted after executing mktime) so there are no problems with time zone adjustments. * a-calend-mingw.adb: Remove Windows specific version no longer needed. * a-calari.ads, a-calari.adb, a-calfor.ads, a-calfor.adb, a-catizo.ads, a-catizo.adb: New files. * impunit.adb: Add new Ada 2005 entries * sysdep.c: Add external variable __gnat_invalid_tz_offset. Rename all occurences of "__gnat_localtime_r" to "__gnat_localtime_tzoff". (__gnat_localtime_tzoff for Windows): Add logic to retrieve the time zone data and calculate the GMT offset. (__gnat_localtime_tzoff for Darwin, Free BSD, Linux, Lynx and Tru64): Use the field "tm_gmtoff" to extract the GMT offset. (__gnat_localtime_tzoff for AIX, HPUX, SGI Irix and Sun Solaris): Use the external variable "timezone" to calculate the GMT offset. From-SVN: r118234
Hristian Kirtchev committed -
2006-10-31 Thomas Quinot <quinot@adacore.com> * g-socthi-vxworks.adb (C_Gethostbyname): Fix wrong test for returned error status. From-SVN: r118233
Thomas Quinot committed -
2006-10-31 Robert Dewar <dewar@adacore.com> Bob Duff <duff@adacore.com> Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Unary_Op): Add warning for use of unary minus with multiplying operator. (Expected_Type_Is_Any_Real): New function to determine from the Parent pointer whether the context expects "any real type". (Resolve_Arithmetic_Op): Do not give an error on calls to the universal_fixed "*" and "/" operators when they are used in a context that expects any real type. Also set the type of the node to Universal_Real in this case, because downstream processing requires it (mainly static expression evaluation). Reword some continuation messages Add some \\ sequences to continuation messages (Resolve_Call): Refine infinite recursion case. The test has been sharpened to eliminate some false positives. Check for Current_Task usage now includes entry barrier, and is now a warning, not an error. (Resolve): If the call is ambiguous, indicate whether an interpretation is an inherited operation. (Check_Aggr): When resolving aggregates, skip associations with a box, which are priori correct, and will be replaced by an actual default expression in the course of expansion. (Resolve_Type_Conversion): Add missing support for conversion from a class-wide interface to a tagged type. Minor code cleanup. (Valid_Tagged_Converion): Add support for abstact interface type conversions. (Resolve_Selected_Component): Call Generate_Reference here rather than during analysis, and use May_Be_Lvalue to distinguish read/write. (Valid_Array_Conversion): New procedure, abstracted from Valid_Conversion, to incorporate accessibility checks for arrays of anonymous access types. (Valid_Conversion): For a conversion to a numeric type occurring in an instance or inlined body, no need to check that the operand type is numeric, since this has been checked during analysis of the template. Remove legacy test for scope name Unchecked_Conversion. * sem_res.ads: Minor reformatting * a-except.adb, a-except-2005.adb: Turn off subprogram ordering (PE_Current_Task_In_Entry_Body): New exception code (SE_Restriction_Violation): Removed, not used * a-except.ads: Update comments. * types.h, types.ads: Add definition for Validity_Check (PE_Current_Task_In_Entry_Body): New exception code (SE_Restriction_Violation): Removed, not used From-SVN: r118232
Robert Dewar committed -
2006-10-31 Robert Dewar <dewar@adacore.com> * a-taster.adb, s-traent-vms.adb, a-elchha.ads, a-elchha.adb, a-exctra.adb, ali-util.adb, exp_disp.ads, s-stalib.ads, s-traent.adb, s-addope.ads, s-addope.adb, a-rbtgso.adb, a-crbltr.ads, a-coprnu.adb, a-cgcaso.adb, a-cgarso.adb, a-cgaaso.adb, a-coormu.adb, a-ciormu.adb, a-rbtgso.ads, a-stunha.adb, a-stunha.adb, a-ciorma.adb, a-coorma.adb, a-secain.adb, a-slcain.adb, a-shcain.adb, a-stwiha.adb, a-stwiha.adb, a-strhas.adb, a-strhas.adb, a-stzhas.adb, a-stzhas.adb, a-szuzha.adb, a-chacon.adb, a-chacon.adb, a-chacon.ads, a-stboha.adb, a-swbwha.adb, a-szbzha.adb: Minor reformatting. Fix header. * a-numaux-x86.adb: Add parentheses for use of unary minus * a-ngcefu.adb: Supply missing parentheses for unary minus * a-ngcoty.adb: Add parens for use of unary minus * a-ngelfu.adb: Add missing parens for unary minus * a-tifiio.adb: Add parentheses for uses of unary minus From-SVN: r118231
Robert Dewar committed -
From-SVN: r118230
Stephen M. Webb committed -
2006-10-31 Richard Guenther <rguenther@suse.de> * config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2, acossf2, acosxf2, log1psf2, log1pdf2, log1pxf2, ilogbsi2, expsf2, expdf2, expxf2, exp10sf2, exp10df2, exp10xf2, exp2sf2, exp2df2, exp2xf2, expm1df2, expm1sf2, expm1xf2, ldexpdf3, ldexpsf3, ldexpxf3, rintxf2, rintdf2, rintsf2, lround<mode>di2, lround<mode>si2, floorxf2, floordf2, floorsf2, lfloor<mode>di2, lfloor<mode>si2, ceilxf2, ceildf2, ceilsf2, btruncxf2, btruncdf2, btruncsf2): Conditionalize expansion on !optimize_size. From-SVN: r118221
Richard Guenther committed -
2006-10-31 Paul Thomas <pault@gcc.gnu.org> PR fortran/29387 * trans-intrinsic.c (gfc_conv_intrinsic_len): Rearrange to have a specific case for EXPR_VARIABLE and, in default, build an ss to call gfc_conv_expr_descriptor for array expressions.. PR fortran/29490 * trans-expr.c (gfc_set_interface_mapping_bounds): In the case that GFC_TYPE_ARRAY_LBOUND is not available, use descriptor values for it and GFC_TYPE_ARRAY_UBOUND. PR fortran/29641 * trans-types.c (gfc_get_derived_type): If the derived type namespace has neither a parent nor a proc_name, set NULL for the search namespace. 2006-10-31 Paul Thomas <pault@gcc.gnu.org> PR fortran/29387 * gfortran.dg/intrinsic_actual_2.f90: New test. PR fortran/29490 * gfortran.dg/actual_array_interface_1.f90: New test. PR fortran/29641 * gfortran.dg/used_types_11.f90: New test. From-SVN: r118220
Paul Thomas committed -
From-SVN: r118219
Steven Bosscher committed
-