aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/lib-xref-alfa.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-08-04 15:26:25 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-08-04 15:26:25 +0200
commit483361a6819afa90d3aa85727b6ddfbe610d102c (patch)
tree025fee850df8ab0e5bd9d9f0880a3027214a746d /gcc/ada/lib-xref-alfa.adb
parentef5569c64bdbf0cdce0d1bf8a91edb825e5e413f (diff)
downloadgcc-483361a6819afa90d3aa85727b6ddfbe610d102c.zip
gcc-483361a6819afa90d3aa85727b6ddfbe610d102c.tar.gz
gcc-483361a6819afa90d3aa85727b6ddfbe610d102c.tar.bz2
[multiple changes]
2011-08-04 Sergey Rybin <rybin@adacore.com> * gnat_ugn.texi: Update doc on gnatcheck. 2011-08-04 Yannick Moy <moy@adacore.com> * lib-xref-alfa.adb (Add_ALFA_Xrefs): correct definition of ranges of xrefs in a scope. 2011-08-04 Yannick Moy <moy@adacore.com> * exp_prag.adb (Expand_Pragma_Check): in ALFA mode, return without performing expansion. * sem_ch6.adb (Analyze_Subprogram_Body_Helper, Analyze_Generic_Subprogram_Body): protect call to Process_PCCs so that it is not called in ALFA mode. From-SVN: r177382
Diffstat (limited to 'gcc/ada/lib-xref-alfa.adb')
-rw-r--r--gcc/ada/lib-xref-alfa.adb22
1 files changed, 10 insertions, 12 deletions
diff --git a/gcc/ada/lib-xref-alfa.adb b/gcc/ada/lib-xref-alfa.adb
index 4f52676..26bd28e 100644
--- a/gcc/ada/lib-xref-alfa.adb
+++ b/gcc/ada/lib-xref-alfa.adb
@@ -339,7 +339,6 @@ package body ALFA is
--------------------
procedure Add_ALFA_Xrefs is
- Prev_Scope_Idx : Scope_Index;
Cur_Scope_Idx : Scope_Index;
From_Xref_Idx : Xref_Index;
Cur_Entity : Entity_Id;
@@ -613,13 +612,12 @@ package body ALFA is
-- Initialize loop
- Prev_Scope_Idx := 1;
Cur_Scope_Idx := 1;
From_Xref_Idx := 1;
Cur_Entity := Empty;
- if ALFA_Scope_Table.Last /= 0 then
- ALFA_Scope_Table.Table (1).From_Xref := 1;
+ if ALFA_Scope_Table.Last = 0 then
+ return;
end if;
-- Loop to output references
@@ -721,9 +719,15 @@ package body ALFA is
pragma Assert (Is_Future_Scope_Entity (XE.Ent_Scope));
+ -- Update the range of cross references to which the current scope
+ -- refers to. This may be the empty range only for the first scope
+ -- considered.
+
if XE.Ent_Scope /= Cur_Scope then
ALFA_Scope_Table.Table (Cur_Scope_Idx).From_Xref :=
From_Xref_Idx;
+ ALFA_Scope_Table.Table (Cur_Scope_Idx).To_Xref :=
+ ALFA_Xref_Table.Last;
From_Xref_Idx := ALFA_Xref_Table.Last + 1;
end if;
@@ -732,14 +736,6 @@ package body ALFA is
pragma Assert (Cur_Scope_Idx <= ALFA_Scope_Table.Last);
end loop;
- if Prev_Scope_Idx /= Cur_Scope_Idx
- and then ALFA_Xref_Table.Last /= 0
- then
- ALFA_Scope_Table.Table (Prev_Scope_Idx).To_Xref :=
- ALFA_Xref_Table.Last;
- Prev_Scope_Idx := Cur_Scope_Idx;
- end if;
-
if XE.Ent /= Cur_Entity then
Cur_Entity_Name :=
new String'(Exact_Source_Name (Sloc (XE.Ent)));
@@ -758,6 +754,8 @@ package body ALFA is
end Add_One_Xref;
end loop;
+ -- Update the range of cross references to which the scope refers to
+
ALFA_Scope_Table.Table (Cur_Scope_Idx).From_Xref := From_Xref_Idx;
ALFA_Scope_Table.Table (Cur_Scope_Idx).To_Xref := ALFA_Xref_Table.Last;
end Add_ALFA_Xrefs;