diff options
| author | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-02 16:50:56 +0200 |
|---|---|---|
| committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-02 16:50:56 +0200 |
| commit | e8374e7af37c56a79c8d28b0f7367bcc5a4d6707 (patch) | |
| tree | a1b06e4ed6a4b1f7880a8bfe87725096075bfc2f /gcc/ada/lib-xref.ads | |
| parent | 1f6439e34bc08817b3a82b893810e14283fe280e (diff) | |
| download | gcc-e8374e7af37c56a79c8d28b0f7367bcc5a4d6707.zip gcc-e8374e7af37c56a79c8d28b0f7367bcc5a4d6707.tar.gz gcc-e8374e7af37c56a79c8d28b0f7367bcc5a4d6707.tar.bz2 | |
[multiple changes]
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
Diffstat (limited to 'gcc/ada/lib-xref.ads')
| -rw-r--r-- | gcc/ada/lib-xref.ads | 154 |
1 files changed, 139 insertions, 15 deletions
diff --git a/gcc/ada/lib-xref.ads b/gcc/ada/lib-xref.ads index 9fb8b2d..1d0749c 100644 --- a/gcc/ada/lib-xref.ads +++ b/gcc/ada/lib-xref.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2010, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2011, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -44,7 +44,7 @@ package Lib.Xref is -- This header precedes xref information (entities/references from -- the unit), identified by dependency number and file name. The -- dependency number is the index into the generated D lines and - -- is ones origin (i.e. 2 = reference to second generated D line). + -- its origin is one (i.e. 2 = reference to second generated D line). -- Note that the filename here will reflect the original name if -- a Source_Reference pragma was encountered (since all line number @@ -52,7 +52,7 @@ package Lib.Xref is -- The lines following the header look like - -- line type col level entity renameref instref typeref overref ref ref + -- line type col level entity renameref instref typeref overref ref ref -- line is the line number of the referenced entity. The name of -- the entity starts in column col. Columns are numbered from one, @@ -69,7 +69,7 @@ package Lib.Xref is -- level is a single character that separates the col and -- entity fields. It is an asterisk (*) for a top level library - -- entity that is publicly visible, as well for an entity declared + -- entity that is publicly visible, as well as for an entity declared -- in the visible part of a generic package, the plus sign (+) for -- a C/C++ static entity, and space otherwise. @@ -172,9 +172,11 @@ package Lib.Xref is -- b = body entity -- c = completion of private or incomplete type -- d = discriminant of type + -- D = object definition -- e = end of spec -- H = abstract type -- i = implicit reference + -- I = object definition with initialization -- k = implicit reference to parent unit in child unit -- l = label on END line -- m = modification @@ -567,6 +569,134 @@ package Lib.Xref is -- y abstract function entry or entry family -- z generic formal parameter (unused) + ------------------------------------------------------------- + -- Format of Local Cross-Reference Information in ALI File -- + ------------------------------------------------------------- + + -- Local cross-reference sections follow the cross-reference section in an + -- ALI file, so that they need not be read by gnatbind, gnatmake etc. + + -- A local cross-reference section has a header of the form + + -- S line type col entity + + -- These precisely define a subprogram or package, with the same + -- components as described for cross-reference sections. + + -- These sections are grouped in chapters for each unit introduced by + + -- F dependency-number filename + + -- Each section groups a number of cross-reference sub-sections introduced + -- by + + -- X dependency-number filename + + -- Inside each cross-reference sub-section, there are a number of + -- references like + + -- line type col entity ref ref ... + + ----------------------------------- + -- Local-Reference Entity Filter -- + ----------------------------------- + + Lref_Entity_Status : array (Entity_Kind) of Boolean := + (E_Void => False, + E_Variable => True, + E_Component => False, + E_Constant => True, + E_Discriminant => False, + + E_Loop_Parameter => True, + E_In_Parameter => True, + E_Out_Parameter => True, + E_In_Out_Parameter => True, + E_Generic_In_Out_Parameter => False, + + E_Generic_In_Parameter => False, + E_Named_Integer => False, + E_Named_Real => False, + E_Enumeration_Type => False, + E_Enumeration_Subtype => False, + + E_Signed_Integer_Type => False, + E_Signed_Integer_Subtype => False, + E_Modular_Integer_Type => False, + E_Modular_Integer_Subtype => False, + E_Ordinary_Fixed_Point_Type => False, + + E_Ordinary_Fixed_Point_Subtype => False, + E_Decimal_Fixed_Point_Type => False, + E_Decimal_Fixed_Point_Subtype => False, + E_Floating_Point_Type => False, + E_Floating_Point_Subtype => False, + + E_Access_Type => False, + E_Access_Subtype => False, + E_Access_Attribute_Type => False, + E_Allocator_Type => False, + E_General_Access_Type => False, + + E_Access_Subprogram_Type => False, + E_Access_Protected_Subprogram_Type => False, + E_Anonymous_Access_Subprogram_Type => False, + E_Anonymous_Access_Protected_Subprogram_Type => False, + E_Anonymous_Access_Type => False, + + E_Array_Type => False, + E_Array_Subtype => False, + E_String_Type => False, + E_String_Subtype => False, + E_String_Literal_Subtype => False, + + E_Class_Wide_Type => False, + E_Class_Wide_Subtype => False, + E_Record_Type => False, + E_Record_Subtype => False, + E_Record_Type_With_Private => False, + + E_Record_Subtype_With_Private => False, + E_Private_Type => False, + E_Private_Subtype => False, + E_Limited_Private_Type => False, + E_Limited_Private_Subtype => False, + + E_Incomplete_Type => False, + E_Incomplete_Subtype => False, + E_Task_Type => False, + E_Task_Subtype => False, + E_Protected_Type => False, + + E_Protected_Subtype => False, + E_Exception_Type => False, + E_Subprogram_Type => False, + E_Enumeration_Literal => False, + E_Function => True, + + E_Operator => True, + E_Procedure => True, + E_Entry => False, + E_Entry_Family => False, + E_Block => False, + + E_Entry_Index_Parameter => False, + E_Exception => False, + E_Generic_Function => False, + E_Generic_Package => False, + E_Generic_Procedure => False, + + E_Label => False, + E_Loop => False, + E_Return_Statement => False, + E_Package => False, + + E_Package_Body => False, + E_Protected_Object => False, + E_Protected_Body => False, + E_Task_Body => False, + E_Subprogram_Body => False); + -------------------------------------- -- Handling of Imported Subprograms -- -------------------------------------- @@ -611,17 +741,8 @@ package Lib.Xref is -- This procedure is called to record a reference. N is the location -- of the reference and E is the referenced entity. Typ is one of: -- - -- 'b' body entity - -- 'c' completion of incomplete or private type (see below) - -- 'e' end of construct - -- 'i' implicit reference - -- 'l' label on end line - -- 'm' modification - -- 'p' primitive operation - -- 'r' standard reference - -- 't' end of body - -- 'x' type extension - -- ' ' dummy reference (see below) + -- a character already described in the description of ref entries above + -- ' ' for dummy reference (see below) -- -- Note: all references to incomplete or private types are to the -- original (incomplete or private type) declaration. The full @@ -675,6 +796,9 @@ package Lib.Xref is procedure Output_References; -- Output references to the current ali file + procedure Output_Local_References; + -- Output references in each subprogram of the current ali file + procedure Initialize; -- Initialize internal tables |
