aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/atree.adb
AgeCommit message (Collapse)AuthorFilesLines
2016-04-18[multiple changes]Arnaud Charlet1-0/+102
2016-04-18 Arnaud Charlet <charlet@adacore.com> * a-intsig.ads, a-intsig.adb: Removed, no longer used. * Makefile.rtl: update accordingly. 2016-04-18 Eric Botcazou <ebotcazou@adacore.com> * sem_type.adb (Disambiguate): Call Covers only when necessary for standard operators. 2016-04-18 Eric Botcazou <ebotcazou@adacore.com> * atree.ads (Num_Extension_Nodes): Add couple of figures to comment. * atree.adb: Add GNAT.Heap_Sort_G dependency. (Print_Statistics): New exported procedure to print statistics. 2016-04-18 Eric Botcazou <ebotcazou@adacore.com> * exp_ch3.adb (Build_Record_Init_Proc): Do not mark the procedure as to be inlined if the type needs finalization. From-SVN: r235106
2016-04-18[multiple changes]Arnaud Charlet1-5/+5
2016-04-18 Arnaud Charlet <charlet@adacore.com> * sem_prag.adb (Process_Convention): Relax rule on exporting Intrinsic types if Relaxed_RM_Semantics is True. 2016-04-18 Vincent Celier <celier@adacore.com> * sem_ch3.adb, lib.ads, sinfo.ads, sem_ch10.adb, einfo.adb, einfo.ads, checks.ads, sem_ch12.adb, sem.adb, sem_util.adb, sem_util.ads, sem_res.adb, sem_attr.adb, par.adb, exp_ch4.adb, errout.ads, sem_ch4.adb, atree.adb, atree.ads, sem_warn.adb, treepr.adb, exp_ch3.ads, exp_unst.adb: Change "descendent" to "descendant" in comments, error messages and identifiers. 2016-04-18 Eric Botcazou <ebotcazou@adacore.com> * sem_type.adb (Operator_Matches_Spec): Call First_Formal on New_S only once at the beginning of the function. From-SVN: r235100
2015-11-18[multiple changes]Arnaud Charlet1-0/+17
2015-11-18 Hristian Kirtchev <kirtchev@adacore.com> * atree.adb (Elist11): New routine. (Set_Elist11): New routine. * atree.ads (Elist11): New routine. (Set_Elist11): New routine. * atree.h: Define Elist11. * contracts.adb (Analyze_Object_Contract): Verify the legality of all references to a variable given that the variable is a constituent of a single protected/task type. * einfo.adb: Part_Of_References now utilizes Elist11. (Part_Of_References): New routine. (Set_Part_Of_References): New routine. (Write_Field11_Name): Add output for Part_Of_References. * einfo.ads New attribute Part_Of_References along with usage in entities. (Part_Of_References): New routine along with pragma Inline. (Set_Part_Of_References): New routine along with pragma Inline. * sem_prag.adb (Analyze_Constituent): Record a possible reference to a concurrent constituent. (Analyze_Global_Item): Record a possible reference to a concurrent constituent. (Analyze_Input_Output): Record a possible reference to a concurrent constituent. * sem_res.adb (Resolve_Entity_Name): Record a possible reference to a concurrent constituent. * sem_util.adb (Check_Part_Of_Reference): New routine. (Record_Possible_Part_Of_Reference): New routine. * sem_util.ads (Check_Part_Of_Reference): New routine. (Record_Possible_Part_Of_Reference): New routine. 2015-11-18 Ed Schonberg <schonberg@adacore.com> * checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated): An if_expression is the proper place to apply the overflow minimization procedure if its context is not an enclosing arithmetic expression. From-SVN: r230540
2015-11-12sem_ch10.adb, atree.adb: Minor reformatting.Hristian Kirtchev1-5/+4
2015-11-12 Hristian Kirtchev <kirtchev@adacore.com> * sem_ch10.adb, atree.adb: Minor reformatting. 2015-11-12 Hristian Kirtchev <kirtchev@adacore.com> * sem_elab.adb (Check_A_Call): Add new variable Is_DIC_Proc. Report elaboration issue in SPARK concerning calls to source subprograms or nontrivial Default_Initial_Condition procedures. Add specialized error message to avoid outputting the internal name of the Default_Initial_Condition procedure. * sem_util.ads, sem_util.adb (Is_Non_Trivial_Default_Init_Cond_Procedure): New routine. From-SVN: r230237
2015-10-26[multiple changes]Arnaud Charlet1-0/+90
2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * atree.ads, atree.adb (Ekind_In): New 10 and 11 parameter versions. * contracts.ads, contracts.adb (Analyze_Initial_Declaration_Contract): New routine. * sem_ch6.adb (Analyze_Generic_Subprogram_Body): Analyze the contract of the initial declaration. (Analyze_Subprogram_Body_Helper): Analyze the contract of the initial declaration. * sem_ch7.adb (Analyze_Package_Body_Helper): Analyze the contract of the initial declaration. * sem_ch9.adb (Analyze_Entry_Body): Analyze the contract of the initial declaration. (Analyze_Protected_Body): Analyze the contract of the initial declaration. (Analyze_Task_Body): Analyze the contract of the initial declaration. * sem_prag.adb (Add_Entity_To_Name_Buffer): Use "type" rather than "unit" as it makes the error messages sound better. (Add_Item_To_Name_Buffer): Update comment on usage. The routine now supports discriminants and current instances of concurrent types. (Analyze_Depends_In_Decl_Part): Install the discriminants of a task type. (Analyze_Global_In_Decl_Part): Install the discriminants of a task type. (Analyze_Global_Item): Add processing for current instances of concurrent types and include discriminants as valid global items. (Analyze_Input_Output): Discriminants and current instances of concurrent types are now valid items. Update various error messages. (Check_Usage): Current instances of protected and task types behaves as formal parameters. (Collect_Subprogram_Inputs_Outputs): There is no longer need to manually analyze [Refined_]Global thanks to freezing of initial declaration contracts. Add processing for the current instance of a concurrent type. (Find_Role): Add categorizations for discriminants, protected and task types. (Is_CCT_Instance): New routine. (Match_Items): Update the comment on usage. Update internal comments. * sem_prag.ads (Collect_Subprogram_Inputs_Outputs): Update the comment on usage. * sem_util.adb (Entity_Of): Ensure that the entity is an object when traversing a potential renaming chain. (Fix_Msg): Use "type" rather than "unit" as it makes the error messages sound better. * sem_util.ads (Fix_Msg): Update the comment on usage. 2015-10-26 Arnaud Charlet <charlet@adacore.com> * par.adb (Par): Do not generate an error when generating SCIL for predefined units or new children of system and co. 2015-10-26 Ed Schonberg <schonberg@adacore.com> * einfo.adb: Access_Disp_Table applies to a private extension. From-SVN: r229373
2015-10-26[multiple changes]Arnaud Charlet1-0/+17
2015-10-26 Bob Duff <duff@adacore.com> * exp_ch7.adb, exp_ch6.adb: Minor comment fix. 2015-10-26 Hristian Kirtchev <kirtchev@adacore.com> * aspects.adb (Move_Or_Merge_Aspects): Move all aspects related to a single concurrent type declaration to the declaration of the anonymous object if they qualify. (Relocate_Aspect): Update comment on usage. * aspects.ads Add new sectioon on aspect specifications on single concurrent types. Add new table Aspect_On_Anonymous_Object_OK. (Move_Or_Merge_Aspects): Udate the comment on usage. * atree.adb (Elist36): New routine. (Set_Elist36): New routine. * atree.ads (Elist36): New routine along with pragma Inline. (Set_Elist36): New routine along with pragma Inline. * atree.h: Elist36 is now an alias for Field36. * contracts.adb (Add_Contract_Item): Add processing for protected units and extra processing for variables. (Analyze_Object_Contract): Code cleanup. The processing of Part_Of now depends on wherer the object is a constant or a variable. Add processing for pragmas Depends and Global when they apply to a single concurrent object. Verify that a variable which is part of a single concurrent type has full default initialization. Set/restore the SPARK_Mode of a single concurrent object. (Analyze_Protected_Contract): New routine. * contracts.ads (Add_Contract_Item): Update the comment on usage. (Analyze_Object_Contract): Update the comment on usage. (Analyze_Protected_Contract): New routine. (Analyze_Task_Contract): Update the comment on usage. * einfo.adb Part_Of_Constituents now uses Elist10. (Anonymous_Object): New routine. (Contract): Code cleanup. (Has_Option): Remove the assumption that the only simple option is External. (Is_Synchronized_State): New routine. (Part_Of_Constituents): This attribute applies to variables and uses Elist10. (Set_Anonymous_Object): New routine. (Set_Contract): Code cleanup. (Set_Part_Of_Constituents): This attribute applies to variables and uses Elist10. (Set_SPARK_Aux_Pragma): Code cleanup. (Set_SPARK_Aux_Pragma_Inherited): Code cleanup. (Set_SPARK_Pragma): Code cleanup. This attribute applies to variables. (Set_SPARK_Pragma_Inherited): Code cleanup. This attribute applies to variables. (SPARK_Aux_Pragma): Code cleanup. (SPARK_Aux_Pragma_Inherited): Code cleanup. (SPARK_Pragma): Code cleanup. This attribute applies to variables. (SPARK_Pragma_Inherited): Code cleanup. This attribute applies to variables. (Write_Field9_Name): Remove the output for Part_Of_Constituents. (Write_Field10_Name): Add output for Part_Of_Constituents. (Write_Field30_Name): Add output for Anonymous_Object. (Write_Field34_Name): Output SPARK_Pragma for protected types and variables. * einfo.ads: New attributes Anonymous_Object and Is_Synchronized_State along with usage in entities. Update the documentation of attributes Contract Encapsulating_State Part_Of_Constituents SPARK_Aux_Pragma SPARK_Aux_Pragma_Inherited SPARK_Pragma SPARK_Pragma_Inherited (Anonymous_Object): New routine along with pragma Inline. (Is_Synchronized_State): New routine. (Set_Anonymous_Object): New routine along with pragma Inline. * freeze.adb (Freeze_Record_Type): Ensure that a non-synchronized record does not have synchronized components. * sem_ch3.adb (Analyze_Declarations): Code cleanup. Analyze the contract of protected units. * sem_ch9.adb Add with and use clauses for Sem_Prag. Code cleanup. (Analyze_Single_Protected_Declaration): Reimplemented. (Analyze_Single_Task_Declaration): Reimplemented. * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Part_Of can now apply to a single concurrent type declaration. Rely on Insert_Pragma to place the pragma. Update the error message on usage to reflect the new context. (Insert_Pragma): When inserting pragmas for a protected or task type, create a definition if the type lacks one. * sem_elab.adb (Check_A_Call): Code cleanup. Issue error message related to elaboration issues for SPARK when SPARK_Mode is "on" and the offending entity comes from source. * sem_prag.adb (Analyze_Abstract_State): Add new flag Synchronous_Seen. Update the analysis of simple options Externa, Ghost and Synchronous. Update various error messages to reflect the use of single concurrent types. (Analyze_Depends_Global): Pragmas Depends and Global can now apply to a single task type or a single concurrent object created for a task type. (Analyze_Depends_In_Decl_Part): Do not push a scope when the context is a single concurrent object. (Analyze_Part_Of): Moved out of Analyze_Pragma. The routine has a new profile and comment on usage. (Analyze_Part_Of_In_Decl_Part): New routine. (Analyze_Part_Of_Option): Update the call to Analyze_Part_Of. (Analyze_Pragma): Pragma Abstract_State can now carry simple option Synchronous. Pragma Part_Of can now apply to a single concurrent type declaration. The analysis of pragma Part_Of is delayed when the context is a single concurrent object. (Analyze_Refined_Depends_In_Decl_Part): Use the anonymous object when the context is a single concurren type. (Analyze_Refined_Global_In_Decl_Part): Use the anonymous object when the context is a single concurren type. (Check_Ghost_Constituent): Removed. (Check_Matching_Constituent): Renamed to Match_Constituent. (Check_Matching_State): Renamed to Match_State. (Collect_Constituent): Update the comment on usage. Verify various legality rules related to ghost and synchronized entities. (Find_Related_Declaration_Or_Body): A single task declaration is no longer a valid context for a pragma. (Fix_Msg): Moved to Sem_Util. (Process_Overloadable): Add processing for single task objects. (Process_Visible_Part): Add processing for single concurrent types. (Relocate_Pragmas_To_Anonymous_Object): New routine. * sem_prag.ads Add new table Pragma_On_Anonymous_Object_OK. (Analyze_Part_Of_In_Decl_Part): New routine. (Relocate_Pragmas_To_Anonymous_Object): New routine. * sem_util.adb (Defining_Entity): Code cleanup. (Fix_Msg): Moved from Sem_Prag and augmented to handle mode replacements. (Has_Full_Default_Initialization): New routine. (Is_Descendant_Of_Suspension_Object): Moved out of Is_Effectively_Volatile. (Is_Single_Concurrent_Object): New routine. (Is_Single_Concurrent_Type): New routine. (Is_Single_Concurrent_Type_Declaration): New routine. (Is_Synchronized_Object): New routine. (Yields_Synchronized_Object): New routine. * sem_util.ads (Fix_Msg): Moved form Sem_Prag. Update the comment on usage. (Has_Full_Default_Initialization): New routine. (Is_Single_Concurrent_Object): New routine. (Is_Single_Concurrent_Type): New routine. (Is_Single_Concurrent_Type_Declaration): New routine. (Is_Synchronized_Object): New routine. (Yields_Synchronized_Object): New routine. * snames.ads-tmpl: Add name Synchronous. From-SVN: r229357
2015-10-20[multiple changes]Arnaud Charlet1-0/+23
2015-10-20 Yannick Moy <moy@adacore.com> * a-sytaco.ads (Ada.Synchronous_Task_Control): Package now withs System.Task_Identification. The visible part of the spec has SPARK_Mode. The private part has pragma SPARK_Mode (Off). (Set_True): Added Global and Depends aspects (Set_False): Added Global and Depends aspects (Current_State): Added Volatile_Function aspect and added external state Ada.Task_Identification.Tasking_State as a Global input. (Suspend_Until_True): Added Global and Depends aspects * a-sytaco.adb (Ada.Synchronous_Task_Control): Package body has SPARK_Mode => Off * a-extiin.ads (Ada.Execution_Time.Interrupts): Package now withs Ada.Real_Time and has SPARK_Mode. (Clock): Added Volatile_Function aspect and added external state Ada.Real_Time.Clock_Time as a Global input. * a-reatim.ads (Ada.Real_Time): The visible part of the spec has SPARK_Mode. The private part has pragma SPARK_Mode (Off). The package declares external state Clock_Time with properties Async_Readers and Async_Writers. (Clock): Added Volatile_Function aspect and added external state Clock_Time as a Global input. * a-reatim.adb (Ada.Real_Time): Package body has SPARK_Mode => Off * a-exetim-default.ads, a-exetim-mingw.ads (Ada.Execution_Time): The visible part of the spec has SPARK_Mode. The private part has pragma SPARK_Mode (Off). (Clock): Added Volatile_Function aspect and added external state Clock_Time as a Global input. (Clock_For_Interrupts): Added Volatile_Function aspect and added external state Ada.Real_Time.Clock_Time as a Global input. * a-exetim-mingw.adb (Ada.Execution_Time): Package body has SPARK_Mode => Off * a-interr.ads (Ada.Interrupts): Package now withs Ada.Task_Identification (Is_Reserved): Added SPARK_Mode, Volatile_Function and external state Ada.Task_Identification.Tasking_State as a Global input. (Is_Attached): Added SPARK_Mode, Volatile_Function and external state Ada.Task_Identification.Tasking_State as a Global input. (Attach_Handler): Added SPARK_Mode => Off (Exchange_Handler): Added SPARK_Mode => Off (Detach_Handler): Added SPARK_Mode and external state Ada.Task_Identification.Tasking_State as a Global In_Out. (Reference): Added SPARK_Mode => Off * a-disedf.ads (Get_Deadline): Added SPARK_Mode, Volatile_Function and external state Ada.Task_Identification.Tasking_State as a Global input. * a-taside.ads (Ada.Task_Identification): The visible part of the spec has SPARK_Mode. The private part has pragma SPARK_Mode (Off). The package declares external state Tasking_State with properties Async_Readers and Async_Writers. (Current_Task): Added Volatile_Function aspect and added external state Tasking_State as a Global input. (Environment_Task): Added SPARK_Mode => Off (Is_Terminated): Added Volatile_Function aspect and added external state Tasking_State as a Global input. (Is_Callable): Added Volatile_Function aspect and added external state Tasking_State as a Global input. (Activation_Is_Complete): Added Volatile_Function aspect and added external state Tasking_State as a Global input. * a-taside.adb (Ada.Task_Identification): Package body has SPARK_Mode => Off. 2015-10-20 Ed Schonberg <schonberg@adacore.com> * atree.ads, atree.adb: Enable List38 and List39 on entities. * einfo.ads, einfo.adb (Class_Wide_Preconds) new attribute defined on subprograms. Holds the list of class-wide precondition functions inherited from ancestors. Each such function is an instantiation of the generic function generated from an explicit aspect specification for a class-wide precondition. A type is an ancestor of itself, and therefore a root type has such an instance on its own list. (Class_Wide_Postconds): ditto for postconditions. 2015-10-20 Vincent Celier <celier@adacore.com> * prj-attr.adb: Add packages Prove and GnatTest. 2015-10-20 Steve Baird <baird@adacore.com> * a-conhel.adb: Add an Annotate pragma to help suppress CodePeer's analysis of internals of container generic instances. This pragma has no other effect. * a-conhel.adb (Generic_Implementation) Add "pragma Annotate (CodePeer, Skip_Analysis);". From-SVN: r229070
2015-05-22atree.adb, [...]: Change name Needs_Actuals_Check to Check_Actuals.Robert Dewar1-20/+20
2015-05-22 Robert Dewar <dewar@adacore.com> * atree.adb, atree.ads, treepr.adb: Change name Needs_Actuals_Check to Check_Actuals. * exp_ch4.adb (Expand_N_Op_Expon): Optimize 2**x in modular and overflow cases. From-SVN: r223538
2015-05-22atree.adb, atree.ads (Needs_Actuals_Check): New flag.Robert Dewar1-0/+22
2015-05-22 Robert Dewar <dewar@adacore.com> * atree.adb, atree.ads (Needs_Actuals_Check): New flag. From-SVN: r223536
2015-03-13[multiple changes]Arnaud Charlet1-0/+144
2015-03-13 Robert Dewar <dewar@adacore.com> * exp_unst.adb (Note_Uplevel_Reference): Eliminate duplicate references. (Actual_Ref): New function. (AREC_String): Minor reformatting. (Unnest_Subprogram): Use Actual_Ref. * frontend.adb (Frontend): Turn off Unnest_Subprogram_Mode before call to Instantiate_Bodies. 2015-03-13 Ed Schonberg <schonberg@adacore.com> * freeze.adb (Freeze_Profile): If the return type of a function being frozen is an untagged limited view and the function is abstract, mark the type as frozen because there is no later point at which the profile of the subprogram will be elaborated. 2015-03-13 Robert Dewar <dewar@adacore.com> * einfo.adb, einfo.ads, atree.adb, atree.ads, atree.h: Add seventh component to entities. Add new fields Field36-41 and Node36-41. 2015-03-13 Claire Dross <dross@adacore.com> * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Rewrite after review. 2015-03-13 Robert Dewar <dewar@adacore.com> * exp_util.adb (Is_Volatile_Reference): Compile time known value is never considered to be a volatile reference. 2015-03-13 Robert Dewar <dewar@adacore.com> * sem_ch3.adb (Analyze_Object_Contract): Suppress "constant cannot be volatile" for internally generated object (such as FIRST and LAST constants). 2015-03-13 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb (Validate_Access_Subprogram_Instance): If a convention is specified for the formal parameter, verify that the actual has the same convention. * sem_prag.adb (Set_Convention_From_Pragma): Allow convention pragma to be set on a generic formal type. * sem_util.adb (Set_Convention): Ignore within an instance, as it has already been verified in the generic unit. From-SVN: r221422
2015-03-02[multiple changes]Arnaud Charlet1-1/+18
2015-03-02 Robert Dewar <dewar@adacore.com> * atree.ads, atree.adb (Uint24): New function (Set_Uint24): New procedure. * atree.h (Uint24): New macro for field access. * back_end.adb (Call_Back_End): For now, don't call back end if unnesting subprogs. * einfo.adb (Activation_Record_Component): New field (Subps_Index): New field. * einfo.ads (Activation_Record_Component): New field (Subps_Index): New field Minor reordering of comments into alpha order. * exp_unst.ads, exp_unst.adb: Continued development. 2015-03-02 Gary Dismukes <dismukes@adacore.com> * exp_disp.ads: Minor reformatting. 2015-03-02 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Chain_Use_Clause): Do not chain use clause from ancestor to list of use clauses active in descendant unit if we are within the private part of an intervening parent, to prevent circularities in use clause list. From-SVN: r221114
2015-01-072015-01-07 Hristian Kirtchev <kirtchev@adacore.com>Hristian Kirtchev1-3/+69
* alloc.ads Alphabetize several declarations. Add constants Ignored_Ghost_Units_Initial and Ignored_Ghost_Units_Increment. * atree.adb Add with and use clauses for Opt. (Allocate_Initialize_Node): Mark a node as ignored Ghost if it is created in an ignored Ghost region. (Ekind_In): New variant. (Is_Ignored_Ghost_Node): New routine. (Set_Is_Ignored_Ghost_Node): New routine. * atree.adb Aplhabetize several subprograms declarations. Flag Spare0 is now known as Is_Ignored_Ghost_Node. (Ekind_In): New variant. (Is_Ignored_Ghost_Node): New routine. (Set_Is_Ignored_Ghost_Node): New routine. * einfo.adb: Flag 279 is now known as Contains_Ignored_Ghost_Code. (Contains_Ignored_Ghost_Code): New routine. (Set_Contains_Ignored_Ghost_Code): New routine. (Set_Is_Checked_Ghost_Entity, Set_Is_Ignored_Ghost_Entity): It is now possible to set this property on an unanalyzed entity. (Write_Entity_Flags): Output the status of flag Contains_Ignored_Ghost_Code. * einfo.ads New attribute Contains_Ignored_Ghost_Code along with usage in nodes. (Contains_Ignored_Ghost_Code): New routine along with pragma Inline. (Set_Contains_Ignored_Ghost_Code): New routine along with pragma Inline. * exp_ch3.adb Add with and use clauses for Ghost. (Freeze_Type): Capture/restore the value of Ghost_Mode on entry/exit. Set the Ghost_Mode in effect. (Restore_Globals): New routine. * exp_ch7.adb (Process_Declarations): Do not process a context that invoves an ignored Ghost entity. * exp_dbug.adb (Qualify_All_Entity_Names): Skip an ignored Ghost construct that has been rewritten as a null statement. * exp_disp.adb Add with and use clauses for Ghost. (Make_DT): Capture/restore the value of Ghost_Mode on entry/exit. Set the Ghost_Mode in effect. (Restore_Globals): New routine. * exp_util.adb (Requires_Cleanup_Actions): An ignored Ghost entity does not require any clean up. Add two missing cases that deal with block statements. * freeze.adb Add with and use clauses for Ghost. (Freeze_Entity): Capture/restore the value of Ghost_Mode on entry/exit. Set the Ghost_Mode in effect. (Restore_Globals): New routine. * frontend.adb Add with and use clauses for Ghost. Remove any ignored Ghost code from all units that qualify. * ghost.adb New unit. * ghost.ads New unit. * gnat1drv.adb Add with clause for Ghost. Initialize and lock the table in package Ghost. * lib.ads: Alphabetize several subprogram declarations. * lib-xref.adb (Output_References): Do not generate reference information for ignored Ghost entities. * opt.ads Add new type Ghost_Mode_Type and new global variable Ghost_Mode. * rtsfind.adb (Load_RTU): Provide a clean environment when loading a runtime unit. * sem.adb (Analyze): Capture/restore the value of Ghost_Mode on entry/exit as the node may set a different mode. (Do_Analyze): Capture/restore the value of Ghost_Mode on entry/exit as the unit may be withed from a unit with a different Ghost mode. * sem_ch3.adb Add with and use clauses for Ghost. (Analyze_Full_Type_Declaration, Analyze_Incomplete_Type_Decl, Analyze_Number_Declaration, Analyze_Private_Extension_Declaration, Analyze_Subtype_Declaration): Set the Ghost_Mode in effect. Mark the entity as Ghost when there is a Ghost_Mode in effect. (Array_Type_Declaration): The implicit base type inherits the "ghostness" from the array type. (Derive_Subprogram): The alias inherits the "ghostness" from the parent subprogram. (Make_Implicit_Base): The implicit base type inherits the "ghostness" from the parent type. * sem_ch5.adb Add with and use clauses for Ghost. (Analyze_Assignment): Set the Ghost_Mode in effect. * sem_ch6.adb Add with and use clauses for Ghost. (Analyze_Abstract_Subprogram_Declaration, Analyze_Procedure_Call, Analyze_Subprogram_Body_Helper, Analyze_Subprogram_Declaration): Set the Ghost_Mode in effect. Mark the entity as Ghost when there is a Ghost_Mode in effect. * sem_ch7.adb Add with and use clauses for Ghost. (Analyze_Package_Body_Helper, Analyze_Package_Declaration, Analyze_Private_Type_Declaration): Set the Ghost_Mode in effect. Mark the entity as Ghost when there is a Ghost_Mode in effect. * sem_ch8.adb Add with and use clauses for Ghost. (Analyze_Exception_Renaming, Analyze_Generic_Renaming, Analyze_Object_Renaming, Analyze_Package_Renaming, Analyze_Subprogram_Renaming): Set the Ghost_Mode in effect. Mark the entity as Ghost when there is a Ghost_Mode in effect. (Find_Type): Check the Ghost context of a type. * sem_ch11.adb Add with and use clauses for Ghost. (Analyze_Exception_Declaration): Set the Ghost_Mode in effect. Mark the entity as Ghost when there is a Ghost_Mode in effect. * sem_ch12.adb Add with and use clauses for Ghost. (Analyze_Generic_Package_Declaration, Analyze_Generic_Subprogram_Declaration): Set the Ghost_Mode in effect. Mark the entity as Ghost when there is a Ghost_Mode in effect. * sem_prag.adb Add with and use clauses for Ghost. (Analyze_Pragma): Ghost-related checks are triggered when there is a Ghost mode in effect. (Create_Abstract_State): Mark the entity as Ghost when there is a Ghost_Mode in effect. * sem_res.adb Add with and use clauses for Ghost. (Check_Ghost_Context): Removed. * sem_util.adb (Check_Ghost_Completion): Removed. (Check_Ghost_Derivation): Removed. (Incomplete_Or_Partial_View): Add a guard in case the entity has not been analyzed yet and does carry a scope. (Is_Declaration): New routine. (Is_Ghost_Entity): Removed. (Is_Ghost_Statement_Or_Pragma): Removed. (Is_Subject_To_Ghost): Removed. (Set_Is_Ghost_Entity): Removed. (Within_Ghost_Scope): Removed. * sem_util.adb (Check_Ghost_Completion): Removed. (Check_Ghost_Derivation): Removed. (Is_Declaration): New routine. (Is_Ghost_Entity): Removed. (Is_Ghost_Statement_Or_Pragma): Removed. (Is_Subject_To_Ghost): Removed. (Set_Is_Ghost_Entity): Removed. (Within_Ghost_Scope): Removed. * sinfo.ads Add a section on Ghost mode. * treepr.adb (Print_Header_Flag): New routine. (Print_Node_Header): Factor out code. Output flag Is_Ignored_Ghost_Node. * gcc-interface/Make-lang.in: Add dependency for unit Ghost. From-SVN: r219280
2014-11-07[multiple changes]Arnaud Charlet1-0/+10
2014-11-07 Hristian Kirtchev <kirtchev@adacore.com> * freeze.adb (Freeze_Entity): Issue an error regardless of the SPARK_Mode when a ghost type is effectively volatile. * sem_ch3.adb (Analyze_Object_Contract): Decouple the checks related to Ghost from SPARK_Mode. * sem_res.adb (Check_Ghost_Policy): Issue an error regardless of the SPARK_Mode when the Ghost policies do not match. * sem_util.adb (Check_Ghost_Completion): Issue an error regardless of the SPARK_Mode when the Ghost policies do not match. 2014-11-07 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb (Analyze_Iterator_Specification): return if name in iterator does not have any usable aspect for iteration. 2014-11-07 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Null_Procedure): Reject a null procedure that there is a previous null procedure in scope with a matching profile. 2014-11-07 Hristian Kirtchev <kirtchev@adacore.com> * atree.adb (Copy_Separate_Tree): Copy the aspect specifications. * inline.adb (Has_Some_Contract): Do the check only when the related entity has been analyzed. From-SVN: r217224
2014-08-01[multiple changes]Arnaud Charlet1-10/+9
2014-08-01 Bob Duff <duff@adacore.com> * gnat_ugn.texi: Minor updates. 2014-08-01 Robert Dewar <dewar@adacore.com> * atree.adb: Minor reformatting. 2014-08-01 Ed Schonberg <schonberg@adacore.com> * exp_aggr.adb (Init_Hidden_Discriminants): If some ancestor is a private extension, get stored constraint, if any, from full view. From-SVN: r213479
2014-02-24g-sercom-mingw.adb, [...]: Minor reformatting.Robert Dewar1-5/+4
2014-02-24 Robert Dewar <dewar@adacore.com> * g-sercom-mingw.adb, g-sercom-linux.adb, sem_prag.adb, freeze.adb, atree.adb, atree.ads: Minor reformatting. From-SVN: r208088
2014-02-24[multiple changes]Arnaud Charlet1-37/+28
2014-02-24 Robert Dewar <dewar@adacore.com> * a-tags.adb, s-os_lib.adb: Minor reformatting. 2014-02-24 Thomas Quinot <quinot@adacore.com> * g-sercom-mingw.adb, g-sercom-linux.adb (Raise_Error): Include strerror message, not just numeric errno value. 2014-02-24 Doug Rupp <rupp@adacore.com> * raise-gcc.c (exception_class_eq): Make endian neutral. 2014-02-24 Ed Schonberg <schonberg@adacore.com> * atree.ads, atree,adb (Copy_Separate_Tree): Remove Syntax_Only flag, and reset Etype and Analyzed attributes unconditionally when copying a tree that may be partly analyzed. * freeze.adb: Change calls to Copy_Separate_Tree accordingly. * sem_ch6.adb (Check_Inline_Pragma): If the Inline pragma appears within a subprogram body and applies to it, remove it from the body before making a copy of it, to prevent spurious errors when analyzing the copied body. From-SVN: r208086
2014-02-24[multiple changes]Arnaud Charlet1-3/+52
2014-02-24 Thomas Quinot <quinot@adacore.com> * s-os_lib.adb (Errno_Message): Do not depend on Integer'Image. * s-oscons-tmplt.c: On VxWorks, include adaint.h only after vxWorks.h has been included. Also ensure that file attributes related definitions are output even in cases where socket support is not enabled. * a-tags.adb: Code clean up. * Make-generated.in (OSCONS_CPP, OSCONS_EXTRACT): Use -iquote instead of -I to add the main ada source directory to the header search path, in order to avoid conflict between our own "types.h" and VxWork's <types.h>. 2014-02-24 Robert Dewar <dewar@adacore.com> * atree.ads, atree.adb (Copy_Separate_Tree): Add Syntax_Only parameter. * debug.adb: Remove documentation of -gnatd.X, no longer used. * freeze.adb (Wrap_Imported_Subprogram): Fixed and activated. 2014-02-24 Bob Duff <duff@adacore.com> * gnat_ugn.texi: Improve documentation of gnatpp. From-SVN: r208083
2014-02-24[multiple changes]Arnaud Charlet1-0/+12
2014-02-24 Robert Dewar <dewar@adacore.com> * sinfo.ads, sem_ch12.adb, sem_res.adb, sem_ch4.adb, par-ch12.adb: Minor reformatting. * atree.ads, atree.adb (Node35): New function. (Set_Node35): New procedure. * debug.adb: Define new debug flag -gnatd.X. * einfo.ads, einfo.adb (Import_Pragma): New field. * freeze.adb (Wrap_Imported_Procedure): New procedure (not really active yet, has to be activated with -gnatd.X. * sem_prag.adb (Set_Imported): Set new Import_Pragma field (Set_Imported): Don't set Is_Public (see Freeze.Wrap_Imported_Subprogram) * par-ch3.adb (P_Component_List): Handle unexpected null component. 2014-02-24 Yannick Moy <moy@adacore.com> * sem_ch3.adb: Correct reference to SPARK RM in error messages. * gnat_rm.texi: Correct documentation of attribute Update. 2014-02-24 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb (Analyze_Iterator_Specification): Reject container iterator in older versions of Ada. From-SVN: r208076
2014-02-20[multiple changes]Arnaud Charlet1-2/+1
2014-02-20 Robert Dewar <dewar@adacore.com> * s-os_lib.ads (Rename_File): Minor commment addition. 2014-02-20 Thomas Quinot <quinot@adacore.com> * einfo.ads: Minor reformatting. 2014-02-20 Hristian Kirtchev <kirtchev@adacore.com> * aspects.adb (Exchange_Aspects): New routine. * aspects.ads (Exchange_Aspects): New routine. * atree.adb (Rewrite): Do not check whether the save node has aspects as it never will, instead check the node about to be clobbered. * einfo.adb (Write_Field25_Name): Abstract_States can appear in entities of generic packages. * sem_ch6.adb (Analyze_Expression_Function): Fix the parent pointer of an aspect specification list after rewriting takes place. * sem_ch7.adb (Analyze_Package_Body_Helper): Swap the aspect specifications of the generic template and the copy used for analysis. * sem_ch12.adb (Analyze_Generic_Package_Declaration): Swap the aspect specifications of the generic template and the copy used for analysis. (Analyze_Package_Instantiation): Propagate the aspect specifications from the generic template to the instantiation. (Build_Instance_Compilation_Unit_Nodes): Propagate the aspect specifications from the generic template to the instantiation. * sem_ch13.adb (Analyze_Aspect_Specifications): Handle aspects Abstract_State, Initializes and Initial_Condition when they apply to a package instantiation. 2014-02-20 Robert Dewar <dewar@adacore.com> * stringt.adb: Add call to Initialize in package initialization. From-SVN: r207946
2014-01-29a-except-2005.adb, [...]: Minor reformatting.Robert Dewar1-3/+3
2014-01-29 Robert Dewar <dewar@adacore.com> * a-except-2005.adb, a-except.adb, a-excpol-abort.adb, a-exstat.adb, ali.adb, a-numaux.ads, a-numaux-darwin.ads, a-numaux-libc-x86.ads, a-numaux-vms.ads, a-numaux-vxworks.ads, a-numaux-x86.ads, aspects.ads, a-taside.adb, a-teioed.adb, a-textio.adb, a-textio.ads, atree.adb, atree.ads, a-witeio.adb, a-witeio.ads, a-wtedit.adb, a-ztedit.adb, a-ztexio.adb, bcheck.adb, binde.adb, checks.adb, comperr.adb, cstand.adb, debug_a.adb, einfo.ads, errout.adb, erroutc.adb, eval_fat.adb, exp_aggr.adb, exp_attr.adb, exp_ch11.adb, exp_ch3.adb, exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch9.adb, exp_dbug.adb, exp_disp.adb, exp_fixd.adb, exp_imgv.adb, exp_intr.adb, exp_util.adb, freeze.adb, frontend.adb, g-comlin.ads, g-mbdira.adb, gnat1drv.adb, gprep.adb, g-spipat.adb, i-cpp.ads, i-vxwork.ads, i-vxwork-x86.ads, krunch.ads, layout.adb, lib-load.adb, lib-writ.adb, lib-writ.ads, live.adb, namet.ads, osint.adb, osint-c.adb, output.ads, par.adb, par-ch10.adb, par-ch13.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb, par-ch6.adb, par-ch9.adb, par-endh.adb, par-labl.adb, par-prag.adb, par-sync.adb, par-tchk.adb, par-util.adb, prj.adb, repinfo.adb, rtsfind.adb, s-arit64.adb, s-asthan-vms-alpha.adb, s-asthan-vms-ia64.adb, s-bignum.adb, scans.adb, scng.adb, s-dimmks.ads, sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb, sem_ch13.adb, sem_ch13.ads, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_ch8.adb, sem_disp.adb, sem_elab.adb, sem_elim.adb, sem_eval.adb, sem_intr.adb, sem_prag.adb, sem_res.adb, sem_type.adb, sem_util.adb, sem_warn.adb, set_targ.adb, s-fatgen.adb, s-fatgen.ads, s-fileio.adb, s-imgcha.adb, s-imgrea.adb, sinfo.ads, sinput-c.adb, snames.ads-tmpl, s-os_lib.adb, sprint.adb, s-regpat.adb, s-secsta.adb, s-stalib.ads, s-stchop.adb, s-stoele.ads, stand.ads, s-taprop-solaris.adb, s-tasdeb-vms.adb, s-tasini.adb, s-tassta.adb, s-valdec.adb, s-valuti.adb, s-wchjis.adb, s-wchwts.adb, system.ads, system-vms_64.ads, system-vms-ia64.ads, treepr.adb, types.ads, uintp.adb, uname.adb, urealp.adb, usage.adb, vxaddr2line.adb: Minor reformatting. From-SVN: r207260
2014-01-292014-01-29 Hristian Kirtchev <kirtchev@adacore.com>Hristian Kirtchev1-0/+17
* aspects.adb Add an entry for aspect Part_Of in table Canonical_Aspect. * aspects.ads Add an entry for aspect Part_Of in tables Aspect_Id, Aspect_Argument, Aspect_Names and Aspect_Delay. * atree.h Define Elist9. * atree.adb (Elist9): New routine. (Set_Elist9): New routine. * atree.ads (Elist9): New routine. (Set_Elist9): New routine. * einfo.adb Add Part_Of_Constituents and Encapsulating_State to the list of node usage. Remove Refined_State from the list of node usage. (Encapsulating_State): New routine. (Get_Pragma): Handle pragma Part_Of; (Part_Of_Constituents): New routine. (Refined_State): Removed. (Set_Encapsulating_State): New routine. (Set_Part_Of_Constituents): New routine. (Set_Refined_State): Removed. (Write_Field9_Name): Add an entry for Part_Of_Constituents (Write_Field10_Name): Add an entry for Encapsulating_State. Remove the entry for Refined_State. * einfo.ads Add new attributes Encapsulating_State and Part_Of_Constituents alond with their usage in entities. Remove attribute Refined_State along with its usage in entities. (Encapsulating_State): New routine and pragma Inline. (Get_Pragma): Update the comment on usage. (Part_Of_Constituents): New routine and pragma Inline. (Refined_State): Removed along with pragma Inline. (Set_Encapsulating_State): New routine and pragma Inline. (Set_Part_Of_Constituents): New routine and pragma Inline. (Set_Refined_State): Removed along with pragma Inline. * par-prag.adb Pragma Part_Of does not need any special processing by the parser. * sem_ch3.adb (Analyze_Declarations): Remove local variables Body_Id and Prag. Call separate routines to analyze the contract of a package [body]. (Analyze_Object_Contract): Update the comment on usage. Remove local variables Items and Nam. Use Get_Pragma rather than traversing the classification list. Verify whether the lack of indicator Part_Of agrees with the placement of the variable in state space. (Analyze_Object_Declaration): Initialize the encapsulating state of a variable. (Requires_State_Refinement): Moved to sem_util. * sem_ch7.adb (Analyze_Package_Body_Contract): New routine. (Analyze_Package_Contract): New routine. * sem_ch7.ads (Analyze_Package_Body_Contract): New routine. (Analyze_Package_Contract): New routine. * sem_ch10.adb (Decorate_State): Initialize the encapsulating state and Part_Of constituents. * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing for aspect Part_Of. Update all calls to Decorate_Delayed_Aspect_And_Pragma. (Check_Aspect_At_Freeze_Point): Aspect Part_Of does not need any special processing at freeze time. (Decorate_Delayed_Aspect_And_Pragma): Renamed to Decorate_Aspect_And_Pragma. Add formal parameter Delayed and update the associated comment. * sem_prag.adb Add an entry for pragma Part_Of in table Sig_Flags. (Analyze_Abstract_State): Add new global variable State_Id. Remove local constants Errors and Loc. Remove local variables Is_Null and State_Nam. Create the entity of the abstract state on the spot, before all remaining checks are performed. Verify that a missing Part_Of option agrees with the placement of the abstract state within the state space. (Analyze_Depends_In_Decl_Part): Add new global variables Constits_Seen and States_Seen. Check that a state and a corresponding constituent do not appear in pragma [Refined_]Depends. (Analyze_Global_In_Decl_Part): Add new global variables Constits_Seen and States_Seen. Check that a state and a corresponding constituent do not appear in pragma [Refined_]Global. (Analyze_Global_Item): Remove the now obsolete code that deals with Part_Of. Add the entity of the global item to the list of processed items. (Analyze_Initializes_In_Decl_Part): Add new global variables Constits_Seen and States_Seen. Check that a state and a corresponding constituent do not appear in pragma Initializes. (Analyze_Initialization_Item): Add the entity of the initialization item to the list of processed items. (Analyze_Input_Item): Add the entity of the initialization item to the list of processed items. (Analyze_Input_Output): Remove the now obsolete code that deals with Part_Of. Add the entity of the input/output to the list of processed items. (Analyze_Part_Of): New routine. (Analyze_Part_Of_Option): Remove local constant Par_State. Add local constant Encaps and local variables Encaps_Id and Legal. Use Analyze_Part of to analyze the option. Turn the related state into a Part_Of constituent if the option is legal. (Analyze_Pragma): Add processing for pragma Part_Of. (Analyze_Refined_State_In_Decl_Part): Remove global constants Pack_Body and Spec_Id. Remove global variables Abstr_States and Hidden_States. Add new global variables Available_States, Body_Id, Body_States and Spec_Id. Add new local constant Body_Decl. Reimplement the logic that extracts the states available for refinement from the related package and the body hidden states of the said package. (Analyze_Refinement_Clause): Add local variable Part_Of_Constits. (Check_Applicable_Policy): Alphabetize body. (Check_Dependency_Clause): Replace Refined_State with Encapsulating_State. (Check_Matching_Constituent): Reimplement the logic that determines whether an item is a valid / invalid constituent of the current refined state. Return when a construct does not denote a valid abstract state. Extract the list of Part_Of constituents for further analysis. Check that all Part_Of constituents of a state have been used in its refinement. (Check_Matching_State): Update the comment on usage. Operate on the list of available states. (Check_Missing_Part_Of): New routine. (Check_Refined_Global_Item): Replace Refined_State with Encapsulating_State. (Check_State_And_Constituent_Use): New routine. (Create_Abstract_State): New routine. (Is_Matching_Input): Replace Refined_State with Encapsulating_State. (Is_Part_Of): Removed. (Collect_Body_States): New routine. (Collect_Constituent): Replace Refined_State with Encapsulating_State. (Collect_Hidden_States): Removed. (Report_Unrefined_States): Change the profile of the procedure along with the comment on usage. (Report_Unused_Constituents): New routine. (Report_Unused_Hidden_States): Removed. (Report_Unused_States): New routine. * sem_prag.ads (Check_Missing_Part_Of): New routine. * sem_util.adb (Add_Contract_Item): Pragma Part_Of can now appear in the classification pragmas of a package instantiation or a variable. (Find_Placement_In_State_Space): New routine. (Is_Child): Removed. (Is_Child_Or_Sibling): Remove formal parameter Private_Child. Remove the private child checks. (Requires_State_Refinement): Moved from sem_ch3. * sem_util.ads Add new type State_Space_Kind along with comment on its usage and values. (Add_Contract_Item): Update the comment on usage. (Find_Body_Discriminal): Alphabetize spec. (Find_Placement_In_State_Space): New routine. (Is_Child_Or_Sibling): Remove formal parameter Private_Child and update the comment on usage. (Requires_State_Refinement): Moved from sem_ch3. * sinfo.ads: Update the documentation of N_Contract. * snames.ads-tmpl The predefined name for Part_Of is now used to denote a pragma. Add Pragma_Id for Part_Of. From-SVN: r207251
2014-01-21[multiple changes]Arnaud Charlet1-0/+49
2014-01-21 Hristian Kirtchev <kirtchev@adacore.com> * aspects.adb Add entries for Async_Readers, Async_Writers, Effective_Reads and Effective_Writes in table Canonical_Aspect. * aspects.ads Add entries for Async_Readers, Async_Writers, Effective_Reads and Effective_Writes in tables Aspect_Id, Aspect_Names, Aspect_Delay and Implementation_Defined_Aspect. * atree.adb (Ekind_In): New version with 8 parameters. (Node34): New routine. (Set_Node34): New routine. * atree.ads (Ekind_In): New version with 8 parameters. (Node34): New routine. (Set_Node34): New routine. * einfo.adb Contract is now Node34. (Contract): Update the assertion and node usage. (Get_Pragma): Include pragmas Async_Readers, Async_Writers, Effective_Reads and Effective_Writes. (Set_Contract): Update the assertion and node usage. (Write_Field24_Name): Remove the output for a contract. (Write_Field34_Name): Add output for a contract. * einfo.ads Contract is now Node34. Update the comment on attribute usage and related node structures. (Get_Pragma): Update the comment on usage. * par-prag.adb (Prag): Pragmas Async_Readers, Async_Writers, Effective_Reads and Effective_Writes do not require special processing by the parser. * sem_ch3.adb (Analyze_Variable_Contract): New routine. (Analyze_Declarations): Analyze the contract of a variable at the end of the declarative region. (Analyze_Object_Declaration): Create a contract for a variable. * sem_ch6.adb (Analyze_Subprogram_Contract): Update the retrieval of classification pragmas. (Process_Formals): Detect an illegal use of a volatile object as a formal in a function. * sem_ch12.adb (Instantiate_Object): Detect an illegal use of a volatile object as an actual in generic instantiation. * sem_prag.adb Add entries for Async_Readers, Async_Writers, Effective_Reads and Effective_Writes in table Sig_Flags. (Analyze_External_State_In_Decl_Part): New routine. (Analyze_Global_Item): Detect an illegal use of a volatile object as a global item of a function. (Analyze_Pragma): Reimplement pragma Abstract_State. Add support for pragmas Async_Readers, Async_Writers, Effective_Reads and Effective_Writes. (Check_External_Properties): New routine. * sem_prag.ads (Analyze_External_State_In_Decl_Part): New routine. (Check_External_Properties): New routine. * sem_res.adb (Resolve_Actuals): Detect an illegal use of a volatile object as an actual in a call. (Resolve_Entity_Name): Add local variables Par, Prev and Usage_OK. Detect illegal contexts of volatile objects. * sem_util.adb (Add_Contract_Item): Add support for pragmas associated with the contract of a variable. (Async_Readers_Enabled): New routine. (Async_Writers_Enabled): New routine. (Effective_Reads_Enabled): New routine. (Effective_Writes_Enabled): New routine. (Has_Enabled_Property): New routine. (Is_Unchecked_Conversion_Instance): New routine. (Is_Volatile_Object): Add support for entities that may denote a volatile object. * sem_util.ads (Add_Contract_Item): Update the comment on usage. (Async_Readers_Enabled): New routine. (Async_Writers_Enabled): New routine. (Effective_Reads_Enabled): New routine. (Effective_Writes_Enabled): New routine. (Is_Unchecked_Conversion_Instance): New routine. * sinfo.ads Update the comment on the structure of N_Contract. * snames.ads-tmpl Add predefined names for Async_Readers, Async_Writers, Effective_Reads and Effective_Writes. Add pragma ids for Async_Readers, Async_Writers, Effective_Reads and Effective_Writes. 2014-01-21 Robert Dewar <dewar@adacore.com> * exp_ch4.adb (Eval_Op_Expon): Use CRT_Safe_Compile_Time_Known_Value * sem_eval.adb (Compile_Time_Known_Value): Remove special handling of CRT mode (CRT_Safe_Compile_Time_Known_Value): New function (Eval_Op_Expon): Add CRT_Safe in call to Test_Foldable (Test_Foldable): Add CRT_Safe parameter * sem_eval.ads (Compile_Time_Known_Value): Remove special handling of CRT mode. (CRT_Safe_Compile_Time_Known_Value): New function. From-SVN: r206886
2014-01-21[multiple changes]Arnaud Charlet1-0/+12
2014-01-21 Robert Dewar <dewar@adacore.com> * exp_aggr.adb: Minor reformatting. 2014-01-21 Johannes Kanig <kanig@adacore.com> * gnat1drv.adb (Gnat1drv) remove obsolete reference to -gnatd.H. 2014-01-21 Bob Duff <duff@adacore.com> * gnat_ugn.texi: Document the "checks" attribute in gnat2xml. 2014-01-21 Steve Baird <baird@adacore.com> * gnat_rm.texi: Improve description of SPARK_Mode pragma. 2014-01-21 Vincent Celier <celier@adacore.com> * prj-part.adb (Parse_Single_Project): Accept to extend a project if it has only be imported by an project being extended. When a project that has only been imported by a project being extended is imported by another project that is not being extended, reset the previous indication, so that it will be an error if this project is extended later. * prj-tree.adb (Create_Project): Include component From_Extended in table Projects_HT * prj-tree.ads (Project_Name_And_Node): New Boolean component From_Extended 2014-01-21 Robert Dewar <dewar@adacore.com> * atree.ads, atree.adb: Add Node33 and Set_Node33. * einfo.ads, einfo.adb (SPARK_Pragma): New field (SPARK_Aux_Pragma): New field (SPARK_Pragma_Inherited): New flag (SPARK_Aux_Pragma_Inherited): New flag (SPARK_Mode_Pragmas): Removed. * lib.ads, lib.adb: Remove SPARK_Mode_Pragma, no longer used. * opt.ads (SPARK_Mode_Pragma): New global variable. * sem.ads: Add Save_SPARK_Mode_Pragma field to Scope_Stack_Entry. * sem_ch3.adb: Use new SPARK_Mode data structures. * sem_ch6.adb: Set SPARK_Mode fields in subprogram specs and bodies. * sem_ch7.adb: Set SPARK_Mode fields in package spec and body entities. * sem_ch8.adb (Push_Scope): Save SPARK_Mode_Pragma. (Pop_Scope): Restore SPARK_Mode_Pragma. * sem_prag.adb (Analyze_Pragma, case SPARK_Mode): Rewrite for new data structures. 2014-01-21 Arnaud Charlet <charlet@adacore.com> * back_end.adb: Undo previous change, not needed. Minor reformatting. From-SVN: r206879
2014-01-21switch-c.adb, [...]: Minor reformatting.Robert Dewar1-0/+1
2014-01-21 Robert Dewar <dewar@adacore.com> * switch-c.adb, usage.adb, atree.adb, atree.ads: Minor reformatting. From-SVN: r206872
2014-01-21[multiple changes]Arnaud Charlet1-31/+12
2014-01-21 Thomas Quinot <quinot@adacore.com> * atree.adb, atree.ads (Num_Extension_Nodes): Switch to Node_Id, since this is value is used in Node_Id arithmetic operations. (Copy_Node, Exchange_Entities): Use loops indexed by Num_Extension_Nodes instead of hard-coded unrolled code. 2014-01-21 Yannick Moy <moy@adacore.com> * gnat1drv.adb: Minor code cleanup, removing useless code. 2014-01-21 Arnaud Charlet <charlet@adacore.com> * opt.ads (SPARK_Switches_File_Name): New. * switch-c.adb (Scan_Front_End_Switches): Add handling of -gnates=xxx * * usage.adb (Usage): Document -gnates, in gnatprove mode only. * gnat_ugn.texi: Document -gnates. 2014-01-21 Yannick Moy <moy@adacore.com> * errout.adb (Special_Msg_Delete): Update comment. Remove special case for GNATprove which should not ignore mismatch in sizes for representation clauses. * sem_prag.adb (Analyze_Pragma): Remove special case for GNATprove which should not ignore pragma Pack. 2014-01-21 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb: Code clean up. 2014-01-21 Steve Baird <baird@adacore.com> * gnat_rm.texi: Improve GNAT RM description of SPARK_Mode pragma. From-SVN: r206871
2014-01-21[multiple changes]Arnaud Charlet1-1/+82
2014-01-21 Robert Dewar <dewar@adacore.com> * gcc-interface/gigi.h: Get Flags array address. * gcc-interface/trans.c: Acquire Flags array address. * atree.adb: Add support for Flags array and Flag0,1,2,3. * atree.ads: Add support for Flags array and Flag0,1,2,3. * atree.h: Add support for Flags array and Flag0,1,2,3. * back_end.adb: Pass Flags array address to gigi. 2014-01-21 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Attribute_Renaming): Transfer original attribute reference to generated body so that legality checks on stream attributes are properly applied. If type is tagged and already frozen, insert generated body at the point of the renaming declaration. 2014-01-21 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb: Code clean up. * sem_ch8.adb: Minor reformatting From-SVN: r206870
2014-01-20[multiple changes]Arnaud Charlet1-0/+9
2014-01-20 Robert Dewar <dewar@adacore.com> * checks.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * exp_ch4.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * opt.adb (SPARK_Mode_Config): Handled like other config flags * opt.ads (SPARK_Mode_Type): Moved here from types (renamed from SPARK_Mode_Id) (SPARK_Mode_Type): Add pragma Ordered, remove SPARK_ from names (SPARK_Mode): New flag (SPARK_Mode_Config): New flag (Config_Switches_Type): Add SPARK_Mode field * sem.adb: Minor code reorganization (remove unnecessary with) * sem.ads (Scope_Stack_Entry): Add Save_SPARK_Mode field * sem_aggr.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * sem_attr.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * sem_ch3.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * sem_ch4.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Reset SPARK_Mode from spec if needed * sem_ch7.adb (Analyze_Package_Body_Helper): Reset SPARK_Mode from spec if needed * sem_ch8.adb (Push_Scope): Save SPARK_Mode (Pop_Scope): Restore SPARK_Mode * sem_elab.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * sem_prag.adb (Get_SPARK_Mode_From_Pragma): New function (Get_SPARK_Mode_Id): Removed (Get_SPARK_Mode_Type): New name of Get_SPARK_Mode_Id * sem_prag.ads (Get_SPARK_Mode_From_Pragma): New function * sem_res.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * sem_util.adb: Check SPARK_Mode instead of GNATProve_Mode for converting warnings on inevitable exceptions to errors. * types.ads (SPARK_Mode_Id): Moved to opt.ads and renamed SPARK_Mode_Type 2014-01-20 Ed Schonberg <schonberg@adacore.com> * sem_ch13.adb: Add semantic information to rewritten type reference. 2014-01-20 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb (Expand_N_Assignment_Statement): If both sides are of a type with unknown discriminants, convert both to the underlying view of the type, so that the proper constraint check can be applied to the right-hand side. 2014-01-20 Robert Dewar <dewar@adacore.com> * atree.adb (Copy_Node): Fix failure to copy last component (Exchange_Entities): Fix failure to exchange last entity 2014-01-20 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb: Code clean up. From-SVN: r206844
2013-10-14aspects.adb: Add an entry in table Canonical_Aspect for Initializes.Hristian Kirtchev1-0/+34
2013-10-14 Hristian Kirtchev <kirtchev@adacore.com> * aspects.adb: Add an entry in table Canonical_Aspect for Initializes. * aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument, Aspect_Names and Aspect_Delay for Initializes. * atree.ads, atree.adb (Ekind_In): New seven argument versions of the routines. * einfo.adb: Remove Refined_State_Pragma from the list of node usage. Finalizer is now at position 28. (Contract): Package and package bodies now have a contract. (Finalizer): Update the assertion and node usage. (Get_Pragma): Update the Is_CDG flag to include Abstract_State, Initializes and Refined_State. (Refined_State_Pragma): Removed. (Set_Contract): Package and package bodies now have a contract. (Set_Finalizer): Update the assertion and node usage. (Set_Refined_State_Pragma): Removed. (Write_Field8_Name): Remove the output for Refined_State_Pragma. (Write_Field24_Name): Remove the output for Finalizer. Package and package bodies now have a contract. (Write_Field28_Name): Add output for Finalizer. * einfo.ads: Update the documentation and usage in entities of attribute Contract. Update the node position and usage in entities of attribute Finalizer. Remove the documentation and usage in entities for attribute Refined_State_Pragma. (Refined_State_Pragma): Removed along with pragma Inline. (Set_Refined_State_Pragma): Removed along with pragma Inline. * par-prag.adb: Add Initializes to the pragmas that do not require special processing by the parser. * sem_ch3.adb (Analyze_Declarations): Add local variable Prag. Update the retrieval of pragma Refined_State. Analyze aspect/pragma Initializes at the end of the visible declarations of the related package. * sem_ch6.adb (Analyze_Subprogram_Body_Contract): Add local variables Ref_Depends and Ref_Global. Analyze pragmas Refined_Global and Refined_Depends in that order. (Analyze_Subprogram_Contract): Add local variables Depends and Global. Analyze pragmas Global and Depends in that order. * sem_ch7.adb (Analyze_Package_Body_Helper): Package bodies now have a contract. Move the analysis of the aspect specifications after the defining entity has been decorated. (Analyze_Package_Declaration): Packages now have a contract. Move the analysis of the aspect specifications after the defining entity has been decorated. * sem_ch12.adb (Analyze_Generic_Package_Declaration): Packages now have contracts. * sem_ch13.adb (Analyze_Pragma): Code cleanup for aspect Abstract_State. Add processing for aspect Initializes. (Check_Aspect_At_Freeze_Point): Add an entry for Initializes. * sem_prag.adb: Use Get_Pragma_Arg to extract the expression of a pragma argument. Add an entry in table Sig_Flags for Initializes. (Analyze_Initializes_In_Decl_Part): New routine. (Analyze_Pragma): Check the declaration order of pragmas Abstract_State and Initializes. Abstract_State is now part of the package contract. Analyze pragma Initializes. Check for duplicate Refined_State pragma. Refined_State is now part of the package contract. (Check_Declaration_Order): New routine. (Check_Test_Case): Alphabetized. * sem_prag.ads (Analyze_Initializes_In_Decl_Part): New routine. * sem_util.adb (Add_Contract_Item): Rename formal Subp_Id to Id. This routine can now support contracts on packages and package bodies. * sem_util.ads (Add_Contract_Item): Rename formal Subp_Id to Id. Update comment on usage. * sinfo.ads: Update the usage of N_Contract nodes. * snames.ads-tmpl: Add predefined name Initializes. Add new pragma id for Initializes. From-SVN: r203522
2013-07-05aspects.adb: Add an entry for SPARK_Mode in table Canonical_Aspect.Hristian Kirtchev1-0/+12
2013-07-05 Hristian Kirtchev <kirtchev@adacore.com> * aspects.adb: Add an entry for SPARK_Mode in table Canonical_Aspect. * aspects.ads: Add an entry for SPARK_Mode in tables Aspect_Id, Aspect_Argument, Aspect_Names. * atree.adb (Node32): New routine. (Set_Node32): New routine. * atree.ads (Node32): New routine. (Set_Node32): New routine. * einfo.adb: Node32 is now used as SPARK_Mode_Pragmas. (Set_SPARK_Mode_Pragmas): New routine. (SPARK_Mode_Pragmas): New routine. (Write_Field32_Name): Add and entry for SPARK_Modes. * einfo.ads: Add attribute SPARK_Mode_Pragmas along with usage in various entities. (Set_SPARK_Mode_Pragmas): New routine and pragma Inline. (SPARK_Mode_Pragmas): New routine and pragma Inline. * gnat_rm.texi: Add sections explaining the syntax and semantics of aspect/pragma SPARK_Mode. * gnat_ugn.texi: Add pragma SPARK_Mode to the list of configuration pragmas. * lib.adb (Set_SPARK_Mode_Pragma): New routine. (SPARK_Mode_Pragma): New routine. * lib.ads: Alphabetize the comments on fields of record Unit_Record. Add new field SPARK_Mode_Pragma along with comment on its usage. Update the layout of record Unit_Record. (Set_SPARK_Mode_Pragma): New routine and pragma Inline. (SPARK_Mode_Pragma): New routine and pragma Inline. * lib-load.adb (Create_Dummy_Package_Unit): Initialize field SPARK_Mode_Pragma. (Load_Main_Source): Initialize field SPARK_Mode_Pragma. (Load_Unit): Initialize field SPARK_Mode_Pragma. * lib-writ.adb (Add_Preprocessing_Dependency): Initialize field SPARK_Mode_Pragma. (Ensure_System_Dependency): Initialize field SPARK_Mode_Pragma. * opt.ads: Alphabetize verification flags. Store the compilation-wide SPARK mode in variable Global_SPARK_Mode. * par-prag.adb: Pragma SPARK_Mode does not need special processing by the parser. * sem_ch13.adb (Analyze_Aspect_Specifications): Convert aspect SPARK_Mode into a pragma. (Check_Aspect_At_Freeze_Point): Aspect SPARK_Mode does not need delayed processing. * sem_prag.adb: Add an entry for SPARK_Mode in table Sig_Flags. (Analyze_Pragma): Add processing for pragma SPARK_Mode. (Get_SPARK_Mode_Id): New routine. (Is_Elaboration_SPARK_Mode): New routine. (Is_Private_SPARK_Mode): New routine. * sem_prag.ads (Get_SPARK_Mode_Id): New routine. (Is_Elaboration_SPARK_Mode): New routine. (Is_Private_SPARK_Mode): New routine. * sinfo.ads: Update the comment on the usage of field Next_Pragma. * snames.ads-tmpl: Add new predefined name for SPARK_Mode and Auto. Add new pragma Id for SPARK_Mode. * types.ads: Add new type SPARK_Mode_Id. From-SVN: r200711
2013-04-11[multiple changes]Arnaud Charlet1-1/+13
2013-04-11 Robert Dewar <dewar@adacore.com> * exp_attr.adb, sem_res.adb, sem_attr.adb: Minor reformatting. 2013-04-11 Robert Dewar <dewar@adacore.com> * atree.adb, atree.ads (Node31): New function. (Set_Node31): New procedure. 2013-04-11 Robert Dewar <dewar@adacore.com> * errout.ads: Minor typo correction. 2013-04-11 Javier Miranda <miranda@adacore.com> * einfo.ad[sb] (Thunk_Entity/Set_Thunk_Entity): New attribute. From-SVN: r197792
2013-01-29[multiple changes]Arnaud Charlet1-1/+13
2013-01-29 Robert Dewar <dewar@adacore.com> * atree.ads, atree.adb (Node30): New function. (Set_Node30): New procedure. (Num_Extension_Nodes): Change to 5 (activate new fields/flags). * atree.h: Add macros for Field30 and Node30. * einfo.ads, einfo.adb: Move some fields to avoid duplexing. * treepr.adb (Print_Entity_Information): Print fields 30-35. 2013-01-29 Robert Dewar <dewar@adacore.com> * sem_prag.adb (Analyze_Pragma, case Interface): Consider to be a violation of No_Obsolescent_Features even in Ada 95. Also generates a warning in -gnatwj mode. (Analyze_Pragma, case Interface_Name): Generates a warning in -gnatwj mode. * gnat_ugn.texi: Additional documentation on -gnatwj and pragma Interface[_Name]. 2013-01-29 Vincent Celier <celier@adacore.com> * snames.ads-tmpl: Add new standard name Trailing_Switches. 2013-01-29 Ed Schonberg <schonberg@adacore.com> * sem_disp.adb (Check_Controlling_Type): If a designated type T of an anonymous access type is a limited view of a tagged type, it can be a controlling type only if the subprogram is in the same scope as T. 2013-01-29 Vincent Celier <celier@adacore.com> * gnatcmd.adb: Use the project where the config pragmas file is declared to get its path. 2013-01-29 Vincent Celier <celier@adacore.com> * prj-attr.adb: New attribute Linker'Trailing_Switches. From-SVN: r195535
2013-01-04[multiple changes]Arnaud Charlet1-2/+988
2013-01-04 Robert Dewar <dewar@adacore.com> * warnsw.adb: Minor fixes to -gnatw.d handling. 2013-01-04 Robert Dewar <dewar@adacore.com> * einfo.adb, atree.adb: Enlarge entities to make 63 more flags, 6 more fields. 2013-01-04 Joel Brobecker <brobecker@adacore.com brobecker> * gnat_ugn.texi: Fix typo. 2013-01-04 Robert Dewar <dewar@adacore.com> * gnat_rm.texi: Document alignment choice for subtypes. 2013-01-04 Robert Dewar <dewar@adacore.com> * validsw.ads: Minor fix to comment. 2013-01-04 Doug Rupp <rupp@adacore.com> * Makefile.rtl (GNATRTL_NONTASKING_OBJS, GNATRTL_ALTIVEC_OBJS): Factor g-al* objects. * gcc-interface/Makefile.in (ADA_EXCLUDE_SRCS): Add g-al* sources. (GNATRTL_ALTIVEC_OBJS): Override to null for VMS. Rename leon vxworks toolchain as leon-wrs-vxworks. * gcc-interface/Make-lang.in: Update dependencies 2013-01-04 Pascal Obry <obry@adacore.com> * prj.ads (For_Each_Source): Add Locally_Removed parameter. (Source_Iterator): Add Locally_Removed field. * prj.adb (For_Each_Source): Ignore Locally_Removed files if needed. (Next): Likewise. 2013-01-04 Robert Dewar <dewar@adacore.com> * exp_attr.adb: Minor reformatting. 2013-01-04 Robert Dewar <dewar@adacore.com> * checks.adb (Insert_Valid_Check): Fix handling of renamed packed array element. * exp_ch4.adb (Expand_Concatenate): Fix some missing parent fields in generated code. * exp_util.adb (Side_Effect_Free): Improve detection of cases needing renaming. 2013-01-04 Robert Dewar <dewar@adacore.com> * sinfo.ads: Clean up order of N_xxx subtypes 2013-01-04 Vincent Celier <celier@adacore.com> * prj-conf.adb (Check_Target): Allow --autoconf= with no target. From-SVN: r194896
2012-12-05[multiple changes]Arnaud Charlet1-2/+5
2012-12-05 Thomas Quinot <quinot@adacore.com> * exp_dist.adb: Minor reformatting. 2012-12-05 Tristan Gingold <gingold@adacore.com> * Make-generated.in: Remove the VMS host specific part, as VMS compilers aren't built anymore on VMS. 2012-12-05 Thomas Quinot <quinot@adacore.com> * sem.adb, errout.ads, atree.adb, atree.ads (Check_Error_Detected): Only return quietly if a serious error of configurable run time violation has been found. 2012-12-05 Yannick Moy <moy@adacore.com> * sem_res.adb (Resolve_Type_Conversion): In Alfa_Mode, do not apply conversion checks. From-SVN: r194205
2012-12-05[multiple changes]Arnaud Charlet1-0/+1
2012-12-05 Robert Dewar <dewar@adacore.com> * gnatchop.adb, sem_attr.ads, sem_ch4.adb, sem_ch6.adb, exp_disp.adb, atree.adb, sem_eval.adb: Minor reformatting. 2012-12-05 Yannick Moy <moy@adacore.com> * uintp.adb (UI_Div_Rem): Correct algorithm D to remove potential overflow. 2012-12-05 Robert Dewar <dewar@adacore.com> * exp_ch4.adb (Expand_N_Op_Mod): Minor comment additions. (Expand_N_Op_Rem): Ditto. 2012-12-05 Robert Dewar <dewar@adacore.com> * sem_attr.adb: Minor reformatting. 2012-12-05 Robert Dewar <dewar@adacore.com> * usage.adb: Update lines for -gnato? switch. From-SVN: r194202
2012-11-06[multiple changes]Arnaud Charlet1-0/+14
2012-11-06 Tristan Gingold <gingold@adacore.com> * sem_ch9.adb (Analyze_Protected_Type_Declaration): Fix thinko in previous commit. 2012-11-06 Jose Ruiz <ruiz@adacore.com> * ali.adb (Scan_ALI): Fix parsing mechanism for -fstack-check. 2012-11-06 Thomas Quinot <quinot@adacore.com> * atree.adb, atree.ads, einfo.adb, errout.adb, errout.ads, erroutc.adb, erroutc.ads, errutil.adb, errutil.ads, err_vars.ads, expander.adb, exp_ch13.adb, exp_ch2.adb, exp_ch6.adb, exp_dist.adb, fe.h, fmap.adb, fmap.ads, gprep.adb, makeutl.adb, osint.adb, osint.ads, par_sco.adb, prepcomp.adb, prj-part.adb, prj-proc.adb, scng.adb, sdefault.ads, sem_ch10.adb, sem_ch13.adb, sem_ch2.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_dim.adb, sem_elab.adb, sem_eval.adb, sem_intr.adb, sem_prag.adb, sem_type.adb, sem_warn.adb, stylesw.adb, stylesw.ads, targparm.adb, targparm.ads (Cascaded_Error): Rename to more descriptive name 'Check_Error_Detected'. Add calls to Check_Error_Detected at places where semantic analysis is abandoned assuming a previously detected error. From-SVN: r193235
2012-03-19[multiple changes]Arnaud Charlet1-3/+3
2012-03-19 Yannick Moy <moy@adacore.com> * sem_ch6.adb: Minor code clean up. 2012-03-19 Vincent Celier <celier@adacore.com> * make.adb (Scan_Make_Arg): Make sure all significant -m switches on the command line are counted. 2012-03-19 Robert Dewar <dewar@adacore.com> * sem_elab.adb (Generate_Elab_Warnings): Fix spec, fix attribute reference case 2012-03-19 Robert Dewar <dewar@adacore.com> * par-ch4.adb (Check_Bad_Exp): New procedure 2012-03-19 Robert Dewar <dewar@adacore.com> * exp_attr.adb, sem_attr.adb, sem_attr.ads, snames.ads-tmpl: Add initial framework for Valid_Scalars attribute. 2012-03-19 Robert Dewar <dewar@adacore.com> * scng.adb (Scan): Recognize incorrect preprocessor directive 2012-03-19 Robert Dewar <dewar@adacore.com> * atree.adb (Allocate_Initialize_Node): Use Num_Extension_Nodes * atree.ads (Num_Extension_Nodes): New variable * debug.adb: New debug flag -gnatd.N * gnat1drv.adb (Adjust_Global_Switches): Adjust Num_Extension_Nodes if -gnatd.N set 2012-03-19 Eric Botcazou <ebotcazou@adacore.com> * einfo.ads: Minor update to First_Rep_Item and Has_Gigi_Rep_Item descriptions. 2012-03-19 Robert Dewar <dewar@adacore.com> * opt.ads: Remove HLO_Active flag. * sem.adb: Remove call of high level optimizer. * sem.ads (New_Nodes_OK): Removed. * sem_ch10.adb: Remove references to New_Nodes_OK. * switch-c.adb: Remove handling of -gnatH switch. From-SVN: r185528
2011-11-04[multiple changes]Arnaud Charlet1-0/+9
2011-11-04 Yannick Moy <moy@adacore.com> * atree.adb, atree.ads (Set_Original_Node): New set procedure. * sem_ch13.adb (Analyze_Aspect_Specifications/Pre_Post_Aspects): In ASIS mode, no splitting of aspects between conjuncts. (Analyze_Aspect_Specifications/Aspect_Test_Case): Make pragma expressions refer to the original aspect expressions through the Original_Node link. This is used in semantic analysis for ASIS mode, so that the original expression also gets analyzed. * sem_prag.adb (Preanalyze_TC_Args, Check_Precondition_Postcondition, Analyze_Pragma/Pragma_Test_Case): In ASIS mode, for a pragma generated from a source aspect, also analyze the original aspect expression. (Check_Expr_Is_Static_Expression): New procedure similar to existing procedure Check_Arg_Is_Static_Expression, except called on expression inside pragma. 2011-11-04 Tristan Gingold <gingold@adacore.com> * prj-env.adb, prj-env.ads (Find_Name_In_Path): New function, from Find_Project.Try_Path_Name. (Find_Project): Use Find_Name_In_Path to implement Try_Path_Name. 2011-11-04 Eric Botcazou <ebotcazou@adacore.com> * s-atocou.ads (Atomic_Counter): Remove redundant pragma Volatile. 2011-11-04 Pascal Obry <obry@adacore.com> * projects.texi: Add short description for qualifiers aggregate and aggregate library. 2011-11-04 Matthew Heaney <heaney@adacore.com> * Makefile.rtl, impunit.adb: Added a-cogeso.ad[sb] * a-cgaaso.adb: Replaced implementation with instantiation of Generic_Sort. * a-cogeso.ad[sb] This is the new Ada 2012 unit Ada.Containers.Generic_Sort From-SVN: r180948
2011-08-29atree.ads, atree.adb (Copy_Separate_List): New function that applies ↵Ed Schonberg1-2/+20
Copy_Separate_Tree to a list of nodes. 2011-08-29 Ed Schonberg <schonberg@adacore.com> * atree.ads, atree.adb (Copy_Separate_List): New function that applies Copy_Separate_Tree to a list of nodes. Used to create disjoint copies of statement lists that may contain local declarations. (Expand_N_Timed_Entry_Call): Use Copy_Separate_List to duplicate the triggering statements needed for the expansion of this construct, when the trigger is a dispatching call to a synchronized primitive. From-SVN: r178169
2011-08-03a-except.adb, [...] (Raise_From_Controlled_Operation): Rewritten to create ↵Hristian Kirtchev1-1/+18
the message strings when... 2011-08-03 Hristian Kirtchev <kirtchev@adacore.com> * a-except.adb, a-except-2005.adb (Raise_From_Controlled_Operation): Rewritten to create the message strings when the exception is not raised by an abort during finalization. * a-except.ads, a-except-2005.ads: Add pragma Export for procedure Raise_From_Controlled_Operation and update its associated comment. * a-fihema.ads, a-fihema.adb: New GNAT unit. Ada.Finalization.Heap_Management provides key functionality associated with controlled objects on the heap, their creation, finalization and reclamation. Type Finalization_Collection is effectively a wrapper which sits ontop of a storage pool and performs all necessary bookkeeping for all the objects it contains. Each access-to-controlled or access-to-class-wide type receives a collection as part of its expansion. The compiler generates buffer code and invokes Allocate / Deallocate to create and destroy allocated controlled objects. * a-finali.adb ("="): Removed. * a-finali.ads ("="): Removed. Controlled types no longer carry hidden fields Prev and Next. * ali.adb (Scan_ALI): Add parsing code to process PF / Has_Finalizer. A library unit with at least one controlled object on the library level has a special finalizer which is invoked by the binder. To signal this, ali files carry field PF. * ali.ads: New field in type Unit_Record called Has_Finalizer. Add associated comment on field usage. * a-tags.adb (Get_RC_Offset): Removed. (Needs_Finalization): New routine. * a-tags.ads: Update the structure of the GNAT dispatch tables. Dispatch tables now carry field Needs_Finalization which provides runtime indication whether a type is controlled or has controlled components or both. Remove field RC_Offset. (Get_RC_Offset): Removed along with its associated pragma Export. Since tagged types with controlled components no longer carry hidden field _controller, the special mechanism to retrieve its location is no longer needed. (Needs_Finalization): New routine. * atree.ads, atree.adb (Elist24): New routine. (Set_Elist24): New routine. * atree.h: Add a define clause for Elist24. * bindgen.adb New library-level variable Lib_Final_Built. (Gen_Adafinal_Ada): Reimplemented. Depending on the restrictions or the presence of a VM target, the routine generates calls to the proper library finalization routine. (Gen_Adainit_Ada): Import Finalize_Library_Objects only on non-VM targets. Set the correct library finalization routine depending on whether the library has controlled objects or this is a VM compilation. (Gen_Finalize_Library_Ada): New routine. This procedure generates calls to library-level finalizers of compiled units in reverse order of elaboration. It also produces exception management code and reraises a potential exception after all units have been finalized. (Gen_Finalize_Library_C): New routine. This procedure generates calls to library-level finalizers of compiled units in reverse order of elaboration. (Gen_Finalize_Library_Defs_C): New routine. This procedure generates the definitions of all library-level finalizers available to the compilation (Gen_Main_Ada): Directly call Adafinal which now contails all target dependent code. (Gen_Main_C): Add new local constant Needs_Library_Finalization. Call System.Standard_Library.Adafinal directly. If the library needs finalization actions, create the sequence of finalization calls. (Gen_Output_File_Ada): Alphabetize local variables and constants. Generate a with clause for System.Soft_Links when compiling for a VM. Remove the code which imports System.Standard_Library.Adafinal as Do_Finalize. Generate the library finalization routine. (Gen_Output_File_C): Add new local constant Needs_Library_Finalization. If the library needs finalization actions, create all the definitions of library- level finalizers. (Has_Finalizer): New routine. Determines whether at least one compiled unit has a library-level finalizer. Add type Qualification_Mode. (Set_Unit_Name): Add a formal which controls the replacement of a dot. * einfo.adb: New usage of field 15 as Return_Flag. Remove Finalization_Chain_Entity from the usages of field 19. Remove Associated_Final_Chain from the usages of field 23. New usage of field 23 as Associated_Collection. New usage of field 24 as Finalizer. New usage of flag 252 as Is_Processed_Transient. (Associated_Final_Chain): Removed. (Associated_Collection): New routine. (Finalization_Chain_Entity): Removed. (Finalizer): New routine. (Is_Finalizer): New routine. (Is_Processed_Transient): New routine. (Return_Flag): New routine. (Set_Associated_Final_Chain): Removed. (Set_Associated_Collection): New routine. (Set_Finalization_Chain_Entity): Removed. (Set_Finalizer): New routine. (Set_Is_Processed_Transient): New routine. (Set_Return_Flag): New routine. (Write_Entity_Flags): Include Is_Processed_Transient to the list of displayed flags. (Write_Field8_Name): Alphabetize the output. (Write_Field11_Name): Alphabetize the output. (Write_Field12_Name): Alphabetize the output. (Write_Field13_Name): Alphabetize the output. (Write_Field14_Name): Alphabetize the output. (Write_Field15_Name): Alphabetize the output. (Write_Field16_Name): Alphabetize the output. (Write_Field17_Name): Alphabetize the output. (Write_Field18_Name): Alphabetize the output. (Write_Field19_Name): Alphabetize the output. Remove the output of Finalization_Chain_Entity. (Write_Field20_Name): Alphabetize the output. (Write_Field21_Name): Alphabetize the output. (Write_Field22_Name): Alphabetize the output. (Write_Field23_Name): Alphabetize the output. Remove the output of Associated_Final_Chain. Add output for Associated_Collection. (Write_Field24_Name): Alphabetize the output. (Write_Field25_Name): Add output for Finalizer. (Write_Field26_Name): Alphabetize the output. (Write_Field27_Name): Alphabetize the output. (Write_Field28_Name): Alphabetize the output. * einfo.ads: Add new field description for Associated_Collection and its uses in nodes. Remove Associated_Final_Chain and its uses in nodes. Remove Finalization_Chain_Entity and its uses in nodes. Add new field description for Finalizer and its uses in nodes. Add new synthesized attribute Is_Finalizer. Add new flag description for Is_Processed_Transient and its uses in nodes. Add new field description for Return_Flag and its uses in nodes. (Associated_Final_Chain): Removed along with its pragma Inline. (Associated_Collection): New routine and pragma Inline. (Finalization_Chain_Entity): Removed along with its pragma Inline. (Finalizer): New routine and pragma Inline. (Is_Finalizer): New routine and pragma Inline. (Is_Processed_Transient): New routine and pragma Inline. (Return_Flag): New routine and pragma Inline. (Set_Associated_Final_Chain): Removed along with its pragma Inline. (Set_Associated_Collection): New routine and pragma Inline. (Set_Finalization_Chain_Entity): Removed along with its pragma Inline. (Set_Finalizer): New routine and pragma Inline. (Set_Is_Processed_Transient): New routine and pragma Inline. (Set_Return_Flag): New routine and pragma Inline. * exp_aggr.adb: Alphabetize subprograms. (Build_Array_Aggr_Code): Remove formal Flist and its associated comment. (Build_Record_Aggr_Code): Remove formals Flist and Obj along with their associated comments. Remove local variables External_Final_List and Attach. Rename Ctrl_Stuff_Done to Finalization_Done. Rename local variable A to Ancestor. Remove the retrieval of finalization lists. Update the call to Make_Adjust_Call. (Convert_Aggr_In_Allocator): Remove the retrieval of finalization lists. Update the call to Late_Expansion. (Convert_Aggr_In_Assignment): Update the call to Late_Expansion. (Convert_Aggr_In_Object_Decl): Update the call to Late_Expansion. (Gen_Assign): Remove the retrieval of the finalization list used to build the assignment. Update the calls to Make_Init_Call and Make_Adjust_Call. (Gen_Ctrl_Actions_For_Aggr): Renamed to Generate_Finalization_Actions. Remove the mechanism to determine attachment levels and finalization list retrieval. Remove the processing for coextensions. (Init_Controller): Removed. Controllers no longer exist. (Late_Expansion): Remove formals Flist and Obj along with their associated comments. Update the calls to Build_Record_Aggr_Code and Build_Array_Aggr_Code. * exp_ch13.adb (Expand_N_Free_Statement): New routine. (Expand_N_Freeze_Entity): Add special processing for finalizers which appear in entry bodies, protected subprograms and task bodies. * exp_ch13.ads (Expand_N_Free_Statement): New routine. * exp_ch3.adb (Add_Final_Chain): Removed. (Build_Array_Init_Proc): Alphabetize local variables. (Build_Assignment): Alphabetize local variables. Update the call to Maked_Adjust_Call. (Build_Class_Wide_Master): Rename local variables to better reflect their role. (Build_Discriminant_Assignments): Code reformatting. (Build_Init_Call_Thru): Code reformatting. (Build_Init_Procedure): Code reformatting. Generate a special version of Deep_Finalize which is capable of finalizing all initialized components and ignore the rest. (Build_Init_Statements): Rename local variables to better reflect their role. Reimplement the mechanism to include the creation and update of an index variable called a "counter". It is used as a bookmark for tracing initialized and non-initialized components. (Build_Initialization_Call): Remove local variable Controller_Typ. Alphabetize all local variables. Remove the initialization of the record controller and update the call to Make_Init_Call. (Build_Record_Init_Proc): Rename formal Pe to Rec_Ent. New local variable Counter. (Constrain_Array): Alphabetize. (Expand_Freeze_Array_Type): Create a collection instead of a finalization list. (Expand_Freeze_Class_Wide_Type): New routine. Creates TSS primitive Finalize_Address which is used in conjunction with allocated controlled objects. (Expand_N_Object_Declaration): Remove the creation of a finalization list for anonymous access types. Update the calls to Make_Init_Call and Make_Adjust_Call. (Expand_Freeze_Record_Type): Remove local variable Flist. Remove the retrieval of finalization lists. Remove the expansion of the record controller. Create TSS primitive Finalize_Address used in conjunction with controlled objects on the heap. Create finalization collections for access-to-controlled record components. (Expand_Record_Controller): Removed. (Freeze_Type): Remove the freezing of record controllers. Freezing of class-wide types now requires additional processing. Create finalization collections for access-to-controlled types. (Increment_Counter): New routine. (Make_Counter): New routine. (Make_Eq_If): Remove the mention of Name_uController. (Make_Predefined_Primitive_Specs): There is no longer need to skip types coming from System.Finalization_Root. (Predef_Deep_Spec): Reimplemented to reflect the new parameter profiles. (Predefined_Primitive_Bodies): There is no longer need to skip types coming from System.Finalization_Root. (Stream_Operation_OK): Do not generate stream routines for type Ada.Finalization.Heap_Management.Finalization_Collection. * exp_ch3.ads: Alphabetize subprograms. * exp_ch4.adb: Remove with and use clause for Sem_Ch8. Add with and use clause for Lib. (Complete_Coextension_Finalization): Removed. (Complete_Controlled_Allocation): New routine. Create a finalization collection for anonymous access-to-controlled types. Create a custom Allocate which interfaces with the back end and the machinery in Heap_Management. (Expand_Allocator_Expression): Add necessary calls to Complete_Controlled_Allocation. Remove the retrieval of finalization lists. Update the calls to Make_Adjust_Call. Generate a call to Ada.Finalization.Heap_Management.Set_Finalize_Address_Ptr to decorate the associated collection. (Expand_N_Allocator): Remove the processing for dynamic coextensions. Code clean up. Remove the retrieval of finalization lists and attachment levels. Update the call to Make_Init_Call. Generate a call to Ada.Finalization.Heap_Management.Set_Finalize_Address_Ptr to decorate the associated collection. (Get_Allocator_Final_List): Removed. Finalization lists are not available. (Suitable_Element): Remove the mention of Name_uController. * exp_ch5.adb: Remove with and use clauses for Ttypes and Uintp. (Make_Tag_Ctrl_Assignment): Rewritten to simply do a finalization of the left hand side, carry out the assignment and adjust the left hand side. * exp_ch6.adb (Add_Final_List_Actual_To_Build_In_Place_Call): Removed. (Add_Collection_Actual_To_Build_In_Place_Call): New routine. (BIP_Formal_Suffix): Rename BIP_Final_List and BIPfinallist to BIP_Collection and BIPcollection. (Build_Heap_Allocator): New routine used to allocate the return object of a build-in-place function onto a collection. (Expand_Ctrl_Function_Call): Moved from Exp_Ch7. (Expand_Call): Do not replace direct calls to Deep routines with their aliases. (Expand_N_Extended_Return_Statement): Give all variables shorter names and update their occurrences. Add a special return flag to monitor the [ab]normal execution of the function. The flag is set right before the return statement. Rewrite the mechanism used to allocate a build-in-place return object on the heap or on a storage pool. (Is_Direct_Deep_Call): New routine. (Make_Build_In_Place_Call_In_Allocator): Add a collection to a build-in-place function call instead of a final list. Build a call to Set_Finalize_Address_Ptr to decorate the associated collection. (Make_Build_In_Place_Call_In_Anonymous_Context): Create a temporary in order to name the build-in-place function call's result for later finalization. Add a collection to a build-in-place function call instead of a final list. (Make_Build_In_Place_Call_In_Assignment): Add a collection to a build-in-place function call instead of a final list. Remove the code which moves one final list and transforms it into the actual in a nested build-in-place call. (Make_Build_In_Place_Call_In_Object_Declaration): Add a collection to a build-in-place function call instead of a final list. (Move_Final_List): Removed. (Needs_BIP_Collection): New routine. (Needs_BIP_Final_List): Removed. * exp_ch6.ads: Replace BIP_Final_List with BIP_Collection in enumeration type BIP_Formal_Kind. Update the related comment. (Needs_BIP_Collection): New routine. (Needs_BIP_Final_List): Removed. * exp_ch7.adb: Add with and use clauses for Elists, Exp_Ch6, Stringt and Ttypes. Remove with and use clauses for Sem_Type. Alphabetize the majority of subprograms in this unit. Add Name_Finalize_Address to array Name_Of and TSS_Finalize_Address to array Deep_Name_Of. (Build_Adjust_Or_Finalize_Statements): Create the adjust or finalization statements for an array type. (Build_Adjust_Statements): Create the adjust statements for a record type. (Build_Cleanup_Statements): New routine. A procedure which given any construct containing asynchronous calls, references to _master, or is a task body, a task allocation or a protected body produces the necessary runtime calls to clean up these constructs. (Build_Exception_Handler): New routine. (Build_Final_List): Removed. (Build_Finalization_Collection): New routine. A core procedure which creates a collection to service heap allocated controlled objects associated with an access-to-controlled type. (Build_Finalize_Statements): Create the finalization statements for a record types. (Build_Finalizer): New routine. A core procedure which given any construct with declarations and/or statements detects all objects which need any type of clean up (controlled objects, protected objects) and generates all necessary code to clean up the said objects in the proper order. (Build_Finalizer_Call): New routine. (Build_Initialize_Statements): Create the initialization statements for an array type. The generated routine contains code to finalize partially initialized arrays. (Build_Object_Declarations): New routine. (Build_Raise_Statement): New routine. (Clean_Simple_Protected_Objects): Removed. (Controller_Component): Removed. (Enclosing_Function): New routine. (Expand_Cleanup_Actions): Create a finalizer for a construct which has either declarations or statements or both. (Expand_N_Package_Body): Create a finalizer for a non-generic package. (Expand_N_Package_Declaration): Create a finalizer for a non-generic package. (Find_Final_List): Removed. (Global_Flist_Ref): Removed. (In_Finalization_Root): Removed. (Insert_Actions_In_Scope_Around): Determine the range of the transient scope in terms of tree nodes. Process all transient variables within that range. (Make_Adjust_Call): Rewritten. There is no longer an attach call generated after the adjust. (Make_Attach_Call): Removed. (Make_Call): New routine. (Make_Clean): Removed. (Make_Deep_Array_Body): Rewritten to simply invoke the appropriate build routines. (Make_Deep_Proc): Rewritten to generate the new profile signature used in Deep routines. (Make_Deep_Record_Body): Rewritten to simply invoke the appropriate build routines. (Make_Final_Call): Modified to simply create a call to either Deep_Finalize or Finalize. (Make_Finalize_Address_Body): New routine. (Make_Finalize_Address_Stmts): New routine. A function which produces TSS primitive Finalize_Address used in conjunction with heap allocated controlled objects. (Make_Handler_For_Ctrl_Operation): Add specialized code for .NET/JVM. (Make_Init_Call): Rewritten. There is no longer an attach call generated after initialization. (Make_Local_Deep_Finalize): New routine. (Make_Set_Finalize_Address_Ptr_Call): New routine. (Make_Transient_Block): Remove the finalization list retrieval and manipulation. (Needs_Finalization): Moved to Exp_Util. (Parent_Field_Type): New routine. (Preprocess_Components): New routine. (Process_Transient_Objects): New routine. (Wrap_HSS_In_Block): New routine. (Wrap_Transient_Declaration): Remove finalization list management and controller insertion. (Wrap_Transient_Expression): Code reformatting. (Wrap_Transient_Statement): Code reformatting. * exp_ch7.ads (Build_Final_List): Removed. (Build_Finalization_Collection): New routine. (Build_Raise_Statement): New routine. (Controller_Component): Removed. (Expand_Ctrl_Function_Call): Moved to Exp_Ch6. (Find_Final_List): Removed. (In_Finalization_Root): Removed. (Is_Simple_Protected_Type): Update related comment. (Make_Adjust_Call): New parameter profile and associated comments. (Make_Attach_Call): Removed. (Make_Final_Call): New parameter profile and associated comments. (Make_Finalize_Address_Body): New routine. (Make_Init_Call): New parameter profile and associated comments. (Make_Local_Deep_Finalize): New routine. (Make_Set_Finalize_Address_Ptr_Call): New routine. (Needs_Finalization): Moved to Exp_Util. * exp_ch9.adb (Add_Object_Pointer): Code reformatting. (Expand_N_Protected_Body): Remove the handling of finalization lists. (Find_Protection_Type): Moved to Exp_Util. * exp_disp.adb: Remove with and use clauses for Exp_Ch7. (Make_DT): Update sequence of dispatch table initialization. Remove the initialization of field RC_Offset. Add initialization of field Needs_ Finalization. * exp_intr.adb (Expand_Unc_Deallocation): Code reformatting. Reimplement how an object is first finalized, then deallocated. * exp_strm.adb (Build_Record_Or_Elementary_Input_Function): Code reformatting. * exp_tss.ads: Add special suffix for TSS primitive Finalize_Address. Register TSS_Finalize_Address with type TSS_Names. * exp_util.adb (Build_Allocate_Deallocate_Proc): New routine. This core procedure provides the interface between an allocation / deallocation and the support machinery in Ada.Finalization.Heap_Management. (Find_Init_Call): Code reformatting. (Find_Init_Call_In_List): Code reformatting. (Find_Protection_Type): Moved from Exp_Ch9. (Find_Prim_Op): Reimplement to add preference of recovered primitive. (Has_Controlled_Coextensions): Removed. (Has_Controlled_Objects): New routine. (In_Library_Level_Package_Body): New routine. (Insert_Action_After): New routine. (Is_Finalizable_Transient): New routine. This predicate determines whether an object declaration is one of the many variants of controlled transients. (Is_Null_Access_BIP_Func_Call): New routine. (Is_Non_BIP_Func_Call): New routine. (Is_Related_To_Func_Return): New routine. (Needs_Finalization): Moved from Exp_Ch7. * exp_util.ads (Build_Allocate_Deallocate_Proc): New routine. (Find_Protection_Type): Moved from Exp_Ch9. (Has_Controlled_Coextensions): Removed. (Has_Controlled_Objects): New routine. (In_Library_Level_Package_Body): New routine. (Insert_Action_After): New routine. (Is_Finalizable_Transient): New routine. (Is_Null_Access_BIP_Func_Call): New routine. (Is_Non_BIP_Func_Call): New routine. (Is_Related_To_Func_Return): New routine. (Needs_Finalization): Moved from Exp_ch7. * expander.adb (Expand): Add a case for N_Free_Statement. * freeze.adb (Freeze_All): Replace the generation of a finalization list with a collection for access-to-controlled types. (Freeze_Entity): Code reformatting. (Freeze_Record_Type): Remove the freezing of a record controller component. (Freeze_Subprogram): Code reformatting. * inline.adb (Cleanup_Scopes): Remove the reset of the scope finalization list. * lib-writ.adb (Write_Unit_Information): Output "PF" when a package has a library-level finalizer. * lib-writ.ads: Add "PF" to the sequence of unit attributes. * a-filico.ads, a-filico.adb, s-finimp.ads, s-finimp.adb: Removed. * Makefile.rtl: Remove a-filico and s-finimp from the list of object files. Add a-fihema to the list of object files. * par-ch4.adb: Alphabetize the associations in type Is_Parameterless_Attribute. * rtsfind.ads: Ada.Finalization_List.Controller and System.Finalization_Implementation are no longer a GNAT unit. Update the range of type Ada_Finalization_Child. Remove the following recoverable entities: RE_Attach_To_Final_List RE_Deep_Tag_Attach RE_Finalize_List RE_Finalize_One RE_Finalizable_Ptr_Ptr RE_Global_Final_List RE_Limited_Record_Controller RE_List_Controller RE_Move_Final_List RE_Record_Controller RE_Simple_List_Controller Add the following recoverable entities: RE_Add_Offset_To_Address RE_Allocate RE_Base_Pool RE_Deallocate RE_Exception_Identity RE_Finalization_Collection RE_Finalization_Collection_Ptr RE_Needs_Finalization RE_Save_Library_Occurrence RE_Set_Finalize_Address_Ptr RE_Set_Storage_Pool_Ptr RE_Storage_Count * sem_aggr.adb (Resolve_Record_Aggregate): Remove mention of Name_uController. * sem_aux.adb (First_Discriminant): Remove mention of Name_uController. (First_Stored_Discriminant): Remove the mention of Name_uController. * sem_aux.ads: Comment reformatting. * sem_ch10.adb (Build_Chain): Signal the class-wide creation machinery to redecorate an already existing class-wide type. (Decorate_Tagged_Type): New parameter profile and associated comment. Create a "shadow class-wide type" for a shadow entity. * sem_ch11.adb (Analyze_Exception_Handlers): Remove the dubious setting of the final chain along with the associated comment. * sem_ch3.adb (Access_Type_Declaration): Add new local variable Full_Desig and set it to the full view of the designated type. Initialize the finalization collection to empty. (Build_Derived_Record_Type): Alphabetize local variables. Code reformatting. (Collect_Fixed_Components): Remove the mention of Name_uController. (Create_Constrained_Components): Remove the mention of Name_uController. (Make_Class_Wide_Type): Add specialized code to redecorate an existing class-wide type of a shadow entity. (Process_Full_View): Update the machinery which marks type Limited_Controlled's entity as limited. * sem_ch4.adb (Analyze_One_Call): Code reformatting. * sem_ch6.adb (Create_Extra_Formals): Do not generate a finalization list, instead make a collection build-in-place formal. * sem_ch8.adb (Analyze_Object_Renaming): Look at the available view of a designated type in order to establish a match between the renaming and the renamed entity. (Find_Selected_Component): Add guard to prevent spurious exceptions from being raised on .NET/JVM. * sem_disp.adb (Check_Dispatching_Operation): Include Finalize_Address to the list of primitive that need special processing. Update arrays C_Names and D_Names. (Replace_Types): Handle class-wide types. * sem_elab.adb (Check_A_Call): Since Deep_Initialize now has a different parameter profile, look at the first formal. * sem_prag.adb: Remove with and use clauses for Exp_Ch7. Add with and use clauses for Exp_Util. * sem_res.adb: Remove with and use clauses for Elists. (Propagate_Coextensions): Removed. (Resolve_Allocator): Do not propagate the list of coextensions from one allocator to another. * sem_util.adb (Build_Actual_Subtype_Of_Component): Rename variable Deaccessed_T to Desig_Typ. (Enter_Name): Remove the mention of Name_uController. (Gather_Components): Remove the mention of Name_uController. (Incomplete_Or_Private_View): New routine. (Is_Coextension_Root): Removed. (Is_Fully_Initialized_Type): Remove the mention of Name_uController. * sem_util.ads (Incomplete_Or_Private_View): New routine. (Is_Coextension_Root): Removed. * s-finroo.ads: Remove with clause for Ada.Unchecked_Conversion. Controlled types are now derived from a null tagged record. Remove types Finalizable_Ptr, Finalizable and Empty_Root_Controlled. * sinfo.adb (Coextensions): Removed. (Set_Coextensions): Removed. * sinfo.ads: Remove Coextensions from the explanation of node fields and its uses in nodes. Update the field usage of N_Allocator. (Coextensions): Removed along with its pragma Inline. (Set_Coextensions): Removed along with its pragma Inline. * snames.ads-tmpl: Remove names Name_uClean Name_uController Name_uFinal_List Name_uLocal_Final_List Name_Finalization_Root Name_Next Name_Prev Add names Name_uFinalizer Name_Finalize_Address * s-pooglo.adb (Allocate): Add overriding indicator. (Deallocate): Add overriding indicator. (Storage_Size): Add overriding indicator. * s-soflin.adb (Adafinal_NT): Invoke Finalize_Library_Objects rather than Finalize_Global_List. (Null_Finalize_Global_List): Removed. (Save_Library_Occurrence): New routine. * s-soflin.ads: Remove variable Finalize_Global_List along with its initialization. Add variable Finalize_Library_Objects along with its pragma Export. Add variables Library_Exception and Library_Exception_Set along with their pragma Export. (Null_Finalize_Global_List): Removed. (Save_Library_Occurrence): New routine. * s-tassta.adb (Finalize_Global_Tasks): Call Finalize_Library_Objects rather than Finalize_Global_List. * tbuild.adb (Unchecked_Convert_To): Capture and set the parent field of the constructed node. From-SVN: r177275
2011-08-02[multiple changes]Arnaud Charlet1-26/+22
2011-08-02 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb (Expand_N_Assignment_Statement): under restriction No_Dispatching_Calls, do not look for the Assign primitive, because predefined primitives are not created in this case. 2011-08-02 Bob Duff <duff@adacore.com> * stylesw.ads: Minor comment fixes. 2011-08-02 Robert Dewar <dewar@adacore.com> * freeze.adb (Add_To_Result): New procedure. 2011-08-02 Jose Ruiz <ruiz@adacore.com> * exp_attr.adb (Find_Stream_Subprogram): When using a configurable run time, if the specific run-time routines for handling streams of strings are not available, use the default mechanism. 2011-08-02 Arnaud Charlet <charlet@adacore.com> * s-regpat.ads: Fix typo. 2011-08-02 Vincent Celier <celier@adacore.com> * prj-conf.adb (Get_Or_Create_Configuration_File): If On_Load_Config is not null, call it to create the in memory config project file without parsing an existing default config project file. 2011-08-02 Eric Botcazou <ebotcazou@adacore.com> * atree.adb (Allocate_Initialize_Node): Remove useless temporaries. 2011-08-02 Ed Schonberg <schonberg@adacore.com> * sem_elim.adb: an abstract subprogram does not need an eliminate pragma for its descendant to be eliminable. 2011-08-02 Ed Falis <falis@adacore.com> * init.c: revert to handling before previous checkin for VxWorks * s-intman-vxworks.adb: delete unnecessary declarations related to using Ada interrupt facilities for handling signals. Delete Initialize_Interrupts. Use __gnat_install_handler instead. * s-intman-vxworks.ads: Import __gnat_install_handler as Initialize_Interrupts. * s-taprop-vxworks.adb: Delete Signal_Mask. (Abort_Handler): change construction of mask to unblock exception signals. From-SVN: r177130
2011-08-02atree.h, [...]: New subprograms to manipulate Elist5.Ed Schonberg1-0/+16
2011-08-02 Ed Schonberg <schonberg@adacore.com> * atree.h, atree.ads, atree.adb: New subprograms to manipulate Elist5. * par_ch8.adb (P_Use_Type): initialize Used_Operations for node. * sinfo.ads, sinfo.adb (Used_Operations): new attribute of use_type_clauses, to handle more efficiently use_type and use_all_type constructs. * sem_ch8.adb: Rewrite Use_One_Type and End_Use_Type to handle the Ada2012 Use_All_Type clause. (Use_Class_Wide_Operations): new procedure. From-SVN: r177090
2011-08-01[multiple changes]Arnaud Charlet1-3/+3
2011-08-01 Yannick Moy <moy@adacore.com> * sem_util.ads, sem_util.adb, par.adb, par_util.adb (Formal_Error_Msg, Formal_Error_Msg_N, Formal_Error_Msg_SP): move procedures out of these packages. * errout.ads, errout.adb (Formal_Error_Msg, Formal_Error_Msg_N, Formal_Error_Msg_SP): move procedures in of this package (Formal_Error_Msg_NE): new procedure for wrapper on Error_Msg_NE * par-ch5.adb (Parse_Decls_Begin_End): issue syntax error in SPARK mode on misplaced later vs initial declarations, like in Ada 83 * sem_attr.adb (Processing for Analyze_Attribute): issue error in formal mode on attribute of private type whose full type declaration is not visible * sem_ch3.adb (Analyze_Declarations): issue error in formal mode on a package declaration inside a package specification (Analyze_Full_Type_Declaration): issue error in formal mode on controlled type or discriminant type * sem_ch6.adb (Analyze_Subprogram_Specification): only issue error on user-defined operator means that it should come from the source (New_Overloaded_Entity): issue error in formal mode on overloaded entity. * sem_ch6.ads, sem_ch13.ads: typos in comments. 2011-08-01 Thomas Quinot <quinot@adacore.com> * atree.adb: Minor reformatting. * checks.adb: Minor reformatting. From-SVN: r177052
2011-08-01[multiple changes]Arnaud Charlet1-0/+7
2011-08-01 Vincent Celier <celier@adacore.com> * s-parame-vms-ia64.ads: Fix typo in comment Minor reformatting * s-parame-vms-restrict.ads: Removed, unused. 2011-08-01 Javier Miranda <miranda@adacore.com> * exp_ch3.adb (Is_Variable_Size_Array): Remove local subprogram Is_Constant_Bound. * sem_ch3.adb (Constrain_Index): Remove side effects in the evaluation of the bounds. * sem_ch3.ads, sem_ch3.adb (Is_Constant_Bound): New extended version of the subprogram that was previously located inside function Exp_Ch3.Is_Variable_Size_Array. Moved here since it is shared by routines of sem_ch3 and exp_ch3. * sem_aux.ads (Constant_Value): Fix typo in comment. * checks.adb (Generate_Index_Checks): New implementation which, for array objects with constant bounds, generates the runtime check referencing the bounds of the array type. For other cases this routine provides its previous behavior obtaining such values from the array object. * sem_res.adb (Set_Slice_Subtype): Link a copied range subtree with its parent type. * atree.adb (New_Copy): Reset flag Is_Overloaded in the new copy since we cannot have semantic interpretations of the new node. From-SVN: r177051
2010-10-22a-except-2005.adb (Rmsg_18): New message text.Robert Dewar1-0/+12
2010-10-22 Robert Dewar <dewar@adacore.com> * a-except-2005.adb (Rmsg_18): New message text. * a-except.adb (Rmsg_18): New message text. * atree.adb (List25): New function (Set_List25): New procedure * atree.ads (List25): New function (Set_List25): New procedure * einfo.adb (Static_Predicate): Is now a list (OK_To_Reference): Present in all entities * einfo.ads (Static_Predicate): Is now a list (OK_To_Reference): Applies to all entities * exp_ch13.adb (Build_Predicate_Function): Moved to Sem_Ch13 * sem_attr.adb (Bad_Attribute_For_Predicate): Call Bad_Predicated_Subtype_Use. * sem_case.ads, sem_case.adb: Major surgery to deal with predicated subtype case. * sem_ch13.adb (Build_Predicate_Function): Moved from Exp_Ch13 to Sem_Ch13. (Build_Static_Predicate): New procedure handles static predicates. * sem_ch3.adb (Analyze_Subtype_Declaration): Delay freeze on subtype with no constraint if ancestor subtype has predicates. (Analyze_Variant_Part): New calling sequence for Analyze_Choices * sem_ch4.adb (Junk_Operand): Don't complain about OK_To_Reference entity. (Analyze_Case_Expression): New calling sequence for Analyze_Choices * sem_ch5.adb (Analyze_Case_Statement): New calling sequence for Analyze_Choices. * sem_util.ads, sem_util.adb (Bad_Predicated_Subtype_Use): New procedure * types.ads (PE_Bad_Predicated_Generic_Type): Replaces PE_Bad_Attribute_For_Predicate. * atree.h: Add definition of List25. From-SVN: r165828
2010-10-19[multiple changes]Arnaud Charlet1-0/+17
2010-10-19 Tristan Gingold <gingold@adacore.com> * init.c: On Alpha/VMS, only adjust PC for HPARITH. 2010-10-19 Tristan Gingold <gingold@adacore.com> * sem_attr.adb (Eval_Attribute): Handle Attribute_Ref, which can be evaluated on VMS. 2010-10-19 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb (Check_Generic_Child_Unit): Handle properly the case of an instantiation of a renaming of the implicit generic child that appears within an instance of its parent. 2010-10-19 Thomas Quinot <quinot@adacore.com> * exp_ch9.adb: Minor reformatting. * einfo.adb, einfo.ads, atree.adb, atree.ads, exp_dist.adb, atree.h: (Referenced_Object): Remove unused entity attribute. (Direct_Primitive_Operations): Move to Elist10, this is set for all tagged types, including synchronous ones, so can't use field15 which is used as Storage_Size_Variable for task types and Entry_Bodies_Array for protected types. (Add_RACW_Primitive_Declarations_And_Bodies): Remove bogus guard against Concurrent_Types (we must handle the case of a RACW designating a class-wide private synchronous type). Use Direct_Primitive_Operations, not Primitive_Operations, since we really want the former. 2010-10-19 Bob Duff <duff@adacore.com> * sem_ch8.adb (Pop_Scope): Change "return;" to "raise Program_Error;". 2010-10-19 Javier Miranda <miranda@adacore.com> * exp_ch4.adb (Expand_Set_Membership.Make_Cond): Add missing support for N_Range nodes. From-SVN: r165689
2010-10-12[multiple changes]Arnaud Charlet1-1/+6
2010-10-12 Robert Dewar <dewar@adacore.com> * aspects.ads, aspects.adb (Move_Aspects): New procedure. * atree.ads, atree.adb: (New_Copy): Does not copy aspect specifications * sinfo.ads, par-ch3.adb, par-ch6.adb, par-ch7.adb, par-ch9.adb, par-endh.adb, par-ch13.adb, par-ch12.adb: Modify grammar to include aspect specifications. Recognize aspect specifications for all cases * par.adb: Recognize aspect specifications for all cases * sem_ch12.ads, sem_ch12.adb (Copy_Generic_Node): Copies aspect specifications. * sem_ch3.adb (Analyze_Subtype_Declaration): Improve patch to freeze generic actual types (was missing some guards before). * sem_ch9.adb (Analyze_Single_Protected_Declaration): Copy aspects to generated object (Analyze_Single_Task_Declaration): Copy aspects to generated object 2010-10-12 Eric Botcazou <ebotcazou@adacore.com> * usage.adb (usage): Adjust line for -gnatn switch. 2010-10-12 Robert Dewar <dewar@adacore.com> * sem_attr.adb (Eval_Attribute): Only leave change active for aspect spec case. 2010-10-12 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Declaration): If this is a declaration of a null procedure resolve the types of the profile of the generated null body now. From-SVN: r165353
2010-10-11[multiple changes]Arnaud Charlet1-29/+52
2010-10-11 Robert Dewar <dewar@adacore.com> * g-htable.ads (Get_First): New procedural version for Simple_HTable (Get_Next): New procedural version for Simple_HTable * s-htable.adb (Get_First): New procedural version for Simple_HTable (Get_Next): New procedural version for Simple_HTable * s-htable.ads (Get_First): New procedural version for Simple_HTable (Get_Next): New procedural version for Simple_HTable 2010-10-11 Ed Schonberg <schonberg@adacore.com> * sem_aggr.adb (Propagate_Discriminants): To gather the components of a variant part, use the association list of the subaggregate, which already includes the values of the needed discriminants. 2010-10-11 Robert Dewar <dewar@adacore.com> * aspects.ads, aspects.adb: Changes to accomodate aspect delay (Tree_Write): New procedure. * atree.ads, atree.adb: Flag3 is now Has_Aspects and applies to all nodes. * atree.h: Flag3 is now Has_Aspects and applies to all nodes * debug.adb: Add debug flag gnatd.A * einfo.adb (Has_Delayed_Aspects): New flag (Get_Rep_Item_For_Entity): New function * einfo.ads (Has_Delayed_Aspects): New flag (Get_Rep_Item_For_Entity): New function * exp_ch13.adb (Expand_N_Freeze_Entity): Insert delayed aspects into tree. * exp_ch3.adb, exp_ch6.adb, exp_ch9.adb, exp_disp.adb: New calling sequence for Freeze_Entity. * freeze.ads, freeze.adb (Freeze_Entity): Takes node rather than source ptr. All calls are changed to this new interface. (Freeze_And_Append): Same change (Freeze_Entity): Evaluate deferred aspects * sem_attr.adb: New calling sequence for Freeze_Entity (Eval_Attribute): Don't try to evaluate attributes of unfrozen types when we are in spec expression preanalysis mode. * sem_ch10.adb: New calling sequence for Freeze_Entity * sem_ch11.adb: Simplify analysis of aspect specifications now that the flag Has_Aspects applies to all nodes (no need to save aspects). * sem_ch12.adb: Simplify analysis of aspect specifications now that the flag Has_Aspects applies to all nodes (no need to save aspects). * sem_ch13.adb (Analyze_Aspect_Specifications): Major rewrite to accomodate delaying aspect evaluation to the freeze point. (Duplicate_Clause): Simplify using Get_Rep_Item_For_Entity, and also accomodate delayed aspects. (Rep_Item_Too_Late): Deal with delayed aspects case * sem_ch13.ads (Rep_Item_Too_Late): Document handling of delayed aspects * sem_ch3.adb (Analyze_Subtype_Declaration): Make sure that generic actual types are properly frozen (this is needed because of the new check in Eval_Attribute that declines to evaluate attributes for unfrozen types). Simplify analysis of aspect specifications now that the flag Has_Aspects applies to all nodes (no need to save aspects). * sem_ch3.ads (Preanalyze_Spec_Expression): Note use for delayed aspects * sem_ch5.adb: Simplify analysis of aspect specifications now that the flag Has_Aspects applies to all nodes (no need to save aspects). New calling sequence for Freeze_Entity. * sem_ch9.adb, sem_ch7.adb, sem_ch6.adb: Simplify analysis of aspect specifications now that the flag Has_Aspects applies to all nodes (no need to save aspects). New calling sequence for Freeze_Entity * sem_prag.adb (Check_Duplicate_Pragma): Simplify using Get_Rep_Item_For_Entity (Get_Pragma_Arg): Moved to Sinfo * sinfo.ads, sinfo.adb (Aspect_Rep_Item_: New field (Is_Delayed_Aspect): New flag (Next_Rep_Item): Document use for aspects (Get_Pragma_Arg): Moved here from Sem_Prag * sprint.adb (Sprint_Aspect_Specifications): Now called after semicolon is output and removes semicolon (simplifies interface). (Sprint_Node_Actual): Simplify handling of aspects now that Has_Aspects applies to any node. * tree_gen.adb: Write contents of Aspect_Specifications hash table * tree_in.adb: Read and initialize Aspect_Specifications hash table * treepr.adb (Print_Node): Print Has_Aspects flag (Print_Node): Print Aspect_Specifications in Has_Aspects set * xtreeprs.adb: Remove obsolete references to Flag1,2,3 From-SVN: r165300
2010-10-11[multiple changes]Arnaud Charlet1-8/+20
2010-10-11 Arnaud Charlet <charlet@adacore.com> * sem_prag.adb (Check_Interrupt_Or_Attach_Handler): Do not emit error for AI05-0033 in CodePeer mode. 2010-10-11 Robert Dewar <dewar@adacore.com> * atree.h, atree.ads, atree.adb (Flag3): New flag (replaces Unused_1) * csinfo.adb: Aspect_Specifications is a new special field * einfo.adb (Flag3): New unused flag * exp_util.adb (Insert_Actions): Add processing for N_Aspect_Specification. * sem.adb: Add entry for N_Aspect_Specification. * sinfo.ads, sinfo.adb (N_Aspect_Specification): New node (Has_Aspect_Specifications): New flag (Permits_Aspect_Specifications): New function (Aspect_Specifications): New function (Set_Aspect_Specifications): New procedure * sprint.adb (Sprint_Node): Put N_At_Clause in proper alpha order (Sprint_Node): Add dummy entry for N_Aspect_Specification * treepr.adb (Flag3): New flag to be listed 2010-10-11 Vincent Celier <celier@adacore.com> * adaint.c: Minor reformatting. From-SVN: r165279
2010-10-11sem_ch3.adb, [...]: Minor reformattingRobert Dewar1-246/+319
2010-10-11 Robert Dewar <dewar@adacore.com> * sem_ch3.adb, sem_aux.adb, sem_ch6.adb: Minor reformatting 2010-10-11 Robert Dewar <dewar@adacore.com> * einfo.adb, atree.h, atree.ads, atree.adb: Define seven new flags Flag248-Flag254. Define new field Field29. From-SVN: r165271
2010-09-10[multiple changes]Arnaud Charlet1-4/+4
2010-09-10 Jose Ruiz <ruiz@adacore.com> * exp_cg.adb (Is_Predefined_Dispatching_Operation): Add the "__" scope separator when trying the pattern matching to detect predefined primitive operations. 2010-09-10 Robert Dewar <dewar@adacore.com> * bindgen.adb, atree.adb: Minor reformatting. 2010-09-10 Ben Brosgol <brosgol@adacore.com> * ug_words, gnat_ugn.texi: Revised "Transitioning to 64-Bit GNAT for OpenVMS" section. From-SVN: r164175