aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/lib-xref.ads
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-08-03 10:22:52 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-08-03 10:22:52 +0200
commit56e941863ba558a7a3426c686d6e5c08eefca90e (patch)
treeeeabf64a1a78064507c612cff6b0b9e20b698374 /gcc/ada/lib-xref.ads
parent4317e442b4eced893bf40c552deb37c303d81102 (diff)
downloadgcc-56e941863ba558a7a3426c686d6e5c08eefca90e.zip
gcc-56e941863ba558a7a3426c686d6e5c08eefca90e.tar.gz
gcc-56e941863ba558a7a3426c686d6e5c08eefca90e.tar.bz2
[multiple changes]
2011-08-03 Eric Botcazou <ebotcazou@adacore.com> * gnat_ugn.texi: Document -Wstack-usage. * gcc-interface/misc.c (enumerate_modes): Add guard for ghost FP modes. 2011-08-03 Thomas Quinot <quinot@adacore.com> * sem_prag.adb Issue an error (not a warning) when a C++ type does not have keyword LIMITED. 2011-08-03 Yannick Moy <moy@adacore.com> * alfa.adb, alfa.ads, alfa_test.adb: New files. * ali.adb (Known_ALI_Lines): add 'C' lines (SCO) and 'F' lines (ALFA) (Scan_ALI): do not issue a fatal error if parsing known lines after Xref section (does not happen in compiler, only if code directly calls Scan_ALI). * get_alfa.adb, get_alfa.ads: New files. * lib-writ.adb, lib-writ.ads (Write_ALI): output ALFA information if needed. * lib-xref-alfa.adb: New file. * lib-xref.adb, lib-xref.ads (Xref_Entry): redefine information needed in cross-references for ALFA. Push ALFA treatments in separated local package. (Enclosing_Subpragram_Or_Package): treat specially subprogram identifiers. Return entity of package body instead of spec. Return Empty for a scope with no location. (Generate_Reference): adapt to new components for ALFA information. Remove the need for D references on definitions. (Is_Local_Reference): moved to ALFA local package (Output_References): extract subfunction as Extract_Source_Name (Output_Local_References): remove procedure, replaced by filtering of cross-references in package ALFA and printing in Put_ALFA. (Write_Entity_Name): remove procedure * lib.adb, lib.ads (Extract_Source_Name): extract here function to print exact name of entity as it appears in source file (Unit_Ref_Table): make type public for use in Lib.Xref.ALFA * put_alfa.adb, put_alfa.ads: New files. * xref_lib.adb (Search_Xref): protect read of cross-references against reading other sections of the ALI file, in gnatxref (Search): protect read of cross-references against reading other sections of the ALI file, in gnatfind. * gcc-interface/Make-lang.in: Update dependencies. 2011-08-03 Thomas Quinot <quinot@adacore.com> * sem_ch3.adb: Minor reformatting. 2011-08-03 Jose Ruiz <ruiz@adacore.com> * s-inmaop-vxworks.adb (Setup_Interrupt_Mask): Do nothing instead of raising an exception. 2011-08-03 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Set_String_Literal_Subtype): if index type is an integer type, always use 1 as the lower bound or string, even if lower bound of context is not static, to handle properly null strings in a non-static context. 2011-08-03 Bob Duff <duff@adacore.com> * sem_prag.adb (Resolve_Aggregate): An array aggregate with 'others' is always legal on the right-hand side of an assignment statement; there is always an applicable index constraint in this case. Therefore, the check for Pkind = N_Assignment_Statement is now unconditional -- it doesn't depend on whether Is_Constrained (Typ). From-SVN: r177239
Diffstat (limited to 'gcc/ada/lib-xref.ads')
-rw-r--r--gcc/ada/lib-xref.ads156
1 files changed, 24 insertions, 132 deletions
diff --git a/gcc/ada/lib-xref.ads b/gcc/ada/lib-xref.ads
index 829e8723..c5aa20f 100644
--- a/gcc/ada/lib-xref.ads
+++ b/gcc/ada/lib-xref.ads
@@ -26,7 +26,9 @@
-- This package contains for collecting and outputting cross-reference
-- information.
-with Einfo; use Einfo;
+with Einfo; use Einfo;
+with Lib.Util; use Lib.Util;
+with Put_ALFA;
package Lib.Xref is
@@ -564,134 +566,6 @@ 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 --
--------------------------------------
@@ -708,6 +582,27 @@ package Lib.Xref is
-- Import at line 4, that its body is in C, and that the link name as given
-- in the pragma is "there".
+ ----------------------
+ -- ALFA Information --
+ ----------------------
+
+ -- This package defines procedures for collecting ALFA information and
+ -- printing in ALI files.
+
+ package ALFA is
+
+ procedure Collect_ALFA (Sdep_Table : Unit_Ref_Table; Num_Sdep : Nat);
+ -- Collect ALFA information from library units (for files and scopes)
+ -- and from cross-references. Fill in the tables in library package
+ -- called ALFA.
+
+ procedure Output_ALFA is new Put_ALFA;
+ -- Output ALFA information to the ALI files, based on the information
+ -- collected in the tables in library package called ALFA, and using
+ -- routines in Lib.Util.
+
+ end ALFA;
+
-----------------
-- Subprograms --
-----------------
@@ -790,9 +685,6 @@ 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