aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch7.adb
AgeCommit message (Collapse)AuthorFilesLines
2011-08-04[multiple changes]Arnaud Charlet1-1/+1
2011-08-04 Arnaud Charlet <charlet@adacore.com> * make.adb (Do_Codepeer_Globalize_Step): Removed. Use CodePeer_Mode instead. (CodePeer_Mode_String): New. (Linking_Phase, Binding_Phase): Call gnatlink with -P switch in CodePeer mode. (Scan_Make_Arg): Do not disable binding/linking phase in CodePeer mode. * bindgen.adb (Gen_Elab_Calls_Ada): Ignore subprograms in CodePeer mode, since no useful elaboration subprogram is needed by CodePeer. * gnatlink.adb (Gnatlink): Add support for -P switch (CodePeer mode). In this mode, compile binder file with -gnatC and do stop after this step. 2011-08-04 Vincent Celier <celier@adacore.com> * exp_ch7.adb: Minor comment fix. From-SVN: r177366
2011-08-04exp_ch7.adb, [...]: Minor reformatting.Robert Dewar1-3/+7
2011-08-04 Robert Dewar <dewar@adacore.com> * exp_ch7.adb, make.adb, sem_ch10.adb, bindgen.adb, sem_res.adb, exp_ch4.adb, makeutl.adb: Minor reformatting. From-SVN: r177365
2011-08-04[multiple changes]Arnaud Charlet1-2/+17
2011-08-04 Emmanuel Briot <briot@adacore.com> * make.adb, makeutl.adb, makeutl.ads (Make): major refactoring. Create several new subprograms to move code out of Make. This makes the code more readable, removes code duplication, and is a preparation work for adding support for aggregate projects. 2011-08-04 Tristan Gingold <gingold@adacore.com> * s-po32gl.ads, s-po32gl.adb: New files. * exp_ch7.ads (Get_Global_Pool_For_Access_Type): New function. * exp_ch7.adb (Get_Global_Pool_For_Access_Type): New function. (Build_Finalization_Collection): Use it. * exp_ch4.adb (Complete_Controlled_Allocation): Ditto. * rtsfind.ads: System_Pool_32_Global, Re_Global_Pool_32_Object: New literals. * gcc-interface/Makefile.in: Use s-po32gl.o on VMS. * gcc-interface/Make-lang.in: Update dependencies. From-SVN: r177364
2011-08-04[multiple changes]Arnaud Charlet1-33/+70
2011-08-04 Eric Botcazou <ebotcazou@adacore.com> * bindgen.adb (Gen_Finalize_Library_Ada): Factor out code to generate the header of the finalization routine. If the unit has no finalizer but is a body whose spec has one, then generate the decrement of the elaboration entity only. If the unit has a finalizer and is a spec, then do not generate the decrement of the elaboration entity. (Gen_Finalize_Library_C): Likewise. 2011-08-04 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb (Alignment_Of): New subsidiary routine. (Bounds_Size_Expression): Removed. (Double_Alignment_Of): New subsidiary routine. (Make_Finalize_Address_Stmts): New local variable Index_Typ. Account for a hole in the dope vector of unconstrained arrays due to different index and element alignments. 2011-08-04 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Allocator): diagnose task allocator that will raise program_error because body has not been seen yet. 2011-08-04 Ed Schonberg <schonberg@adacore.com> * sem_ch10.adb (Analyze_With_Clause): Protect against child unit with an unresolved name. 2011-08-04 Vincent Celier <celier@adacore.com> * makeutl.adb (Do_Complete): Check absolute paths in canonical forms 2011-08-04 Yannick Moy <moy@adacore.com> * alfa.adb, alfa.ads (Unique_Defining_Entity): move function from here * sem_util.adb, sem_util.ads (Unique_Defining_Entity): ...to here 2011-08-04 Thomas Quinot <quinot@adacore.com> * sem_ch12.adb (Analyze_Package_Instantiation): Do not omit body for instantiation in RCI. 2011-08-04 Emmanuel Briot <briot@adacore.com> * make.adb: Share more code with gprbuild From-SVN: r177361
2011-08-04[multiple changes]Arnaud Charlet1-17/+70
2011-08-04 Thomas Quinot <quinot@adacore.com> * sinfo.adb, sinfo.ads, sem_prag.adb, sem_ch12.adb (Pragma_Enabled): This flag of N_Pragma nodes is not used, remove it as well as all of the associated circuitry. 2011-08-04 Javier Miranda <miranda@adacore.com> * exp_disp.adb (Make_DT): Switch -gnatdQ disables the generation of the runtime check on duplicated externa tags * debug.adb Document switch -gnatdQ. 2011-08-04 Gary Dismukes <dismukes@adacore.com> * a-fihema.ads: Minor typo fix. 2011-08-04 Yannick Moy <moy@adacore.com> * sem_ch10.adb: Minor comment update. 2011-08-04 Hristian Kirtchev <kirtchev@adacore.com> * einfo.adb: Update the node field usage to reflect the renaming of Return_Flag to Return_ Flag_Or_Transient_Decl. (Return_Flag): Renamed to Return_Flag_Or_Transient_Decl. (Set_Return_Flag): Renamed to Set_Return_Flag_Or_Transient_Decl. (Write_Field15_Name): Change Return_Flag to Return_Flag_Or_Transient_Decl. * einfo.ads: Rename node field Return_Flag to Return_Flag_Or_Transient_Decl. Update the associated comment and all occurrences in entities. (Return_Flag): Renamed to Return_Flag_Or_Transient_Decl. Update associated Inline pragma. (Set_Return_Flag): Renamed to Set_Return_Flag_Or_Transient_Decl. Update associated Inline pragma. * exp_ch4.ads, exp_ch4.adb (Expand_N_Expression_With_Actions): New routine. * exp_ch6.adb (Expand_N_Extended_Return_Statement): Update the calls to Return_Flag and Set_Return_Flag. * exp_ch7.adb (Process_Declarations): Add code to recognize hook objects generated for controlled transients declared inside an Exception_With_Actions. Update the calls to Return_Flag. (Process_Object_Declaration): Add code to add a null guard for hook objects generated for controlled transients declared inside an Exception_With_Actions. Update related comment. * exp_util.adb (Has_Controlled_Objects): Add code to recognize hook objects generated for controlled transients declared inside an Exception_With_Actions. Update the calls to Return_Flag. * expander.adb (Expand): Add new case for N_Expression_With_Actions. 2011-08-04 Ed Schonberg <schonberg@adacore.com> * sem_util.adb:(Wrong_Type): Improve error message on a one-element positional aggregate. 2011-08-04 Vincent Celier <celier@adacore.com> * par_sco.adb (Process_Decisions.Output_Header): Check and record pragma SLOC only for pragmas. 2011-08-04 Emmanuel Briot <briot@adacore.com> * projects.texi: Minor typo fix. 2011-08-04 Emmanuel Briot <briot@adacore.com> * prj-nmsc.adb (Check_File): Minor change to traces, to help debugging on case-sensitive file systems. From-SVN: r177349
2011-08-04[multiple changes]Arnaud Charlet1-22/+7
2011-08-04 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb (Create_Finalizer): Remove local variables Spec_Nod and Vis_Decls. When creating a library-level finalizer for a package spec, both the declaration and body of the finalizer are inserted either in the visible or private declarations of the package spec. 2011-08-04 Javier Miranda <miranda@adacore.com> * sem_ch3.adb (Derive_Subprograms): Complete assertion to request the use of the full-view of a type when invoking Is_Ancestor. * sem_type.adb (Is_Ancestor): For consistency, when the traversal of the full-view of private parents is requested, then use also the full-view of the parent of the first derivation. From-SVN: r177338
2011-08-04[multiple changes]Arnaud Charlet1-4/+7
2011-08-04 Eric Botcazou <ebotcazou@adacore.com> * bindgen.adb: Add comments. 2011-08-04 Yannick Moy <moy@adacore.com> * einfo.adb, einfo.ads: Free Flag254 and make Formal_Proof_On a synthesized flag. * sem_prag.adb (Analyze_Pragma): record the pragma Annotate (Formal_Proof, On/Off) in the Rep_Item list of the current subprogram. 2011-08-04 Robert Dewar <dewar@adacore.com> * exp_ch7.adb, exp_ch6.adb, sem_ch3.adb, layout.adb, sem_ch5.adb, osint-c.ads, sem_util.ads, gnat1drv.adb, targparm.ads, sem_ch6.adb, sem_ch13.adb, s-pooloc.adb: Minor reformatting. From-SVN: r177334
2011-08-04[multiple changes]Arnaud Charlet1-2/+6
2011-08-04 Yannick Moy <moy@adacore.com> * sem_ch3.adb (Array_Type_Declaration): move test for type in ALFA after index creation; mark unconstrained base array type generated as being in/not in ALFA as well (Make_Index): mark subtype created as in/not in ALFA * sem_ch5.adb (Analyze_Iteration_Scheme): mark entity for iterating over a loop as in/not in ALFA, depending on its type and form of loop iteration. 2011-08-04 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb (Build_Object_Declarations): Initialize flag Abort directly to False on .NET and JVM. From-SVN: r177326
2011-08-04[multiple changes]Arnaud Charlet1-404/+260
2011-08-04 Robert Dewar <dewar@adacore.com> * sem_util.adb: Minor reformatting. 2011-08-04 Hristian Kirtchev <kirtchev@adacore.com> * bindgen.adb (Gen_Finalize_Library_Ada): Update the import string for library-level finalizers. (Gen_Finalize_Library_C): Update the import string for library-level finalizers. (Gen_Finalize_Library_Defs_C): Update the definition name of a library-level finalizer. * exp_ch7.adb: Remove with and use clauses for Stringt. (Create_Finalizer): Remove local variables Conv_Name, Prag_Decl, Spec_Decl. Add local variable Body_Id. The names of library-level finalizers are now manually fully qualified and are no longer external. A single name is now capable of servicing .NET, JVM and non-VM targets. Pragma Export is no longer required to provide visibility for the name. (Create_Finalizer_String): Removed. (New_Finalizer_Name): New routine which mimics New_..._Name. From-SVN: r177322
2011-08-04[multiple changes]Arnaud Charlet1-275/+189
2011-08-04 Robert Dewar <dewar@adacore.com> * par_sco.adb, prj-proc.adb, make.adb, bindgen.adb, prj.adb, prj.ads, makeutl.adb, makeutl.ads, prj-nmsc.adb, exp_ch5.adb, exp_ch12.adb, exp_ch7.ads, exp_util.ads, sem_util.ads, g-comlin.ads, exp_ch6.adb, exp_ch6.ads, lib-xref.ads, exp_ch7.adb, exp_util.adb, exp_dist.adb, exp_strm.adb, gnatcmd.adb, freeze.adb, g-comlin.adb, lib-xref-alfa.adb, sem_attr.adb, sem_prag.adb, sem_util.adb, sem_elab.adb, sem_ch8.adb, sem_ch11.adb, sem_eval.adb, sem_ch13.adb, sem_disp.adb, a-fihema.adb: Minor reformatting and code reorganization. 2011-08-04 Emmanuel Briot <briot@adacore.com> * projects.texi: Added doc for aggregate projects. From-SVN: r177320
2011-08-04[multiple changes]Arnaud Charlet1-50/+100
2011-08-04 Emmanuel Briot <briot@adacore.com> * prj-proc.adb, prj-nmsc.adb, prj-env.adb (Process_Declarative_Items): Add support for overriding the Project_Path in aggregate projects. 2011-08-04 Robert Dewar <dewar@adacore.com> * a-cofove.ads: Minor reformatting. 2011-08-04 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Update the comment on the generated code. (Build_Finalize_Statements): Update the comment on the generated code. (Build_Initialize_Statements): Update the comment on the generated code. (Build_Object_Declarations): Add local variable Result. The object declarations are now built in sequence. * rtsfind.ads: Add RE_Exception_Occurrence_Access to tables RE_Id and RE_Unit_Table. 2011-08-04 Robert Dewar <dewar@adacore.com> * checks.adb, alfa.adb, alfa.ads: Minor reformatting. 2011-08-04 Eric Botcazou <ebotcazou@adacore.com> * einfo.ads (Elaboration_Entity): Document new definition and use. (Elaboration_Entity_Required): Adjust to above change. * exp_attr.adb (Expand_N_Attribute_Reference): Likewise. * exp_ch12.adb: And with and use for Snames. (Expand_N_Generic_Instantiation): Test 'Elaborated attribute. * exp_util.adb (Set_Elaboration_Flag): Likewise. * sem_attr.adb (Analyze_Attribute) <Check_Library_Unit>: Delete. <Check_Unit_Name>: Deal with N_Expanded_Name. <Attribute_Elaborated>: Extend to all unit names. * sem_elab.adb: And with and use for Uintp. (Check_Internal_Call_Continue): Adjust to Elaboration_Entity change. * sem_util.ads (Build_Elaboration_Entity): Adjust comment. * sem_util.adb (Build_Elaboration_Entity): Change type to Integer. * bindgen.adb (Gen_Elab_Externals_Ada): New local subprogram taken from Gen_Adainit_Ada. (Gen_Elab_Externals_C): Likewise, but taken from Gen_Adainit_C. (Gen_Adafinal_Ada): Remove redundant test. In the non-main program case, do not call System.Standard_Library.Adafinal; instead call finalize_library if needed. (Gen_Adafinal_C): Likewise. (Gen_Adainit_Ada): Do not set SSL.Finalize_Library_Objects in the non-main program case. (Gen_Adainit_C): Generate a couple of external declarations here. In the main program case, set SSL.Finalize_Library_Objects. (Gen_Elab_Calls_Ada): Adjust to Elaboration_Entity change. (Gen_Elab_Calls_C): Likewise. (Gen_Finalize_Library_Ada): Likewise. Skip SAL interface units. (Gen_Finalize_Library_C): Likewise. Generate a full function. (Gen_Main_C): Put back call to Ada_Final and don't finalize library objects here. (Gen_Output_File_Ada): Generate pragma Linker_Destructor for Ada_Final if -a is specified. Call Gen_Elab_Externals_Ada. Move around call to Gen_Adafinal_Ada. (Gen_Output_File_C): Generate __attribute__((destructor)) for Ada_Final if -a is specified. Call Gen_Elab_Externals_C. Remove useless couple of external declarations.  Call Gen_Finalize_Library_C. From-SVN: r177318
2011-08-03[multiple changes]Arnaud Charlet1-107/+184
2011-08-03 Javier Miranda <miranda@adacore.com> * sem_prag.adb (Process_Interface_Name): Allow duplicated export names in Java since they are always enclosed in a namespace that differentiates them, and overloaded entities are supported by the VM. 2011-08-03 Ed Schonberg <schonberg@adacore.com> * checks.adb (Determine_Range): If a computed bound of an operation is outside the range of the base type of the expression, and overflow checks are enabled, the result is unknown and cannot be used for any subsequent constant folding. * sem_eval.adb (Compile_Time_Compare): if the bounds of one operand are unknown, so is the result of the comparison. 2011-08-03 Hristian Kirtchev <kirtchev@adacore.com> * a-except-2005.adb (Raise_From_Controlled_Operation): Add new formal From_Abort. When finalization was triggered by an abort, propagate Standard'Abort_Signal rather than Program_Error. * a-except-2005.ads (Raise_From_Controlled_Operation): Add new formal From_Abort. * a-except.adb (Raise_From_Controlled_Operation): Add new formal From_Abort. When finalization was triggered by an abort, propagate Standard'Abort_Signal rather than Program_Error. * a-except.ads:(Raise_From_Controlled_Operation): Add new formal From_Abort. * exp_ch7.adb:(Build_Adjust_Or_Finalize_Statements): New local variable Abort_Id. Update the calls to Build_Object_Declarations and Build_Raise_Statement to include Abort_Id. (Build_Adjust_Statements): New local variable Abort_Id. Update the calls to Build_Object_Declarations and Build_Raise_Statement to include Abort_Id. (Build_Finalize_Statements): New local variable Abort_Id. Update the calls to Build_Object_Declarations and Build_Raise_Statement to include Abort_Id. (Build_Components): Create an entity for Abort_Id when exceptions are allowed on the target. (Build_Finalizer): New local variable Abort_Id. (Build_Initialize_Statements): New local variable Abort_Id. Update the calls to Build_Object_Declarations and Build_Raise_Statement to include Abort_Id. (Build_Object_Declarations): Add new formal Abort_Id. Create the declaration of flag Abort_Id to preserve the original abort status before finalization code is executed. (Build_Raise_Statement): Add new formal Abort_Id. Pass Abort_Id to runtime routine Raise_From_Controlled_Operation. (Create_Finalizer): Update the call to Build_Raise_Statement to include Abort_Id. Update the call to Build_Object_Declarations to include Abort_Id. Update the layout of the finalizer body. (Make_Handler_For_Ctrl_Operation): Add an actual for From_Abort. (Process_Transient_Objects): New local variable Abort_Id. Remove the clunky code to create all flags and objects related to exception propagation and replace it with a call to Build_Object_Declarations. Update the call to Build_Raise_Statement to include Abort_Id. * exp_ch7.ads (Build_Object_Declarations): Moved from body to spec. Add new formal Abort_Id and associated comment on its use. (Build_Raise_Statement): Add new formal Abort_Id and associated comment on its use. * exp_intr.adb (Expand_Unc_Deallocation): New local variable Abort_Id. Remove the clunky code to create all flags and objects related to exception propagation and replace it with a call to Build_Object_Declarations. Update the call to Build_Raise_Statement. 2011-08-03 Eric Botcazou <ebotcazou@adacore.com> * s-tassta.adb: Fix minor typos. 2011-08-03 Robert Dewar <dewar@adacore.com> * rtsfind.ads, makeutl.ads, prj.ads, prj.adb, make.adb, lib-writ.adb, makeutl.adb, s-soflin.ads, clean.adb: Minor reformatting. From-SVN: r177283
2011-08-03[multiple changes]Arnaud Charlet1-2/+21
2011-08-03 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb (Create_Finalizer): Treat freeze nodes in similar fashion to packages. This ensures that the finalizer body will not end up inside the freeze node. (Process_Declarations): Add code to detect whether a freeze node has a nested finalization collection. 2011-08-03 Pascal Obry <obry@adacore.com> * g-awk.adb, g-awk.ads: Make GNAT.AWK API compatible with Ada 2005. (Current_Session): Return a not null access to Session_Type. (Default_Session): Likewise. From-SVN: r177282
2011-08-03[multiple changes]Arnaud Charlet1-1/+13
2011-08-03 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch13.adb: Add with and use clauses for Restrict and Rident. (Expand_N_Free_Statement): Add a guard to protect against run-times which do not support controlled types. * exp_ch3.adb (Expand_Freeze_Class_Wide_Type): Add a guard to protect against run-times which do not support controlled types. * exp_ch4.adb (Complete_Controlled_Allocation): Add a guard to protect against run-times which do not support controlled types. * exp_ch7.adb (Build_Finalization_Collection): Add a guard to protect against run-times which do not support controlled types. * exp_util.adb (Needs_Finalization): Code reformatting. Add a guard to protect against run-times which do not support controlled types. 2011-08-03 Eric Botcazou <ebotcazou@adacore.com> * exp_intr.adb: Put back with and use clauses for Exp_Ch11. (Expand_Unc_Deallocation): Expand the AT_END handler at the very end. From-SVN: r177280
2011-08-03[multiple changes]Arnaud Charlet1-15/+40
2011-08-03 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb (Expand_Iterator_Loop): indicate that the cursor is modified in the source, to prevent spurious warnings when compiling with -gnatg. 2011-08-03 Thomas Quinot <quinot@adacore.com> * a-except-2005.adb: Minor reformatting. 2011-08-03 Ed Schonberg <schonberg@adacore.com> * sem_warn.adb (Check_One_Unit): if the only mention of a withed unit is a renaming declaration in the private part of a package, do not emit a warning that the with_clause could be moved because the renaming may be used in the body or in a child unit. 2011-08-03 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Propagate the Comes_From_Source attribute from the original return object to the renaming. 2011-08-03 Jose Ruiz <ruiz@adacore.com> * exp_ch7.adb (Build_Raise_Statement): Do not call Raise_From_Controlled_Operation when this routine is not present in the run-time library. (Cleanup_Protected_Object, Cleanup_Task): For restricted run-time libraries (Ravenscar), tasks are non-terminating, and protected objects and tasks can only appear at library level, so we do not want finalization of protected objects nor tasks. * exp_intr.adb: Minor clarification in comment. bindgen.adb (Gen_Adainit_Ada, Gen_Main_C, Gen_Output_File_Ada, Gen_Output_File_C): Remove references to finalization of library-level objects when using restricted run-time libraries. 2011-08-03 Ed Schonberg <schonberg@adacore.com> * sem_ch3.adb (Build_Discriminant_Constraints): Set Original_Discriminant only if the parent type is a generic formal. From-SVN: r177278
2011-08-03exp_ch13.adb: Add with and use clause for Targparm;Hristian Kirtchev1-35/+84
2011-08-03 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch13.adb: Add with and use clause for Targparm; (Expand_N_Free_Statement): Prevent the generation of a custom Deallocate on .NET/JVM targets since this requires pools and address arithmetic. * exp_ch4.adb (Expand_Allocator_Expression): When compiling for .NET/JVM targets, attach the newly allocated object to the access type's finalization collection. Do not generate a call to Set_Finalize_Address_Ptr on .NET/JVM because this routine does not exist in the runtime. (Expand_N_Allocator): When compiling for .NET/JVM targets, do not create a custom Allocate for object that do not require initialization. Attach a newly allocated object to the access type's finalization collection on .NET/JVM. * exp_ch5.adb (Make_Tag_Ctrl_Assignment): Add special processing for assignment of controlled types on .NET/JVM. The two hidden pointers Prev and Next and stored and later restored after the assignment takes place. * exp_ch6.adb (Expand_Call): Add local constant Curr_S. Add specialized kludge for .NET/JVM to recognize a particular piece of code coming from Heap_Management and change the call to Finalize into Deep_Finalize. * exp_ch7.adb (Build_Finalization_Collection): Allow the creation of finalization collections on .NET/JVM only for types derived from Controlled. Separate the association of storage pools with a collection and only allow it on non-.NET/JVM targets. (Make_Attach_Call): New routine. (Make_Detach_Call): New routine. (Process_Object_Declarations): Suppress the generation of build-in-place return object clean up code on .NET/JVM since it uses pools. * exp_ch7.ads (Make_Attach_Call): New routine. (Make_Detach_Call): New routine. * exp_intr.adb Add with and use clause for Targparm. (Expand_Unc_Deallocation): Detach a controlled object from a collection on .NET/JVM targets. * rtsfind.ads: Add entries RE_Attach, RE_Detach and RE_Root_Controlled_Ptr to tables RE_Id and RE_Unit_Table. * snames.ads-tmpl: Add name Name_Prev. Move Name_Prev to the special names used in finalization. 2011-08-03 Hristian Kirtchev <kirtchev@adacore.com> * a-fihema.adb: Add with and use clauses for System.Soft_Links. (Attach, Detach): Lock the current task when chaining an object onto a collection. From-SVN: r177276
2011-08-03a-except.adb, [...] (Raise_From_Controlled_Operation): Rewritten to create ↵Hristian Kirtchev1-1907/+5824
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-11/+26
2011-08-02 Robert Dewar <dewar@adacore.com> * sem_res.adb: Minor reformatting. * sem_prag.adb: Minor reformatting. 2011-08-02 Javier Miranda <miranda@adacore.com> * exp_atag.adb, exp_atags.ads (Build_Common_Dispatching_Select_Statement): Replace argument DT_Ptr by the tagged type Entity. Required to use this routine in the VM targets since we do not have available the Tag entity in the VM platforms. * exp_ch6.adb (Expand_N_Subprogram_Body): Do not invoke Build_VM_TSDs if package Ada.Tags has not been previously loaded. * exp_ch7.adb (Expand_N_Package_Declaration, Expand_N_Package_Body): Do not invoke Build_VM_TSDs if package Ada.Tags has not been previously loaded. * sem_aux.adb (Enclosing_Dynamic_Scope): Add missing support to handle the full view of enclosing scopes. Required to handle enclosing scopes that are synchronized types whose full view is a task type. * exp_disp.adb (Build_VM_TSDs): Minor code improvement to avoid generating and analyzing lists with empty nodes. (Make_Disp_Asynchronous_Select_Body): Add support for VM targets. (Make_Disp_Conditional_Select_Body): Add support for VM targets. (Make_Disp_Get_Prim_Op_Kind): Add support for VM targets. (Make_Disp_Timed_Select_Body): Add support for VM targets. (Make_Select_Specific_Data_Table): Add support for VM targets. (Make_VM_TSD): Generate code to initialize the SSD structure of the TSD. 2011-08-02 Yannick Moy <moy@adacore.com> * lib-writ.adb (Write_ALI): when ALFA mode is set, write local cross-references section in ALI. * lib-xref.adb, lib-xref.ads (Xref_Entry): add components Sub (enclosing subprogram), Slc (location of Sub) and Sun (unit number of Sub). (Enclosing_Subprogram_Or_Package): new function to return the enclosing subprogram or package entity of a node (Is_Local_Reference_Type): new function returns True for references selected in local cross-references. (Lt): function extracted from Lt in Output_References (Write_Entity_Name): function extracted from Output_References (Generate_Definition): generate reference with type 'D' for definition of objects (object declaration and parameter specification), with appropriate locations and units, for use in local cross-references. (Generate_Reference): update fields Sub, Slc and Sun. Keep newly created references of type 'I' for initialization in object definition. (Output_References): move part of function Lt and procedure Write_Entity_Name outside of the body. Ignore references of types 'D' and 'I' introduced for local cross-references. (Output_Local_References): new procedure to output the local cross-references sections. (Lref_Entity_Status): new array defining whether an entity is a local * sem_ch3.adb (Analyze_Object_Declaration): call Generate_Reference with 'I' type when initialization expression is present. * get_scos.adb, get_scos.ads: Correct comments and typos From-SVN: r177168
2011-08-02[multiple changes]Arnaud Charlet1-9/+2
2011-08-02 Javier Miranda <miranda@adacore.com> * exp_ch6.adb (Expand_N_Subprogram_Body): Enable generation of TSDs in the JVM target. * exp_ch7.adb (Expand_N_Package_Body): Enable generation of TSDs in the JVM target. * exp_disp.adb (Build_VM_TSDs): No action needed if the runtime has no TSD support. 2011-08-02 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (File_Found): New components Excl_File and Excl_Line (No_Space_Img): New function (Find_Excluded_Sources): When reading from a file, record the file name and the line number for each excluded source. (Mark_Excluded_Sources): When reporting an error, if the excluded sources were read from a file, include file name and line number in the error message. 2011-08-02 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Resolve_Call): implement rule in RM 12.5.1 (23.3/2). From-SVN: r177167
2011-08-02exp_ch7.adb [...]: Minor reformattingRobert Dewar1-10/+9
2011-08-02 Robert Dewar <dewar@adacore.com> * exp_ch7.adb exp_ch6.adb, exp_disp.adb: Minor reformatting From-SVN: r177165
2011-08-02exp_ch6.adb (Expand_N_Subprogram_Body): Temporarily restrict the generation ↵Javier Miranda1-2/+10
of TSDs to the DOTNET compiler. 2011-08-02 Javier Miranda <miranda@adacore.com> * exp_ch6.adb (Expand_N_Subprogram_Body): Temporarily restrict the generation of TSDs to the DOTNET compiler. * exp_ch7.adb (Expand_N_Package_Body): Temporarily restrict the generation of TSDs to the DOTNET compiler. From-SVN: r177164
2011-08-02exp_disp.ads (Build_VM_TSDs): Build the runtime Type Specific Data record of ↵Javier Miranda1-2/+34
all the tagged types declared... 2011-08-02 Javier Miranda <miranda@adacore.com> * exp_disp.ads (Build_VM_TSDs): Build the runtime Type Specific Data record of all the tagged types declared inside library level package declarations, library level package bodies or library level subprograms. * exp_disp.adb (Make_VM_TSD): New subprogram that builds the TSD associated with a given tagged type. (Build_VM_TSDs): New subprogram. * exp_ch6.adb (Expand_N_Subprogram_Body): Generate TSDs records of main compilation units that are subprograms. * exp_ch7.adb (Expand_N_Package_Body): Generate TSDs of main compilation units that are package bodies. (Expand_N_Package_Declaration): Generate TSDs of the main compilation units that are a package declaration or a package instantiation. * exp_intr.adb (Expand_Dispatching_Constructor_Call): Minor code reorganization to improve the error generated by the frontend when the function Ada.Tags.Secondary_Tag is not available. * rtsfind.ads (RE_Register_TSD): New runtime entity. * exp_ch4.adb (Expand_N_Type_Conversion): Minor code cleanup. From-SVN: r177163
2011-08-02[multiple changes]Arnaud Charlet1-51/+0
2011-08-02 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch5.adb (Expand_Iterator_Loop): Code cleanup and refactoring. When a container is provided via a function call, generate a renaming of the function result. This avoids the creation of a transient scope and the premature finalization of the container. * exp_ch7.adb (Is_Container_Cursor): Removed. (Wrap_Transient_Declaration): Remove the supression of the finalization of the list controller when the declaration denotes a container cursor, it is not needed. 2011-08-02 Yannick Moy <moy@adacore.com> * restrict.adb (Check_Formal_Restriction): only issue a warning if the node is from source, instead of the original node being from source. * sem_aggr.adb (Resolve_Array_Aggregate): refine the check for a static expression, to recognize also static ranges * sem_ch3.adb, sem_ch3.ads (Analyze_Component_Declaration, Array_Type_Declaration): postpone the test for the type being a subtype mark after the type has been resolved, so that component-selection and expanded-name are discriminated. (Make_Index, Process_Range_Expr_In_Decl): add a parameter In_Iter_Schm to distinguish the case of an iteration scheme, so that an error is issed on a non-static range in SPARK except in an iteration scheme. * sem_ch5.adb (Analyze_Iteration_Scheme): call Make_Index with In_Iter_Schm = True. * sem_ch6.adb (Analyze_Subprogram_Specification): refine the check for user-defined operators so that they are allowed in renaming * sem_ch8.adb (Find_Selected_Component): refine the check for prefixing of operators so that they are allowed in renaming. Move the checks for restrictions on selector name after analysis discriminated between component-selection and expanded-name. * sem_res.adb (Resolve_Op_Concat_Arg): do not issue a warning on concatenation argument of string type if it is static. * sem_util.adb, sem_util.ads (Check_Later_Vs_Basic_Declarations): add a new function Is_Later_Declarative_Item to decice which declarations are allowed as later items, in the two different modes Ada 83 and SPARK. In the SPARK mode, add that renamings are considered as later items. (Enclosing_Package): new function to return the enclosing package (Enter_Name): correct the rule for homonyms in SPARK (Is_SPARK_Initialization_Expr): default to returning True on nodes not from source (result of expansion) to avoid issuing wrong warnings. 2011-08-02 Ed Schonberg <schonberg@adacore.com> * errout.adb: On anything but an expression First_Node returns its argument. From-SVN: r177152
2011-08-02[multiple changes]Arnaud Charlet1-8/+62
2011-08-02 Pascal Obry <obry@adacore.com> * prj-proc.adb, make.adb, makeutl.adb: Minor reformatting. 2011-08-02 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch5.adb (Expand_Iterator_Loop): Code cleanup and reorganization. Set the associated loop as the related expression of internally generated cursors. * exp_ch7.adb (Is_Container_Cursor): New routine. (Wrap_Transient_Declaration): Supress the finalization of the list controller when the declaration denotes a container cursor. 2011-08-02 Yannick Moy <moy@adacore.com> * opt.ads (SPARK_Mode): update comment, SPARK_Mode only set through command line now. * par-ch3.adb (P_Delta_Constraint): remove check in SPARK mode that the expression is a simple expression. This check cannot be performed in the semantics, so just drop it. (P_Index_Or_Discriminant_Constraint): move check that the index or discriminant is a subtype mark to Analyze_Subtype_Declaration in the semantics. Other cases were previously checked in the semantics. * par-ch4.adb (P_Name): move checks that a selector name is not character literal or an operator symbol to Find_Selected_Component in the semantics * par-ch5.adb (Parse_Decls_Begin_End): move check that basic declarations are not placed after later declarations in a separate procedure in Sem_Util (possibly not the best choice?), to be used both during parsing, for Ada 83 mode, and during semantic analysis, for SPARK mode. * par-endh.adb (Check_End): move check that end label is not missing to Process_End_Label in the semantics * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings): remove the special case for SPARK restriction * par.adb: use and with Sem_Util, for use in Parse_Decls_Begin_End * restrict.adb, restrict.ads (Check_Formal_Restriction): add a parameter Force to issue the error message even on internal node (used for generated end label). Call Check_Restriction to check when an error must be issued. In SPARK mode, issue an error message even if the restriction is not set. (Check_Restriction): new procedure with an additional out parameter to inform the caller that a message has been issued * sem_aggr.adb: Minor modification of message * sem_attr.adb (Analyze_Attribute): call Check_Formal_Restriction instead of issuing an error message directly * sem_ch3.adb (Analyze_Declarations): move here the check that basic declarations are not placed after later declarations, by calling Check_Later_Vs_Basic_Declarations (Analyze_Subtype_Declaration): move here the check that an index or discriminant constraint must be a subtype mark. Change the check that a subtype of String must start at one so that it works on subtype marks. * sem_ch4.adb (Analyze_Call): move here the check that a named association cannot follow a positional one in a call * sem_ch5.adb (Check_Unreachable_Code): call Check_Formal_Restriction instead of issuing an error message directly * sem_ch8.adb (Find_Selected_Component): move here the check that a selector name is not a character literal or an operator symbol. Move here the check that the prefix of an expanded name cannot be a subprogram or a loop statement. * sem_util.adb, sem_util.ads (Check_Later_Vs_Basic_Declarations): new procedure called from parsing and semantics to check that basic declarations are not placed after later declarations (Process_End_Label): move here the check that end label is not missing 2011-08-02 Arnaud Charlet <charlet@adacore.com> * sem_ch13.adb (Analyze_Enumeration_Representation_Clause): Ignore enum representation clause in codepeer mode, since it confuses CodePeer and does not bring useful info. 2011-08-02 Ed Falis <falis@adacore.com> * init.c: initialize fp hw on MILS. 2011-08-02 Ed Schonberg <schonberg@adacore.com> * errout.adb (First_Node): for bodies, return the node itself (small optimization). For other nodes, do not check source_unit if the node comes from Standard. From-SVN: r177151
2011-08-02sem_type.ads, [...] (Is_Ancestor): Addition of a new formal (Use_Full_View) ↵Javier Miranda1-1/+3
which permits this routine to climb... 2011-08-02 Javier Miranda <miranda@adacore.com> * sem_type.ads, sem_type.adb (Is_Ancestor): Addition of a new formal (Use_Full_View) which permits this routine to climb through the ancestors using the full-view of private parents. * sem_util.adb (Collect_Interfaces_Info, Implements_Interface): Set Use_Full_View to true in calls to Is_Ancestor. * sem_disp.adb (Override_Dispatching_Operation): Set Use_Full_View to true in call to Is_Ancestor. * exp_ch3.adb (Build_Offset_To_Top_Functions, Initialize_Tag): Set Use_Full_View to true in call to Is_Ancestor. * exp_ch7.adb (Controller_Component): Set Use_Full_View to true in call to Is_Ancestor. * exp_ch4.adb (Expand_N_Type_Conversion, Tagged_Membership): Set Use_Full_View to true in calls to Is_Ancestor. * exp_disp.adb (Expand_Interface_Actuals, Make_Secondary_DT, Make_DT, Make_Select_Specific_Data_Table, Register_Primitive, Set_All_DT_Position): Set Use_Full_View to true in calls to Is_Ancestor. * exp_intr.adb (Expand_Dispatching_Constructor_Call): Set Use_Full_View to true in call to Is_Ancestor. * exp_util.adb (Find_Interface_ADT, Find_Interface_Tag): Set Use_Full_View to true in calls to Is_Ancestor. * exp_cg.adb (Write_Call_Info): Set Use_Full_View to true in call to Is_Ancestor. (Write_Type_Info): Set Use_Full_View to true in call to Is_Ancestor. From-SVN: r177087
2011-08-01[multiple changes]Arnaud Charlet1-3/+13
2011-08-01 Robert Dewar <dewar@adacore.com> * make.adb, sem_ch4.adb: Minor reformatting. * gcc-interface/Make-lang.in: Update dependencies. * sem_util.adb, exp_ch5.adb: Minor reformatting. 2011-08-01 Arnaud Charlet <charlet@adacore.com> * gnat_rm.texi: Fix definition of Long_Integer. 2011-08-01 Ed Schonberg <schonberg@adacore.com> * exp_aggr.adb: check limit size of static aggregate unconditionally, to prevent storage exhaustion. * exp_ch7.adb (Clean_Simple_Protected_Objects): if the scope being finalized is a function body, insert the cleanup code before the final return statement, to prevent spurious warnings. * s-pooglo.ads: add overriding indicator. From-SVN: r177035
2010-12-20Fix typos in gcc/ada.Ralf Wildenhues1-1/+1
gcc/ada/: * projects.texi: Fix typos. * gnat_rm.texi: Likewise. * gnat_ugn.texi: Likewise. * sem_util.adb: Fix typo in variable, typos in comments. * a-btgbso.adb: Fix typos in comments. * a-cbdlli.adb, a-cbhase.ads, a-cdlili.adb, a-cobove.adb, a-coinve.adb, a-convec.adb, a-direct.ads, a-strunb-shared.adb, a-strunb-shared.ads, a-stuten.ads, a-stwiun-shared.adb, a-stwiun-shared.ads, a-stzunb-shared.adb, a-stzunb-shared.ads, a-suenco.adb, a-suenst.adb, a-suewst.adb, a-suezst.adb, ali.ads, aspects.ads, atree.ads, binde.adb, bindgen.adb, checks.adb, checks.ads, einfo.ads, err_vars.ads, errout.adb, errout.ads, exp_aggr.adb, exp_attr.adb, exp_cg.adb, exp_ch3.adb, exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_dbug.ads, exp_disp.adb, exp_fixd.ads, freeze.adb, g-altive.ads, g-comlin.ads, g-excact.ads, g-mbdira.adb, g-sechas.ads, g-sehash.ads, g-sha1.ads, g-sha224.ads, g-sha256.ads, g-sha384.ads, g-sha512.ads, g-shsh32.ads, g-shsh64.ads, g-socket.adb, g-socket.ads, g-sothco.ads, gcc-interface/decl.c, gcc-interface/trans.c, gcc-interface/utils2.c, gnat1drv.adb, init.c, inline.adb, link.c, locales.c, make.adb, mingw32.h, namet.ads, osint.adb, par-ch12.adb, par-ch13.adb, par-ch3.adb, par-ch4.adb, par-prag.adb, par.adb, par_sco.adb, prepcomp.adb, prj-conf.ads, prj-dect.adb, prj-env.adb, prj-env.ads, prj-nmsc.adb, prj-tree.ads, prj-util.ads, prj.adb, prj.ads, s-auxdec-vms-alpha.adb, s-auxdec-vms_64.ads, s-oscons-tmplt.c, s-osinte-vxworks.ads, s-osprim-mingw.adb, s-regexp.adb, s-stusta.adb, s-taprop-mingw.adb, s-taprop-solaris.adb, scn.adb, scos.ads, sem.adb, sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_aux.ads, sem_ch12.adb, sem_ch12.ads, sem_ch13.adb, sem_ch13.ads, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_disp.adb, sem_disp.ads, sem_eval.adb, sem_intr.adb, sem_prag.adb, sem_res.adb, sem_scil.adb, sem_util.ads, sem_warn.adb, sem_warn.ads, sinfo.ads, socket.c, styleg.adb, switch.ads, sysdep.c, tb-alvxw.c, xoscons.adb: Likewise. From-SVN: r168082
2010-10-26[multiple changes]Arnaud Charlet1-20/+25
2010-10-26 Robert Dewar <dewar@adacore.com> * exp_ch5.adb, exp_prag.adb, sem_ch3.adb, exp_atag.adb, layout.adb, sem_dist.adb, exp_ch7.adb, exp_util.adb, exp_attr.adb, exp_ch9.adb, sem_ch10.adb, checks.adb, sem_prag.adb, par-endh.adb, sem_ch12.adb, exp_smem.adb, sem_attr.adb, exp_ch4.adb, exp_ch6.adb, exp_ch8.adb, sem_ch6.adb, exp_disp.adb, exp_aggr.adb, exp_dist.adb, sem_ch13.adb, par-ch3.adb, par-ch5.adb, exp_strm.adb, exp_ch3.adb: Minor reformatting * opt.ads: Minor comment fix. 2010-10-26 Vincent Celier <celier@adacore.com> * gnat_ugn.texi: Document option -s for gnatlink. From-SVN: r165963
2010-10-26[multiple changes]Arnaud Charlet1-1/+1
2010-10-26 Javier Miranda <miranda@adacore.com> * einfo.ads, einfo.adb (Is_Overriding_Operation): Removed. (Set_Is_Overriding_Operation): Removed. * sem_ch3.adb (Check_Abstract_Overriding): Remove redundant call to Is_Overriding_Operation. * exp_ch7.adb (Check_Visibly_Controlled): Remove redundant call to Is_Overriding_Operation. * sem_ch7.adb (Declare_Inherited_Private_Subprograms): Remove redundant call to Set_Is_Overriding_Operation. * sem_util.adb (Collect_Primitive_Operations): Replace test on Is_Overriding_Operation by test on the presence of attribute Overridden_Operation. (Original_Corresponding_Operation): Remove redundant call to attribute Is_Overriding_Operation. * sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Remove redundant call to Is_Overriding_Operation. (Verify_Overriding_Indicator): Replace several occurrences of test on Is_Overriding_Operation by test on the presence of attribute Overridden_Operation. (Check_Convention): Replace test on Is_Overriding_Operation by test on the presence of Overridden_Operation. (Check_Overriding_Indicator): Add missing decoration of attribute Overridden_Operation. Minor code cleanup. (New_Overloaded_Entity): Replace occurrence of test on Is_Overriding_Operation by test on the presence of attribute Overridden_Operation. Remove redundant setting of attribute Is_Overriding_Operation plus minor code reorganization. Add missing decoration of attribute Overridden_Operation. * sem_elim.adb (Set_Eliminated): Replace test on Is_Overriding_Operation by test on the presence of Overridden_Operation. * sem_ch8.adb (Analyze_Subprogram_Renaming): Replace test on Is_Overriding_Operation by test on the presence of Overridden_Operation. Remove a redundant test on attribute Is_Overriding_Operation. * lib-xref.adb (Generate_Reference): Replace test on Is_Overriding_Operation by test on the presence of Overridden_Operation. (Output_References): Replace test on Is_Overriding_Operation by test on the presence of Overridden_Operation. * sem_disp.adb (Override_Dispatching_Operation): Replace test on Is_Overriding_Operation by test on the presence of Overridden_Operation. Add missing decoration of attribute Overridden_Operation. 2010-10-26 Robert Dewar <dewar@adacore.com> * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Properly check RM 13.4.1(10). 2010-10-26 Bob Duff <duff@adacore.com> * sem_res.adb (Resolve_Actuals): In case of certain internally-generated type conversions (created by OK_Convert_To, so the Conversion_OK flag is set), avoid fetching the component type when it's not really an array type, but a private type completed by an array type. From-SVN: r165945
2010-10-21a-cgaaso.ads, [...]: Minor reformattingRobert Dewar1-1/+1
2010-10-21 Robert Dewar <dewar@adacore.com> * a-cgaaso.ads, a-tags.ads, exp_ch3.adb, exp_attr.adb, exp_ch4.adb, exp_ch3.ads, exp_ch7.adb, exp_ch9.adb, exp_disp.adb, exp_disp.ads, exp_dist.adb, exp_util.adb, layout.adb, lib-xref.adb, lib.ads, prep.adb, prj-strt.adb, s-ststop.adb, s-taskin.ads, s-tataat.ads, sem_aggr.adb, sem_attr.adb, sem_ch12.adb, sem_ch3.adb, sem_ch4.adb, sem_ch4.ads, sem_ch5.adb, sem_res.adb, sem_util.adb, einfo.adb, g-sothco.ads, make.adb: Minor reformatting From-SVN: r165760
2010-10-18[multiple changes]Arnaud Charlet1-5/+1
2010-10-18 Javier Miranda <miranda@adacore.com> * exp_util.adb (Side_Effect_Free): Code clean up. 2010-10-18 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Is_Primitive_Operator_In_Use): Renamed from Is_Primitive_Operator. When ending the scope of a use package scope, a primitive operator remains in use if the base type has a current use (type) clause. 2010-10-18 Javier Miranda <miranda@adacore.com> * einfo.ads (Is_Dynamic_Support): Add missing support for limited private types whose full-view is a task type. * sem_util.adb (Enclosing_Subprogram): Add missing support for limited private types whose full-view is a task type. * exp_ch7.adb (Find_Final_List): Minor code cleanup replacing code by function Nearest_Dynamic_Scope which provides the needed functionality. 2010-10-18 Arnaud Charlet <charlet@adacore.com> * sem_prag.adb (Set_Exported): Do not generate error when exporting a variable with an address clause in codepeer mode. From-SVN: r165614
2010-10-08[multiple changes]Arnaud Charlet1-3/+3
2010-10-08 Robert Dewar <dewar@adacore.com> * sem_prag.adb (Check_Duplicate_Pragma): Check for entity match * gcc-interface/Make-lang.in: Update dependencies. * einfo.ads: Minor reformatting. 2010-10-08 Ed Schonberg <schonberg@adacore.com> * exp_ch5.adb, sem_ch3.adb, exp_ch7.adb, exp_util.adb, sem_aux.adb, sem_aux.ads, exp_ch4.adb, exp_ch6.adb, sem_ch6.adb, exp_aggr.adb, exp_ch3.adb: Change Is_Inherently_Limited_Type to Is_Immutably_Limited_Type to accord with new RM terminology. * sem_aux.adb (Is_Immutably_Limited_Type): A type that is a descendant of a formal limited private type is not immutably limited in a generic body. From-SVN: r165175
2010-09-10[multiple changes]Arnaud Charlet1-1/+1
2010-09-10 Thomas Quinot <quinot@adacore.com> * scos.ads: Add comments. 2010-09-10 Vincent Celier <celier@adacore.com> * gnatcmd.adb (Get_Closure): Remove useless invocation of Close. 2010-09-10 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb, exp_ch6.adb (Expand_Call): Establish a transient scope for a controlled build-in-place function call which appears in an anonymous context. The transient scope ensures that the intermediate function result is cleaned up after the master is left. (Make_Build_In_Place_Call_In_Anonymous_Context): Remove the creation of the transient scope. This is now done in Exand_Call which covers additional cases other than secondary stack release. 2010-09-10 Arnaud Charlet <charlet@adacore.com> * sem.adb (Do_Unit_And_Dependents): Add guard. 2010-09-10 Robert Dewar <dewar@adacore.com> * exp_ch5.adb: Update comments. * exp_dist.adb: Minor reformatting. From-SVN: r164187
2010-06-23[multiple changes]Arnaud Charlet1-20/+1
2010-06-23 Robert Dewar <dewar@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Properly handle checking returns in generic case. (Check_Missing_Return): New procedure. 2010-06-23 Robert Dewar <dewar@adacore.com> * bindgen.adb, switch-b.adb: Minor reformatting. 2010-06-23 Javier Miranda <miranda@adacore.com> * frontend.adb (Frontend): Add call to initialize the new package SCIL_LL. * exp_ch7.adb (Wrap_Transient_Expression): Remove call to Adjust_SCIL_Node. (Wrap_Transient_Statement): Remove call to Adjust_SCIL_Node. * sem_ch5.adb (Analyze_Iteration_Scheme.Process_Bounds): Remove call to Adjust_SCIL_Node. * exp_util.adb (Insert_Actions): Remove code for N_SCIL_Dispatch_Table_Object_Init and N_SCIL_Tag_Init nodes. (Remove_Side_Effects): Remove calls to Adjust_SCIL_Node. * sinfo.adb (SCIL_Entity, SCIL_Tag_Value): Remove checks on N_SCIL_Tag_Init and N_SCIL_Dispatch_Table_Object_Init in the assertion. (SCIL_Related_Node, Set_SCIL_Related_Node): Removed. * sinfo.ads (SCIL_Related_Node): Field removed. (N_SCIL_Dispatch_Table_Object_Init): Node removed. (N_SCIL_Tag_Init): Node removed. * sem_scil.ads, sem_scil.adb (Adjust_SCIL_Node): Removed. (Check_SCIL_Node): New implementation. (Find_SCIL_Node): Removed. * sem.adb (Analyze): Remove management of N_SCIL_Dispatch_Table_Object_Init and N_SCIL_Tag_Init nodes. * sem_util.adb (Insert_Explicit_Dereference): Remove call to Adjust_SCIL_Node. * exp_ch4.adb (Expand_N_In): Code cleanup: remove call to Set_SCIL_Related_Node and avoid adding the SCIL node before the referenced node using Insert_Action because this is not longer required. (Expand_Short_Circuit_Operator): Remove call to SCIL node. * exp_ch6.adb (Expand_Call): Remove call to Adjust_SCIL_Node. * sem_ch4.adb (Analyze_Type_Conversion): Remove call to Adjust_SCIL_Node * exp_disp.adb (Expand_Dispatching_Call): Minor code reorganization because we no longer require to generate the SCIL node before the call. (Make_DT): Remove generation of SCI_Dispatch_Table_Object_Init node. Remove calls to Set_SCIL_Related_Node and avoid adding the SCIL nodes before the referenced node using Insert_Action because this is not longer required. * atree.adb (Allocate_Initialize_Node, Replace, Rewrite): Add call to update the SCIL_Node field. * sprint.adb (Sprint_Node_Actual): Remove code for N_SCIL_Dispatch_Table_Object_Init and N_SCIL_Tag_Init nodes. * treepr.adb (Print_Node): Print the SCIL node field (if available). * exp_ch3.adb (Build_Init_Procedure): Remove generation of SCIL_Tag_Init nodes. * scil_ll.ads, scil_ll.adb: New files. From-SVN: r161244
2010-06-17exp_ch6.adb, [...]: Use Make_TemporaryRobert Dewar1-8/+4
2010-06-17 Robert Dewar <dewar@adacore.com> * exp_ch6.adb, exp_ch7.adb, exp_ch5.adb: Use Make_Temporary * tbuild.ads (Make_Temporary): More comment updates * tbuild.adb: Minor reformatting From-SVN: r160894
2009-11-30[multiple changes]Arnaud Charlet1-8/+19
2009-11-30 Javier Miranda <miranda@adacore.com> * exp_ch6.adb, sem_scil.adb (Adjust_SCIL_Node): Add missing management of N_Unchecked_Type_Conversion nodes when searching for SCIL nodes. (Expand_Call): Adjust decoration of SCIL node associated with relocated function call. 2009-11-30 Emmanuel Briot <briot@adacore.com> * prj-env.adb (Add_To_Source_Path): Preserve casing of directories 2009-11-30 Vincent Celier <celier@adacore.com> * opt.ads (No_Split_Units): New flag initialized to False 2009-11-30 Jerome Lambourg <lambourg@adacore.com> * exp_ch7.adb (Needs_Finalization): Add comments. * exp_ch3.adb (Make_Predefined_Primitive_Specs): Improve handling of CIL Value types. From-SVN: r154809
2009-11-30[multiple changes]Arnaud Charlet1-2/+3
2009-11-30 Vincent Celier <celier@adacore.com> * gnatcmd.adb (Check_Files): Recognize documented switches that have a separate parameter. 2009-11-30 Robert Dewar <dewar@adacore.com> * sem_util.ads: Minor reformatting * errout.adb: Minor reformatting Minor code reorganization (use N_Subprogram_Specification to simplify) * exp_ch7.adb: Add comment. From-SVN: r154802
2009-11-30[multiple changes]Arnaud Charlet1-1/+2
2009-11-30 Emmanuel Briot <briot@adacore.com> * clean.adb ("-eL"): Also set Follow_Links_For_Dirs, to match what is done in other project-aware tools like gnatmake and gprbuild. 2009-11-30 Jerome Lambourg <lambourg@adacore.com> * exp_ch3.adb (Make_Predefined_Primitive_Specs): Take care of CIL ValueTypes. * exp_ch7.adb (Needs_Finalization): Do not finalize CIL valuetypes. * sem_util.adb (Is_Value_Type): Protect against invalid calls to Chars (Is_Delegate): New method used for CIL. * sem_util.ads (Is_Delegate): New method for CIL handling. (Is_Value_Type): Improve documentation. 2009-11-30 Ed Schonberg <schonberg@adacore.com> * errout.adb (Unwind_Internal_Type): Improve error reporting if the type is an anonymous access to subprogram that is the type of a formal in a subprogram spec. 2009-11-30 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Check_Interfaces): In a Stand-Alone Library project, if attribute Interfaces is not declared, then Library_Interface should define the interfaces. 2009-11-30 Ed Schonberg <schonberg@adacore.com> * sem_prag.adb: New semantics for Annotate. From-SVN: r154800
2009-08-17[multiple changes]Arnaud Charlet1-3/+1
2009-08-17 Ed Schonberg <schonberg@adacore.com> * exp_ch3.adb (Build_Discriminant_Formals): If the discriminals already exist, as is the case for synchronized types, use the type of the discriminal in the parameter specification, to prevent a spurious subtype mismatch in gigi. 2009-08-17 Robert Dewar <dewar@adacore.com> * prj-env.adb: Minor reformatting * make.adb: Minor reformatting Comment updates 2009-08-17 Javier Miranda <miranda@adacore.com> * exp_ch7.adb (Wrap_Transient_Expression): Update comments. From-SVN: r150828
2009-08-10[multiple changes]Arnaud Charlet1-1/+3
2009-08-10 Robert Dewar <dewar@adacore.com> * exp_ch7.adb: Add ??? comment for last change 2009-08-10 Vincent Celier <celier@adacore.com> * prj-env.adb (Add_To_Buffer): New procedure (Create_Config_Pragmas_File): Write to temporary file in one shot (Create_Mapping_File): Ditto (Set_Ada_Paths): Ditto From-SVN: r150618
2009-08-07exp_ch7.adb (Wrap_Transient_Expression): Add missing adjustment of SCIL node.Javier Miranda1-1/+11
2009-08-07 Javier Miranda <miranda@adacore.com> * exp_ch7.adb (Wrap_Transient_Expression): Add missing adjustment of SCIL node. From-SVN: r150565
2009-07-29frontend.adb (Frontend): Code cleanup.Javier Miranda1-0/+1
2009-07-29 Javier Miranda <miranda@adacore.com> * frontend.adb (Frontend): Code cleanup. * exp_atag.ads, exp_atag.adb (Build_Get_Predefined_Prim_Op_Address): Rewriten as a procedure because it a new out-mode parameters to keep up-to-date the controlling tag node in the caller. (Build_Get_Prim_Op_Address): Rewriten as a procedure because it has a new out-mode parameter to keep up-to-date the controlling tag node in the caller. * exp_ch7.adb, sem_ch5.adb, exp_util.adb, sem_util.adb, exp_ch4.adb, exp_ch6.adb, sem_ch4.adb, exp_ch3.adb: Add new dependency on new package Sem_SCIL. * sem_aux.ads, sem_aux.adb (First_Non_SCIL_Node): Removed. Routine available in new package Sem_SCIL. (Next_Non_SCIL_Node): Ditto. * exp_disp.adb (Adjust_SCIL_Node): Removed. Routine available in new package Sem_SCIL. (Expand_Dispatching_Call): Update call to modified Exp_Atags routines plus complete decoration of SCIL dispatching node. (Find_SCIL_Node): Removed. Routine available in new package Sem_SCIL. * exp_disp.ads (Adjust_SCIL_Node): Removed. Routine available in new package Sem_SCIL. (Find_SCIL_Node): Removed. Routine available in new package Sem_SCIL. * exp_ch3.adb (Build_Init_Procedure): Fix comment. * sem_scil.ads, sem_scil.adb: New files. * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Addition of sem_scil.o. Update dependencies. From-SVN: r150199
2009-07-28gnat1drv.adb (Adjust_Global_Switches): Disable generation of SCIL nodes if ↵Javier Miranda1-0/+9
we are not generating code. 2009-07-28 Javier Miranda <miranda@adacore.com> * gnat1drv.adb (Adjust_Global_Switches): Disable generation of SCIL nodes if we are not generating code. * frontend.adb (Check_SCIL_Node): New subprogram. Used to check attribute SCIL_Related_Node of SCIL dispatching nodes. (Check_SCIL_Nodes): New instantiation of Traverse_Proc. * sinfo.ads (Is_SCIL_Node,Set_Is_SCIL_Node): Removed (SCIL_Nkind,Set_SCIL_Nkind): Removed. (SCIL_Entity): Update documentation. (SCIL_Related_Node): Update documentation. (SCIL_Controlling_Tag): New attribute. (SCIL_Target_Prim): Update documentation. (N_Null_Statement): Remove attributes associated with SCIL nodes. (N_SCIL_Dispatch_Table_Object_Init): New node. (N_SCIL_Dispatch_Table_Tag_Init): New node. (N_SCIL_Dispatching_Call): New node. (N_SCIL_Tag_Init): New node. * sinfo.adb (Is_SCIL_Node,Set_Is_SCIL_Node): Removed (SCIL_Nkind,Set_SCIL_Nkind): Removed. (SCIL_Controlling_Tag/Set_SCIL_Controlling_Tag): New subprogram. (SCIL_Entity,Set_SCIL_Entity): Applicable only to SCIL nodes. (SCIL_Related_Node,Set_SCIL_Related_Node): Applicable only to SCIL nodes (SCIL_Target_Prim,Set_SCIL_Target_Prim): Applicable only to N_SCIL_Dispatching_Call nodes. * sem.adb (Analyze): No need to analyze SCIL nodes. * sem_aux.ads, sem_aux.adb (First_Non_SCIL_Node): New subprogram (Next_Non_SCIL_Node): New subprogram * sem_ch4.adb (Analyze_Type_Conversion): Adjust relocated SCIL dispatching nodes. * sem_ch5.adb (Analyze_Iteration_Scheme): Adjust relocated SCIL dispatching node. * sem_util.adb (Insert_Explicit_Dereference): Adjust relocated SCIL dispatching node. * exp_ch3.adb (Build_Array_Init_Proc): Skip SCIL nodes when processing null statement nodes. (Build_Init_Procedure): Generate new SCIL node. * exp_ch4.adb (Expand_N_And_Then): Adjust relocated SCIL dispatching node. * exp_ch6.adb (Is_Null_Procedure): Skip SCIL nodes. Required because they are currently implemented as special N_Null_Statement nodes. * exp_ch7.adb (Wrap_Transient_Statement): If the relocated node is a procedure call then check if some SCIL node references it and needs readjustment. * exp_disp.ads (SCIL_Node_Kind): Removed. (Adjust_SCIL_Node): New subprogram. (Find_SCIL_Node): New subprogram. (Get_SCIL_Node_Kind): Removed. (New_SCIL_Node): Removed. * exp_disp.adb (Adjust_SCIL_Node): New subprogram (Expand_Dispatching_Call): Generate new SCIL dispatching node including decoration of its new controlling_tag attribute. (Get_SCIL_Node_Kind): Removed. (Find_SCIL_Node): New subprogram. (Make_Secondary_DT): Generate new SCIL nodes. (Make_Tags): Generate new SCIL nodes. (New_SCIL_Node): Removed. * exp_util.adb (Insert_Actions): Handle SCIL nodes. (Remove_Side_Effects): Check if relocated nodes require readjustment of some SCIL dispatching node. * gcc-interface/trans.c (gnat_to_gnu): Do nothing with new SCIL nodes. From-SVN: r150149
2009-07-15[multiple changes]Arnaud Charlet1-3/+2
2009-07-15 Robert Dewar <dewar@adacore.com> * exp_ch7.adb, exp_util.adb, tbuild.adb, tbuild.ads, exp_ch4.adb, exp_aggr.adb: Minor code reorganization (better calling sequence for Make_Temporary). 2009-07-15 Thomas Quinot <quinot@adacore.com> * opt.ads: Minor comment edits From-SVN: r149672
2009-07-13exp_ch7.adb, [...] (Make_Temporary): Utility to create a defining identifier ↵Ed Schonberg1-5/+1
and link it to the expression whose... 2009-07-13 Ed Schonberg <schonberg@adacore.com> * exp_ch7.adb, exp_util.adb, tbuild.adb, tbuild.ads, exp_ch4.adb, exp_aggr.adb (Make_Temporary): Utility to create a defining identifier and link it to the expression whose value it captures. From-SVN: r149585
2009-07-13[multiple changes]Arnaud Charlet1-0/+4
2009-07-13 Robert Dewar <dewar@adacore.com> * output.adb: Minor comment addition for last change * sinfo.ads: Minor reformatting 2009-07-13 Vasiliy Fofanov <fofanov@adacore.com> * adaint.c (__gnat_portable_no_block_spawn): on Windows, return -1 when spawn failed like on all other targets. 2009-07-13 Ed Schonberg <schonberg@adacore.com> * exp_ch7.adb: Indicate origin of temporary for transient expression. From-SVN: r149584
2009-07-10[multiple changes]Arnaud Charlet1-2/+3
2009-07-10 Thomas Quinot <quinot@adacore.com> * exp_ch7.adb: Update comments. 2009-07-10 Arnaud Charlet <charlet@adacore.com> * exp_ch13.adb (Expand_N_Record_Representation_Clause): Ignore mod clause if -gnatI is set instead of crashing. 2009-07-10 Ed Schonberg <schonberg@adacore.com> * sem_ch11.adb (Same_Expression): Null is always equal to itself. Additional work to remove redundant successive raise statements, in this case access checks. 2009-07-10 Vincent Celier <celier@adacore.com> * make.adb (Compile): Always create a deep copy of the mapping file argument (-gnatem=...) as it may be deallocate/reallocate by Normalize_Arguments. 2009-07-10 Javier Miranda <miranda@adacore.com> * einfo.adb (Directly_Designated_Type): Add assertion. * sem_res.adb (Check_Fully_Declared_Prefix): Add missing check on access types before using attribute Directly_Designated_Type. 2009-07-10 Emmanuel Briot <briot@adacore.com> * prj.ads: Minor typo fix 2009-07-10 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Add_Extra_Formal): Protected operations do no need special treatment. * exp_ch6.adb (Expand_Protected_Subprogram_Call): If rewritten subprogram is a function call, resolve properly, to ensure that extra actuals are added as needed. From-SVN: r149474
2009-07-10[multiple changes]Arnaud Charlet1-28/+8
2009-07-10 Ed Schonberg <schonberg@adacore.com> * exp_ch7.adb (Build_Final_List): If the list is being built for a Taft-Amendment type, place the finalization list in the package body, to ensure that the tree for the spec is identical whenever it is compiled. 2009-07-10 Javier Miranda <miranda@adacore.com> * sem_ch3.adb (Build_Derived_Record_Type): Use the full-view when inheriting attributes from a private Parent_Base. From-SVN: r149464
2009-04-29exp_ch7.adb (Build_Final_List): If the designated type is a Taft Amendment ↵Ed Schonberg1-0/+3
type... 2009-04-29 Ed Schonberg <schonberg@adacore.com> * exp_ch7.adb (Build_Final_List): If the designated type is a Taft Amendment type, add the with_clause for Finalization.List_Controller only if the current context is a package body. From-SVN: r146939
2009-04-29exp_ch7.adb, [...]: Minor reformattingThomas Quinot1-1/+1
2009-04-29 Thomas Quinot <quinot@adacore.com> * exp_ch7.adb, rtsfind.adb: Minor reformatting * sem_res.adb: Minor reformatting From-SVN: r146937