diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-04 15:26:25 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-04 15:26:25 +0200 |
commit | 483361a6819afa90d3aa85727b6ddfbe610d102c (patch) | |
tree | 025fee850df8ab0e5bd9d9f0880a3027214a746d /gcc/ada/lib-xref-alfa.adb | |
parent | ef5569c64bdbf0cdce0d1bf8a91edb825e5e413f (diff) | |
download | gcc-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.adb | 22 |
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; |