adabkend.adb, [...]: Everything with name 'Alfa' renamed in 'SPARK'.
authorYannick Moy <moy@adacore.com>
Wed, 24 Apr 2013 14:14:27 +0000 (14:14 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 24 Apr 2013 14:14:27 +0000 (16:14 +0200)
2013-04-24  Yannick Moy  <moy@adacore.com>

* adabkend.adb, ali-util.adb, ali.adb, debug.adb,
errout.adb, errout.ads, erroutc.adb, exp_ch3.adb, exp_ch4.adb,
exp_ch6.adb, exp_ch7.adb, exp_dbug.adb, exp_util.adb,
expander.adb, freeze.adb, gnat1drv.adb, lib-writ.adb,
lib-writ.ads, lib-xref.adb, lib-xref.ads, opt.adb, opt.ads,
restrict.adb, sem_aggr.adb, sem_attr.adb, sem_ch3.adb,
sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_eval.adb, sem_prag.adb,
sem_res.adb, sem_util.adb: Everything with name
'Alfa' renamed in 'SPARK'. Update comments.
Renaming of units with name 'Alfa', renamed with 'SPARK' instead.
* exp_alfa.adb: renamed exp_spark.adb.
* exp_alfa.ads: renamed exp_spark.ads.
* get_alfa.adb: renamed get_spark_xrefs.adb.
* get_alfa.ads: renamed get_spark_xrefs.ads.
* lib-xref-alfa.adb: renamed lib-xref-spark_specific.adb.
* put_alfa.adb: renamed put_spark_xrefs.adb.
* put_alfa.ads: renamed put_spark_xrefs.ads.
* alfa.adb: renamed spark_xrefs.adb.
* alfa.ads: renamed spark_xrefs.ads.
* alfa_test.adb: renamed spark_xrefs_test.adb.

From-SVN: r198234

55 files changed:
gcc/ada/ChangeLog
gcc/ada/adabkend.adb
gcc/ada/alfa.adb [deleted file]
gcc/ada/alfa.ads [deleted file]
gcc/ada/alfa_test.adb [deleted file]
gcc/ada/ali-util.adb
gcc/ada/ali.adb
gcc/ada/debug.adb
gcc/ada/errout.adb
gcc/ada/errout.ads
gcc/ada/erroutc.adb
gcc/ada/exp_alfa.adb [deleted file]
gcc/ada/exp_alfa.ads [deleted file]
gcc/ada/exp_ch3.adb
gcc/ada/exp_ch4.adb
gcc/ada/exp_ch6.adb
gcc/ada/exp_ch7.adb
gcc/ada/exp_dbug.adb
gcc/ada/exp_spark.adb [new file with mode: 0644]
gcc/ada/exp_spark.ads [new file with mode: 0644]
gcc/ada/exp_util.adb
gcc/ada/expander.adb
gcc/ada/freeze.adb
gcc/ada/gcc-interface/Make-lang.in
gcc/ada/get_alfa.adb [deleted file]
gcc/ada/get_alfa.ads [deleted file]
gcc/ada/get_spark_xrefs.adb [new file with mode: 0644]
gcc/ada/get_spark_xrefs.ads [new file with mode: 0644]
gcc/ada/gnat1drv.adb
gcc/ada/lib-writ.adb
gcc/ada/lib-writ.ads
gcc/ada/lib-xref-alfa.adb [deleted file]
gcc/ada/lib-xref-spark_specific.adb [new file with mode: 0644]
gcc/ada/lib-xref.adb
gcc/ada/lib-xref.ads
gcc/ada/opt.adb
gcc/ada/opt.ads
gcc/ada/put_alfa.adb [deleted file]
gcc/ada/put_alfa.ads [deleted file]
gcc/ada/put_spark_xrefs.adb [new file with mode: 0644]
gcc/ada/put_spark_xrefs.ads [new file with mode: 0644]
gcc/ada/restrict.adb
gcc/ada/sem_aggr.adb
gcc/ada/sem_attr.adb
gcc/ada/sem_ch3.adb
gcc/ada/sem_ch4.adb
gcc/ada/sem_ch5.adb
gcc/ada/sem_ch6.adb
gcc/ada/sem_eval.adb
gcc/ada/sem_prag.adb
gcc/ada/sem_res.adb
gcc/ada/sem_util.adb
gcc/ada/spark_xrefs.adb [new file with mode: 0644]
gcc/ada/spark_xrefs.ads [new file with mode: 0644]
gcc/ada/spark_xrefs_test.adb [new file with mode: 0644]

index 58590108402d9cb5dc0a689beb60711aaf35ddff..4f8e025dd497d15c40c99e4ef153b4b1fc408c0b 100644 (file)
@@ -1,3 +1,27 @@
+2013-04-24  Yannick Moy  <moy@adacore.com>
+
+       * adabkend.adb, ali-util.adb, ali.adb, debug.adb,
+       errout.adb, errout.ads, erroutc.adb, exp_ch3.adb, exp_ch4.adb,
+       exp_ch6.adb, exp_ch7.adb, exp_dbug.adb, exp_util.adb,
+       expander.adb, freeze.adb, gnat1drv.adb, lib-writ.adb,
+       lib-writ.ads, lib-xref.adb, lib-xref.ads, opt.adb, opt.ads,
+       restrict.adb, sem_aggr.adb, sem_attr.adb, sem_ch3.adb,
+       sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_eval.adb, sem_prag.adb,
+       sem_res.adb, sem_util.adb: Everything with name
+       'Alfa' renamed in 'SPARK'. Update comments.
+       Renaming of units with name 'Alfa', renamed with 'SPARK' instead.
+       * exp_alfa.adb: renamed exp_spark.adb.
+       * exp_alfa.ads: renamed exp_spark.ads.
+       * get_alfa.adb: renamed get_spark_xrefs.adb.
+       * get_alfa.ads: renamed get_spark_xrefs.ads.
+       * lib-xref-alfa.adb: renamed lib-xref-spark_specific.adb.
+       * put_alfa.adb: renamed put_spark_xrefs.adb.
+       * put_alfa.ads: renamed put_spark_xrefs.ads.
+       * alfa.adb: renamed spark_xrefs.adb.
+       * alfa.ads: renamed spark_xrefs.ads.
+       * alfa_test.adb: renamed spark_xrefs_test.adb.
+       * gcc-interface/Make-lang.in: Update dependencies.
+
 2013-04-24  Robert Dewar  <dewar@adacore.com>
 
        * gnat_rm.texi: Document pragma Assume.
index 6588b4f3f9cca0579f3cb70e292162594c859966..4a77920a2d6069c03cdb38654f111fd48315aa6c 100644 (file)
@@ -235,12 +235,12 @@ package body Adabkend is
                if Is_Switch (Argv) then
                   Fail ("Object file name missing after -gnatO");
 
-               --  In Alfa_Mode, such an object file is never written, and the
+               --  In SPARK_Mode, such an object file is never written, and the
                --  call to Set_Output_Object_File_Name may fail (e.g. when the
                --  object file name does not have the expected suffix). So we
-               --  skip that call when Alfa_Mode is set.
+               --  skip that call when SPARK_Mode is set.
 
-               elsif Alfa_Mode then
+               elsif SPARK_Mode then
                   Output_File_Name_Seen := True;
 
                else
diff --git a/gcc/ada/alfa.adb b/gcc/ada/alfa.adb
deleted file mode 100644 (file)
index 6aceb1b..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                                 A L F A                                  --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---             Copyright (C) 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
-with Output;   use Output;
-with Put_Alfa;
-
-package body Alfa is
-
-   -----------
-   -- dalfa --
-   -----------
-
-   procedure dalfa is
-   begin
-      --  Dump Alfa file table
-
-      Write_Line ("Alfa File Table");
-      Write_Line ("---------------");
-
-      for Index in 1 .. Alfa_File_Table.Last loop
-         declare
-            AFR : Alfa_File_Record renames Alfa_File_Table.Table (Index);
-
-         begin
-            Write_Str ("  ");
-            Write_Int (Int (Index));
-            Write_Str (".  File_Num = ");
-            Write_Int (Int (AFR.File_Num));
-            Write_Str ("  File_Name = """);
-
-            if AFR.File_Name /= null then
-               Write_Str (AFR.File_Name.all);
-            end if;
-
-            Write_Char ('"');
-            Write_Str ("  From = ");
-            Write_Int (Int (AFR.From_Scope));
-            Write_Str ("  To = ");
-            Write_Int (Int (AFR.To_Scope));
-            Write_Eol;
-         end;
-      end loop;
-
-      --  Dump Alfa scope table
-
-      Write_Eol;
-      Write_Line ("Alfa Scope Table");
-      Write_Line ("----------------");
-
-      for Index in 1 .. Alfa_Scope_Table.Last loop
-         declare
-            ASR : Alfa_Scope_Record renames Alfa_Scope_Table.Table (Index);
-
-         begin
-            Write_Str ("  ");
-            Write_Int (Int (Index));
-            Write_Str (".  File_Num = ");
-            Write_Int (Int (ASR.File_Num));
-            Write_Str ("  Scope_Num = ");
-            Write_Int (Int (ASR.Scope_Num));
-            Write_Str ("  Scope_Name = """);
-
-            if ASR.Scope_Name /= null then
-               Write_Str (ASR.Scope_Name.all);
-            end if;
-
-            Write_Char ('"');
-            Write_Str  ("  Line = ");
-            Write_Int  (Int (ASR.Line));
-            Write_Str  ("  Col = ");
-            Write_Int  (Int (ASR.Col));
-            Write_Str  ("  Type = ");
-            Write_Char (ASR.Stype);
-            Write_Str  ("  From = ");
-            Write_Int  (Int (ASR.From_Xref));
-            Write_Str  ("  To = ");
-            Write_Int  (Int (ASR.To_Xref));
-            Write_Str  ("  Scope_Entity = ");
-            Write_Int  (Int (ASR.Scope_Entity));
-            Write_Eol;
-         end;
-      end loop;
-
-      --  Dump Alfa cross-reference table
-
-      Write_Eol;
-      Write_Line ("Alfa Xref Table");
-      Write_Line ("---------------");
-
-      for Index in 1 .. Alfa_Xref_Table.Last loop
-         declare
-            AXR : Alfa_Xref_Record renames Alfa_Xref_Table.Table (Index);
-
-         begin
-            Write_Str  ("  ");
-            Write_Int  (Int (Index));
-            Write_Str (".  Entity_Name = """);
-
-            if AXR.Entity_Name /= null then
-               Write_Str (AXR.Entity_Name.all);
-            end if;
-
-            Write_Char ('"');
-            Write_Str ("  Entity_Line = ");
-            Write_Int (Int (AXR.Entity_Line));
-            Write_Str ("  Entity_Col = ");
-            Write_Int (Int (AXR.Entity_Col));
-            Write_Str ("  File_Num = ");
-            Write_Int (Int (AXR.File_Num));
-            Write_Str ("  Scope_Num = ");
-            Write_Int (Int (AXR.Scope_Num));
-            Write_Str ("  Line = ");
-            Write_Int (Int (AXR.Line));
-            Write_Str ("  Col = ");
-            Write_Int (Int (AXR.Col));
-            Write_Str ("  Type = ");
-            Write_Char (AXR.Rtype);
-            Write_Eol;
-         end;
-      end loop;
-   end dalfa;
-
-   ----------------
-   -- Initialize --
-   ----------------
-
-   procedure Initialize_Alfa_Tables is
-   begin
-      Alfa_File_Table.Init;
-      Alfa_Scope_Table.Init;
-      Alfa_Xref_Table.Init;
-   end Initialize_Alfa_Tables;
-
-   -----------
-   -- palfa --
-   -----------
-
-   procedure palfa is
-
-      procedure Write_Info_Char (C : Character) renames Write_Char;
-      --  Write one character;
-
-      function Write_Info_Col return Positive;
-      --  Return next column for writing
-
-      procedure Write_Info_Initiate (Key : Character) renames Write_Char;
-      --  Start new one and write one character;
-
-      procedure Write_Info_Nat (N : Nat);
-      --  Write value of N
-
-      procedure Write_Info_Terminate renames Write_Eol;
-      --  Terminate current line
-
-      --------------------
-      -- Write_Info_Col --
-      --------------------
-
-      function Write_Info_Col return Positive is
-      begin
-         return Positive (Column);
-      end Write_Info_Col;
-
-      --------------------
-      -- Write_Info_Nat --
-      --------------------
-
-      procedure Write_Info_Nat (N : Nat) is
-      begin
-         Write_Int (N);
-      end Write_Info_Nat;
-
-      procedure Debug_Put_Alfa is new Put_Alfa;
-
-   --  Start of processing for palfa
-
-   begin
-      Debug_Put_Alfa;
-   end palfa;
-
-end Alfa;
diff --git a/gcc/ada/alfa.ads b/gcc/ada/alfa.ads
deleted file mode 100644 (file)
index 26c8247..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                                 A L F A                                  --
---                                                                          --
---                                 S p e c                                  --
---                                                                          --
---          Copyright (C) 2011-2012, 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
---  This package defines tables used to store information needed for the Alfa
---  mode. It is used by procedures in Lib.Xref.Alfa to build the Alfa
---  information before writing it out to the ALI file, and by Get_Alfa/Put_Alfa
---  to read and write the text form that is used in the ALI file.
-
-with Types;      use Types;
-with GNAT.Table;
-
-package Alfa is
-
-   --  Alfa information can exist in one of two forms. In the ALI file, it is
-   --  represented using a text format that is described in this specification.
-   --  Internally it is stored using three tables Alfa_Xref_Table,
-   --  Alfa_Scope_Table and Alfa_File_Table, which are also defined in this
-   --  unit.
-
-   --  Lib.Xref.Alfa is part of the compiler. It extracts Alfa information from
-   --  the complete set of cross-references generated during compilation.
-
-   --  Get_Alfa reads the text lines in ALI format and populates the internal
-   --  tables with corresponding information.
-
-   --  Put_Alfa reads the internal tables and generates text lines in the ALI
-   --  format.
-
-   ---------------------
-   -- Alfa ALI Format --
-   ---------------------
-
-   --  Alfa information is generated on a unit-by-unit basis in the ALI file,
-   --  using lines that start with the identifying character F ("Formal").
-   --  These lines are generated if one of the -gnatd.E (SPARK generation mode)
-   --  or gnatd.F (Why generation mode) switches is set.
-
-   --  The Alfa information follows the cross-reference information, so it
-   --  needs not be read by tools like gnatbind, gnatmake etc.
-
-   --  -------------------
-   --  -- Scope Section --
-   --  -------------------
-
-   --  A first section defines the scopes in which entities are defined and
-   --  referenced. A scope is a package/subprogram declaration/body. Note that
-   --  a package declaration and body define two different scopes. Similarly, a
-   --  subprogram declaration and body, when both present, define two different
-   --  scopes.
-
-   --    FD dependency-number filename (-> unit-filename)?
-
-   --      This header precedes scope information for the unit identified by
-   --      dependency number and file name. The dependency number is the index
-   --      into the generated D lines and is ones-origin (e.g. 2 = reference to
-   --      second generated D line).
-
-   --      The list of FD lines should match the list of D lines defined in the
-   --      ALI file, in the same order.
-
-   --      Note that the filename here will reflect the original name if a
-   --      Source_Reference pragma was encountered (since all line number
-   --      references will be with respect to the original file).
-
-   --      Note: the filename is redundant in that it could be deduced from the
-   --      corresponding D line, but it is convenient at least for human
-   --      reading of the Alfa information, and means that the Alfa information
-   --      can stand on its own without needing other parts of the ALI file.
-
-   --      The optional unit filename is given only for subunits.
-
-   --    FS . scope line type col entity (-> spec-file . spec-scope)?
-
-   --      (The ? mark stands for an optional entry in the syntax)
-
-   --      scope is the ones-origin scope number for the current file (e.g. 2 =
-   --      reference to the second FS line in this FD block).
-
-   --      line is the line number of the scope entity. The name of the entity
-   --      starts in column col. Columns are numbered from one, and if
-   --      horizontal tab characters are present, the column number is computed
-   --      assuming standard 1,9,17,.. tab stops. For example, if the entity is
-   --      the first token on the line, and is preceded by space-HT-space, then
-   --      the column would be column 10.
-
-   --      type is a single letter identifying the type of the entity, using
-   --      the same code as in cross-references:
-
-   --        K = package
-   --        V = function
-   --        U = procedure
-
-   --      col is the column number of the scope entity
-
-   --      entity is the name of the scope entity, with casing in the canonical
-   --      casing for the source file where it is defined.
-
-   --      spec-file and spec-scope are respectively the file and scope for the
-   --      spec corresponding to the current body scope, when they differ.
-
-   --  ------------------
-   --  -- Xref Section --
-   --  ------------------
-
-   --  A second section defines cross-references useful for computing the set
-   --  of global variables read/written in each subprogram/package.
-
-   --    FX dependency-number filename . entity-number entity
-
-   --      dependency-number and filename identity a file in FD lines
-
-   --      entity-number and identity identify a scope entity in FS lines for
-   --      the file previously identified.
-
-   --    line typ col entity ref*
-
-   --      line is the line number of the referenced entity
-
-   --      typ is the type of the referenced entity, using a code similar to
-   --      the one used for cross-references:
-
-   --        > = IN parameter
-   --        < = OUT parameter
-   --        = = IN OUT parameter
-   --        * = all other cases
-
-   --      col is the column number of the referenced entity
-
-   --      entity is the name of the referenced entity as written in the source
-   --      file where it is defined.
-
-   --  There may be zero or more ref entries on each line
-
-   --    (file |)? ((. scope :)? line type col)*
-
-   --      file is the dependency number of the file with the reference. It and
-   --      the following vertical bar are omitted if the file is the same as
-   --      the previous ref, and the refs for the current file are first (and
-   --      do not need a bar).
-
-   --      scope is the scope number of the scope with the reference. It and
-   --      the following colon are omitted if the scope is the same as the
-   --      previous ref, and the refs for the current scope are first (and do
-   --      not need a colon).
-
-   --      line is the line number of the reference
-
-   --      col is the column number of the reference
-
-   --      type is one of the following, using the same code as in
-   --      cross-references:
-
-   --        m = modification
-   --        r = reference
-   --        s = subprogram reference in a static call
-
-   --  Special entries for reads and writes to memory reference a special
-   --  variable called "__HEAP". These special entries are present in every
-   --  scope where reads and writes to memory are present. Line and column for
-   --  this special variable are always 0.
-
-   --    Examples: ??? add examples here
-
-   ----------------
-   -- Xref Table --
-   ----------------
-
-   --  The following table records Alfa cross-references
-
-   type Xref_Index is new Int;
-   --  Used to index values in this table. Values start at 1 and are assigned
-   --  sequentially as entries are constructed.
-
-   type Alfa_Xref_Record is record
-      Entity_Name : String_Ptr;
-      --  Pointer to entity name in ALI file
-
-      Entity_Line : Nat;
-      --  Line number for the entity referenced
-
-      Etype : Character;
-      --  Indicates type of entity, using code used in ALI file:
-      --    > = IN parameter
-      --    < = OUT parameter
-      --    = = IN OUT parameter
-      --    * = all other cases
-
-      Entity_Col : Nat;
-      --  Column number for the entity referenced
-
-      File_Num : Nat;
-      --  Set to the file dependency number for the cross-reference. Note
-      --  that if no file entry is present explicitly, this is just a copy
-      --  of the reference for the current cross-reference section.
-
-      Scope_Num : Nat;
-      --  Set to the scope number for the cross-reference. Note that if no
-      --  scope entry is present explicitly, this is just a copy of the
-      --  reference for the current cross-reference section.
-
-      Line : Nat;
-      --  Line number for the reference
-
-      Rtype : Character;
-      --  Indicates type of reference, using code used in ALI file:
-      --    r = reference
-      --    m = modification
-      --    s = call
-
-      Col : Nat;
-      --  Column number for the reference
-   end record;
-
-   package Alfa_Xref_Table is new GNAT.Table (
-     Table_Component_Type => Alfa_Xref_Record,
-     Table_Index_Type     => Xref_Index,
-     Table_Low_Bound      => 1,
-     Table_Initial        => 2000,
-     Table_Increment      => 300);
-
-   -----------------
-   -- Scope Table --
-   -----------------
-
-   --  This table keeps track of the scopes and the corresponding starting and
-   --  ending indexes (From, To) in the Xref table.
-
-   type Scope_Index is new Int;
-   --  Used to index values in this table. Values start at 1 and are assigned
-   --  sequentially as entries are constructed.
-
-   type Alfa_Scope_Record is record
-      Scope_Name : String_Ptr;
-      --  Pointer to scope name in ALI file
-
-      File_Num : Nat;
-      --  Set to the file dependency number for the scope
-
-      Scope_Num : Nat;
-      --  Set to the scope number for the scope
-
-      Spec_File_Num : Nat;
-      --  Set to the file dependency number for the scope corresponding to the
-      --  spec of the current scope entity, if different, or else 0.
-
-      Spec_Scope_Num : Nat;
-      --  Set to the scope number for the scope corresponding to the spec of
-      --  the current scope entity, if different, or else 0.
-
-      Line : Nat;
-      --  Line number for the scope
-
-      Stype : Character;
-      --  Indicates type of scope, using code used in ALI file:
-      --    K = package
-      --    V = function
-      --    U = procedure
-
-      Col : Nat;
-      --  Column number for the scope
-
-      From_Xref : Xref_Index;
-      --  Starting index in Xref table for this scope
-
-      To_Xref : Xref_Index;
-      --  Ending index in Xref table for this scope
-
-      --  The following component is only used in-memory, not printed out in
-      --  ALI file.
-
-      Scope_Entity : Entity_Id := Empty;
-      --  Entity (subprogram or package) for the scope
-   end record;
-
-   package Alfa_Scope_Table is new GNAT.Table (
-     Table_Component_Type => Alfa_Scope_Record,
-     Table_Index_Type     => Scope_Index,
-     Table_Low_Bound      => 1,
-     Table_Initial        => 200,
-     Table_Increment      => 300);
-
-   ----------------
-   -- File Table --
-   ----------------
-
-   --  This table keeps track of the units and the corresponding starting and
-   --  ending indexes (From, To) in the Scope table.
-
-   type File_Index is new Int;
-   --  Used to index values in this table. Values start at 1 and are assigned
-   --  sequentially as entries are constructed.
-
-   type Alfa_File_Record is record
-      File_Name : String_Ptr;
-      --  Pointer to file name in ALI file
-
-      Unit_File_Name : String_Ptr;
-      --  Pointer to file name for unit in ALI file, when File_Name refers to a
-      --  subunit. Otherwise null.
-
-      File_Num : Nat;
-      --  Dependency number in ALI file
-
-      From_Scope : Scope_Index;
-      --  Starting index in Scope table for this unit
-
-      To_Scope : Scope_Index;
-      --  Ending index in Scope table for this unit
-   end record;
-
-   package Alfa_File_Table is new GNAT.Table (
-     Table_Component_Type => Alfa_File_Record,
-     Table_Index_Type     => File_Index,
-     Table_Low_Bound      => 1,
-     Table_Initial        => 20,
-     Table_Increment      => 200);
-
-   ---------------
-   -- Constants --
-   ---------------
-
-   Name_Of_Heap_Variable : constant String := "__HEAP";
-   --  Name of special variable used in effects to denote reads and writes
-   --  through explicit dereference.
-
-   -----------------
-   -- Subprograms --
-   -----------------
-
-   procedure Initialize_Alfa_Tables;
-   --  Reset tables for a new compilation
-
-   procedure dalfa;
-   --  Debug routine to dump internal Alfa tables. This is a raw format dump
-   --  showing exactly what the tables contain.
-
-   procedure palfa;
-   --  Debugging procedure to output contents of Alfa binary tables in the
-   --  format in which they appear in an ALI file.
-
-end Alfa;
diff --git a/gcc/ada/alfa_test.adb b/gcc/ada/alfa_test.adb
deleted file mode 100644 (file)
index 9e3f78d..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                          GNAT SYSTEM UTILITIES                           --
---                                                                          --
---                            A L F A _ T E S T                             --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---            Copyright (C) 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
---  This utility program is used to test proper operation of the Get_Alfa and
---  Put_Alfa units. To run it, compile any source file with switch -gnatd.E or
---  -gnatd.F to get an ALI file file.ALI containing Alfa information. Then run
---  this utility using:
-
---     Alfa_Test file.ali
-
---  This test will read the Alfa information from the ALI file, and use
---  Get_Alfa to store this in binary form in the internal tables in Alfa. Then
---  Put_Alfa is used to write the information from these tables back into text
---  form. This output is compared with the original Alfa information in the ALI
---  file and the two should be identical. If not an error message is output.
-
-with Get_Alfa;
-with Put_Alfa;
-
-with Alfa;  use Alfa;
-with Types; use Types;
-
-with Ada.Command_Line;      use Ada.Command_Line;
-with Ada.Streams;           use Ada.Streams;
-with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
-with Ada.Text_IO;
-
-with GNAT.OS_Lib; use GNAT.OS_Lib;
-
-procedure Alfa_Test is
-   Infile    : File_Type;
-   Name1     : String_Access;
-   Outfile_1 : File_Type;
-   Name2     : String_Access;
-   Outfile_2 : File_Type;
-   C         : Character;
-
-   Stop : exception;
-   --  Terminate execution
-
-   Diff_Exec   : constant String_Access := Locate_Exec_On_Path ("diff");
-   Diff_Result : Integer;
-
-   use ASCII;
-
-begin
-   if Argument_Count /= 1 then
-      Ada.Text_IO.Put_Line ("Usage: alfa_test FILE.ali");
-      raise Stop;
-   end if;
-
-   Name1 := new String'(Argument (1) & ".1");
-   Name2 := new String'(Argument (1) & ".2");
-
-   Open   (Infile,    In_File,  Argument (1));
-   Create (Outfile_1, Out_File, Name1.all);
-   Create (Outfile_2, Out_File, Name2.all);
-
-   --  Read input file till we get to first 'F' line
-
-   Process : declare
-      Output_Col : Positive := 1;
-
-      function Get_Char (F : File_Type) return Character;
-      --  Read one character from specified  file
-
-      procedure Put_Char (F : File_Type; C : Character);
-      --  Write one character to specified file
-
-      function Get_Output_Col return Positive;
-      --  Return current column in output file, where each line starts at
-      --  column 1 and terminate with LF, and HT is at columns 1, 9, etc.
-      --  All output is supposed to be carried through Put_Char.
-
-      --------------
-      -- Get_Char --
-      --------------
-
-      function Get_Char (F : File_Type) return Character is
-         Item : Stream_Element_Array (1 .. 1);
-         Last : Stream_Element_Offset;
-
-      begin
-         Read (F, Item, Last);
-
-         if Last /= 1 then
-            return Types.EOF;
-         else
-            return Character'Val (Item (1));
-         end if;
-      end Get_Char;
-
-      --------------------
-      -- Get_Output_Col --
-      --------------------
-
-      function Get_Output_Col return Positive is
-      begin
-         return Output_Col;
-      end Get_Output_Col;
-
-      --------------
-      -- Put_Char --
-      --------------
-
-      procedure Put_Char (F : File_Type; C : Character) is
-         Item : Stream_Element_Array (1 .. 1);
-
-      begin
-         if C /= CR and then C /= EOF then
-            if C = LF then
-               Output_Col := 1;
-            elsif C = HT then
-               Output_Col := ((Output_Col + 6) / 8) * 8 + 1;
-            else
-               Output_Col := Output_Col + 1;
-            end if;
-
-            Item (1) := Character'Pos (C);
-            Write (F, Item);
-         end if;
-      end Put_Char;
-
-      --  Subprograms used by Get_Alfa (these also copy the output to Outfile_1
-      --  for later comparison with the output generated by Put_Alfa).
-
-      function  Getc  return Character;
-      function  Nextc return Character;
-      procedure Skipc;
-
-      ----------
-      -- Getc --
-      ----------
-
-      function Getc  return Character is
-         C : Character;
-      begin
-         C := Get_Char (Infile);
-         Put_Char (Outfile_1, C);
-         return C;
-      end Getc;
-
-      -----------
-      -- Nextc --
-      -----------
-
-      function Nextc return Character is
-         C : Character;
-
-      begin
-         C := Get_Char (Infile);
-
-         if C /= EOF then
-            Set_Index (Infile, Index (Infile) - 1);
-         end if;
-
-         return C;
-      end Nextc;
-
-      -----------
-      -- Skipc --
-      -----------
-
-      procedure Skipc is
-         C : Character;
-         pragma Unreferenced (C);
-      begin
-         C := Getc;
-      end Skipc;
-
-      --  Subprograms used by Put_Alfa, which write information to Outfile_2
-
-      function Write_Info_Col return Positive;
-      procedure Write_Info_Char (C : Character);
-      procedure Write_Info_Initiate (Key : Character);
-      procedure Write_Info_Nat (N : Nat);
-      procedure Write_Info_Terminate;
-
-      --------------------
-      -- Write_Info_Col --
-      --------------------
-
-      function Write_Info_Col return Positive is
-      begin
-         return Get_Output_Col;
-      end Write_Info_Col;
-
-      ---------------------
-      -- Write_Info_Char --
-      ---------------------
-
-      procedure Write_Info_Char (C : Character) is
-      begin
-         Put_Char (Outfile_2, C);
-      end Write_Info_Char;
-
-      -------------------------
-      -- Write_Info_Initiate --
-      -------------------------
-
-      procedure Write_Info_Initiate (Key : Character) is
-      begin
-         Write_Info_Char (Key);
-      end Write_Info_Initiate;
-
-      --------------------
-      -- Write_Info_Nat --
-      --------------------
-
-      procedure Write_Info_Nat (N : Nat) is
-      begin
-         if N > 9 then
-            Write_Info_Nat (N / 10);
-         end if;
-
-         Write_Info_Char (Character'Val (48 + N mod 10));
-      end Write_Info_Nat;
-
-      --------------------------
-      -- Write_Info_Terminate --
-      --------------------------
-
-      procedure Write_Info_Terminate is
-      begin
-         Write_Info_Char (LF);
-      end Write_Info_Terminate;
-
-      --  Local instantiations of Put_Alfa and Get_Alfa
-
-      procedure Get_Alfa_Info is new Get_Alfa;
-      procedure Put_Alfa_Info is new Put_Alfa;
-
-   --  Start of processing for Process
-
-   begin
-      --  Loop to skip till first 'F' line
-
-      loop
-         C := Get_Char (Infile);
-
-         if C = EOF then
-            raise Stop;
-
-         elsif C = LF or else C = CR then
-            loop
-               C := Get_Char (Infile);
-               exit when C /= LF and then C /= CR;
-            end loop;
-
-            exit when C = 'F';
-         end if;
-      end loop;
-
-      --  Position back to initial 'F' of first 'F' line
-
-      Set_Index (Infile, Index (Infile) - 1);
-
-      --  Read Alfa information to internal Alfa tables, also copying Alfa info
-      --  to Outfile_1.
-
-      Initialize_Alfa_Tables;
-      Get_Alfa_Info;
-
-      --  Write Alfa information from internal Alfa tables to Outfile_2
-
-      Put_Alfa_Info;
-
-      --  Junk blank line (see comment at end of Lib.Writ)
-
-      Write_Info_Terminate;
-
-      --  Flush to disk
-
-      Close (Outfile_1);
-      Close (Outfile_2);
-
-      --  Now Outfile_1 and Outfile_2 should be identical
-
-      Diff_Result :=
-        Spawn (Diff_Exec.all,
-               Argument_String_To_List
-                 ("-u " & Name1.all & " " & Name2.all).all);
-
-      if Diff_Result /= 0 then
-         Ada.Text_IO.Put_Line ("diff(1) exit status" & Diff_Result'Img);
-      end if;
-
-      OS_Exit (Diff_Result);
-
-   end Process;
-
-exception
-   when Stop =>
-      null;
-end Alfa_Test;
index 514be3ce8de0e8d32521f42b981a2e91182ffe0f..92380f8eb354980a23859b4830a005f27689f00d 100644 (file)
@@ -278,7 +278,7 @@ package body ALI.Util is
                   --  generated, so No_Object=True is not considered an error.
 
                   elsif ALIs.Table (Idread).No_Object
-                    and then not Alfa_Mode
+                    and then not SPARK_Mode
                     and then not Ignore_Errors
                   then
                      Error_Msg_File_1 := Withs.Table (W).Sfile;
index bea2b10c95b793fe32d7505b0585aa770e1a725b..6c2f8187a925ccfa094fdde7e7a5f8dd4accaab7 100644 (file)
@@ -57,7 +57,7 @@ package body ALI is
       'Y'    => True,   -- limited_with
       'Z'    => True,   -- implicit with from instantiation
       'C'    => True,   -- SCO information
-      'F'    => True,   -- Alfa information
+      'F'    => True,   -- SPARK cross-reference information
       others => False);
 
    --------------------
@@ -2670,7 +2670,7 @@ package body ALI is
       --  Here after dealing with xref sections
 
       --  Ignore remaining lines, which belong to an additional section of the
-      --  ALI file not considered here (like SCO or Alfa).
+      --  ALI file not considered here (like SCO or SPARK information).
 
       Check_Unknown_Line;
 
index d0923fcd28acc3fe3d372d0be3ba09a820544823..6b2caca64242b13478389b7705df73482ff294a9 100644 (file)
@@ -121,14 +121,14 @@ package body Debug is
    --  d.A  Read/write Aspect_Specifications hash table to tree
    --  d.B
    --  d.C  Generate concatenation call, do not generate inline code
-   --  d.D  Strict Alfa mode
-   --  d.E  Force Alfa mode for gnat2why
-   --  d.F  Alfa mode
+   --  d.D  SPARK strict mode
+   --  d.E  Force SPARK mode for gnat2why
+   --  d.F  SPARK mode
    --  d.G  Frame condition mode for gnat2why
    --  d.H  Standard package only mode for gnat2why
    --  d.I  Do not ignore enum representation clauses in CodePeer mode
    --  d.J  Disable parallel SCIL generation mode
-   --  d.K  Alfa detection only mode for gnat2why
+   --  d.K  SPARK detection only mode for gnat2why
    --  d.L  Depend on back end for limited types in if and case expressions
    --  d.M  Relaxed RM semantics
    --  d.N  Add node to all entities
@@ -594,17 +594,17 @@ package body Debug is
    --  d.C  Generate call to System.Concat_n.Str_Concat_n routines in cases
    --       where we would normally generate inline concatenation code.
 
-   --  d.D  Strict Alfa mode. Interpret compiler permissions as strictly as
-   --       possible in Alfa mode.
+   --  d.D  SPARK strict mode. Interpret compiler permissions as strictly as
+   --       possible in SPARK mode.
 
-   --  d.E  Force Alfa mode for gnat2why. In this mode, errors are issued for
-   --       all violations of Alfa in user code, and warnings are issued for
+   --  d.E  Force SPARK mode for gnat2why. In this mode, errors are issued for
+   --       all violations of SPARK in user code, and warnings are issued for
    --       constructs not yet implemented in gnat2why.
 
-   --  d.F  Alfa mode. Generate AST in a form suitable for formal verification,
-   --       as well as additional cross reference information in ALI files to
-   --       compute effects of subprograms. Note that ALI files are only
-   --       written when option d.G is also given.
+   --  d.F  SPARK mode. Generate AST in a form suitable for formal
+   --       verification, as well as additional cross reference information in
+   --       ALI files to compute effects of subprograms. Note that ALI files
+   --       are only written when option d.G is also given.
 
    --  d.G  Frame condition mode for gnat2why. In this mode, gnat2why will not
    --       generate Why code. Instead, it generates ALI files with an extra
@@ -624,8 +624,8 @@ package body Debug is
    --       done in parallel to speed processing. This switch disables this
    --       behavior.
 
-   --  d.K  Alfa detection only mode for gnat2why. In this mode, gnat2why
-   --       will only generate the .alfa file, but no Why code.
+   --  d.K  SPARK detection only mode for gnat2why. In this mode, gnat2why
+   --       does not generate Why code.
 
    --  d.L  Normally the front end generates special expansion for conditional
    --       expressions of a limited type. This debug flag removes this special
index d9973eb2cd56d422b81b3dfdd2b8b18f31a480b0..b8d044e3d341feaaf18f24086b3c2c1406bbb5c6 100644 (file)
@@ -2920,10 +2920,10 @@ package body Errout is
 
       elsif Msg = "size for& too small, minimum allowed is ^" then
 
-         --  Suppress "size too small" errors in CodePeer mode and Alfa mode,
+         --  Suppress "size too small" errors in CodePeer mode and SPARK mode,
          --  since pragma Pack is also ignored in these configurations.
 
-         if CodePeer_Mode or Alfa_Mode then
+         if CodePeer_Mode or SPARK_Mode then
             return True;
 
          --  When a size is wrong for a frozen type there is no explicit size
index ef8977f2190fed3935e0d61d73739a143f2a0597..4b30a0663a0ac91c58175cce0987b40eafe8f43f 100644 (file)
@@ -507,8 +507,8 @@ package Errout is
    --  Note: a special exception is that RM is never treated as a keyword
    --  but instead is copied literally into the message, this avoids the
    --  need for writing 'R'M for all reference manual quotes. A similar
-   --  exception is applied to the occurrence of the string Alfa used in
-   --  error messages about the Alfa subset of Ada.
+   --  exception is applied to the occurrence of the string SPARK used in
+   --  error messages about the SPARK subset of Ada.
 
    --  In the case of names, the default mode for the error text processor
    --  is to surround the name by quotation marks automatically. The case
index 8a1050fdd8a7417e083895d3906e6270c0a14d2f..a0da2304bc43fc2e80e03c05896684b80fc1edfd 100644 (file)
@@ -986,12 +986,12 @@ package body Erroutc is
       if Name_Len = 2 and then Name_Buffer (1 .. 2) = "RM" then
          Set_Msg_Name_Buffer;
 
-      --  We make a similar exception for Alfa
+      --  We make a similar exception for SPARK
 
-      elsif Name_Len = 4 and then Name_Buffer (1 .. 4) = "Alfa" then
+      elsif Name_Len = 5 and then Name_Buffer (1 .. 5) = "SPARK" then
          Set_Msg_Name_Buffer;
 
-      --  Neither RM nor Alfa: case appropriately and add surrounding quotes
+      --  Neither RM nor SPARK: case appropriately and add surrounding quotes
 
       else
          Set_Casing (Keyword_Casing (Flag_Source), All_Lower_Case);
diff --git a/gcc/ada/exp_alfa.adb b/gcc/ada/exp_alfa.adb
deleted file mode 100644 (file)
index 69a6e2b..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                             E X P _ A L F A                              --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---          Copyright (C) 1992-2012, 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
-with Atree;    use Atree;
-with Einfo;    use Einfo;
-with Exp_Attr; use Exp_Attr;
-with Exp_Ch4;  use Exp_Ch4;
-with Exp_Ch6;  use Exp_Ch6;
-with Exp_Dbug; use Exp_Dbug;
-with Exp_Util; use Exp_Util;
-with Nlists;   use Nlists;
-with Rtsfind;  use Rtsfind;
-with Sem_Aux;  use Sem_Aux;
-with Sem_Res;  use Sem_Res;
-with Sem_Util; use Sem_Util;
-with Sinfo;    use Sinfo;
-with Snames;   use Snames;
-with Stand;    use Stand;
-with Tbuild;   use Tbuild;
-
-package body Exp_Alfa is
-
-   -----------------------
-   -- Local Subprograms --
-   -----------------------
-
-   procedure Expand_Alfa_Call (N : Node_Id);
-   --  This procedure contains common processing for function and procedure
-   --  calls:
-   --    * expansion of actuals to introduce necessary temporaries
-   --    * replacement of renaming by subprogram renamed
-
-   procedure Expand_Alfa_N_Attribute_Reference (N : Node_Id);
-   --  Expand attributes 'Old and 'Result only
-
-   procedure Expand_Alfa_N_In (N : Node_Id);
-   --  Expand set membership into individual ones
-
-   procedure Expand_Alfa_N_Object_Renaming_Declaration (N : Node_Id);
-   --  Perform name evaluation for a renamed object
-
-   procedure Expand_Alfa_N_Simple_Return_Statement (N : Node_Id);
-   --  Insert conversion on function return if necessary
-
-   procedure Expand_Alfa_Simple_Function_Return (N : Node_Id);
-   --  Expand simple return from function
-
-   procedure Expand_Potential_Renaming (N : Node_Id);
-   --  N denotes a N_Identifier or N_Expanded_Name. If N references a renaming,
-   --  replace N with the renamed object.
-
-   -----------------
-   -- Expand_Alfa --
-   -----------------
-
-   procedure Expand_Alfa (N : Node_Id) is
-   begin
-      case Nkind (N) is
-         when N_Attribute_Reference =>
-            Expand_Alfa_N_Attribute_Reference (N);
-
-         --  Qualification of entity names in formal verification mode
-         --  is limited to the addition of a suffix for homonyms (see
-         --  Exp_Dbug.Qualify_Entity_Name). We used to qualify entity names
-         --  as full expansion does, but this was removed as this prevents the
-         --  verification back-end from using a short name for debugging and
-         --  user interaction. The verification back-end already takes care
-         --  of qualifying names when needed.
-
-         when N_Block_Statement     |
-              N_Package_Body        |
-              N_Package_Declaration |
-              N_Subprogram_Body     =>
-            Qualify_Entity_Names (N);
-
-         when N_Subprogram_Call     =>
-            Expand_Alfa_Call (N);
-
-         when N_Expanded_Name |
-              N_Identifier    =>
-            Expand_Potential_Renaming (N);
-
-         when N_In =>
-            Expand_Alfa_N_In (N);
-
-         --  A NOT IN B gets transformed to NOT (A IN B). This is the same
-         --  expansion used in the normal case, so shared the code.
-
-         when N_Not_In =>
-            Expand_N_Not_In (N);
-
-         when N_Object_Renaming_Declaration =>
-            Expand_Alfa_N_Object_Renaming_Declaration (N);
-
-         when N_Simple_Return_Statement =>
-            Expand_Alfa_N_Simple_Return_Statement (N);
-
-         --  In Alfa mode, no other constructs require expansion
-
-         when others =>
-            null;
-      end case;
-   end Expand_Alfa;
-
-   ----------------------
-   -- Expand_Alfa_Call --
-   ----------------------
-
-   procedure Expand_Alfa_Call (N : Node_Id) is
-      Call_Node   : constant Node_Id := N;
-      Parent_Subp : Entity_Id;
-      Subp        : Entity_Id;
-
-   begin
-      --  Ignore if previous error
-
-      if Nkind (Call_Node) in N_Has_Etype
-        and then Etype (Call_Node) = Any_Type
-      then
-         return;
-      end if;
-
-      --  Call using access to subprogram with explicit dereference
-
-      if Nkind (Name (Call_Node)) = N_Explicit_Dereference then
-         Subp        := Etype (Name (Call_Node));
-         Parent_Subp := Empty;
-
-      --  Case of call to simple entry, where the Name is a selected component
-      --  whose prefix is the task, and whose selector name is the entry name
-
-      elsif Nkind (Name (Call_Node)) = N_Selected_Component then
-         Subp        := Entity (Selector_Name (Name (Call_Node)));
-         Parent_Subp := Empty;
-
-      --  Case of call to member of entry family, where Name is an indexed
-      --  component, with the prefix being a selected component giving the
-      --  task and entry family name, and the index being the entry index.
-
-      elsif Nkind (Name (Call_Node)) = N_Indexed_Component then
-         Subp        := Entity (Selector_Name (Prefix (Name (Call_Node))));
-         Parent_Subp := Empty;
-
-      --  Normal case
-
-      else
-         Subp        := Entity (Name (Call_Node));
-         Parent_Subp := Alias (Subp);
-      end if;
-
-      --  Various expansion activities for actuals are carried out
-
-      Expand_Actuals (N, Subp);
-
-      --  If the subprogram is a renaming, replace it in the call with the name
-      --  of the actual subprogram being called.
-
-      if Present (Parent_Subp) then
-         Parent_Subp := Ultimate_Alias (Parent_Subp);
-
-         --  The below setting of Entity is suspect, see F109-018 discussion???
-
-         Set_Entity (Name (Call_Node), Parent_Subp);
-      end if;
-   end Expand_Alfa_Call;
-
-   ---------------------------------------
-   -- Expand_Alfa_N_Attribute_Reference --
-   ---------------------------------------
-
-   procedure Expand_Alfa_N_Attribute_Reference (N : Node_Id) is
-      Id : constant Attribute_Id := Get_Attribute_Id (Attribute_Name (N));
-
-   begin
-      case Id is
-         when Attribute_Old    |
-              Attribute_Result =>
-            Expand_N_Attribute_Reference (N);
-
-         when others =>
-            null;
-      end case;
-   end Expand_Alfa_N_Attribute_Reference;
-
-   ----------------------
-   -- Expand_Alfa_N_In --
-   ----------------------
-
-   procedure Expand_Alfa_N_In (N : Node_Id) is
-   begin
-      if Present (Alternatives (N)) then
-         Expand_Set_Membership (N);
-      end if;
-   end Expand_Alfa_N_In;
-
-   -----------------------------------------------
-   -- Expand_Alfa_N_Object_Renaming_Declaration --
-   -----------------------------------------------
-
-   procedure Expand_Alfa_N_Object_Renaming_Declaration (N : Node_Id) is
-   begin
-      --  Unconditionally remove all side effects from the name
-
-      Evaluate_Name (Name (N));
-   end Expand_Alfa_N_Object_Renaming_Declaration;
-
-   -------------------------------------------
-   -- Expand_Alfa_N_Simple_Return_Statement --
-   -------------------------------------------
-
-   procedure Expand_Alfa_N_Simple_Return_Statement (N : Node_Id) is
-   begin
-      --  Defend against previous errors (i.e. the return statement calls a
-      --  function that is not available in configurable runtime).
-
-      if Present (Expression (N))
-        and then Nkind (Expression (N)) = N_Empty
-      then
-         return;
-      end if;
-
-      --  Distinguish the function and non-function cases:
-
-      case Ekind (Return_Applies_To (Return_Statement_Entity (N))) is
-
-         when E_Function          |
-              E_Generic_Function  =>
-            Expand_Alfa_Simple_Function_Return (N);
-
-         when E_Procedure         |
-              E_Generic_Procedure |
-              E_Entry             |
-              E_Entry_Family      |
-              E_Return_Statement =>
-            null;
-
-         when others =>
-            raise Program_Error;
-      end case;
-
-   exception
-      when RE_Not_Available =>
-         return;
-   end Expand_Alfa_N_Simple_Return_Statement;
-
-   ----------------------------------------
-   -- Expand_Alfa_Simple_Function_Return --
-   ----------------------------------------
-
-   procedure Expand_Alfa_Simple_Function_Return (N : Node_Id) is
-      Scope_Id : constant Entity_Id :=
-                   Return_Applies_To (Return_Statement_Entity (N));
-      --  The function we are returning from
-
-      R_Type : constant Entity_Id := Etype (Scope_Id);
-      --  The result type of the function
-
-      Exp : constant Node_Id := Expression (N);
-      pragma Assert (Present (Exp));
-
-      Exptyp : constant Entity_Id := Etype (Exp);
-      --  The type of the expression (not necessarily the same as R_Type)
-
-   begin
-      --  Check the result expression of a scalar function against the subtype
-      --  of the function by inserting a conversion. This conversion must
-      --  eventually be performed for other classes of types, but for now it's
-      --  only done for scalars.
-      --  ???
-
-      if Is_Scalar_Type (Exptyp) then
-         Rewrite (Exp, Convert_To (R_Type, Exp));
-
-         --  The expression is resolved to ensure that the conversion gets
-         --  expanded to generate a possible constraint check.
-
-         Analyze_And_Resolve (Exp, R_Type);
-      end if;
-   end Expand_Alfa_Simple_Function_Return;
-
-   -------------------------------
-   -- Expand_Potential_Renaming --
-   -------------------------------
-
-   procedure Expand_Potential_Renaming (N : Node_Id) is
-      E : constant Entity_Id := Entity (N);
-      T : constant Entity_Id := Etype (N);
-
-   begin
-      --  Replace a reference to a renaming with the actual renamed object
-
-      if Ekind (E) in Object_Kind and then Present (Renamed_Object (E)) then
-         Rewrite (N, New_Copy_Tree (Renamed_Object (E)));
-         Reset_Analyzed_Flags (N);
-         Analyze_And_Resolve (N, T);
-      end if;
-   end Expand_Potential_Renaming;
-
-end Exp_Alfa;
diff --git a/gcc/ada/exp_alfa.ads b/gcc/ada/exp_alfa.ads
deleted file mode 100644 (file)
index 7b67c8d..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                             E X P _ A L F A                              --
---                                                                          --
---                                 S p e c                                  --
---                                                                          --
---          Copyright (C) 2011-2012, 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
---  This package implements a light expansion which is used in formal
---  verification mode (Alfa_Mode = True). Instead of a complete expansion
---  of nodes for code generation, this Alfa expansion targets generation
---  of intermediate code for formal verification.
-
---  Expand_Alfa is called directly by Expander.Expand.
-
---  Alfa expansion has three main objectives:
-
---    1. Perform limited expansion to explicit some Ada rules and constructs
---       (translate 'Old and 'Result, replace renamings by renamed, insert
---        conversions, expand actuals in calls to introduce temporaries, expand
---        generics instantiations)
-
---    2. Facilitate treatment for the formal verification back-end (fully
---       qualify names, expand set membership, compute data dependences)
-
---    3. Avoid the introduction of low-level code that is difficult to analyze
---       formally, as typically done in the full expansion for high-level
---       constructs (tasking, dispatching)
-
---  To fulfill objective 1, Expand_Alfa selectively expands some constructs.
-
---  To fulfill objective 2, the tree after Alfa expansion should be fully
---  analyzed semantically. In particular, all expression must have their proper
---  type, and semantic links should be set between tree nodes (partial to full
---  view, etc.) Some kinds of nodes should be either absent, or can be ignored
---  by the formal verification backend:
-
---      N_Object_Renaming_Declaration: can be ignored safely
---      N_Expression_Function:         absent (rewitten)
---      N_Expression_With_Actions:     absent (not generated)
-
---  Alfa cross-references are generated from the regular cross-references (used
---  for browsing and code understanding) and additional references collected
---  during semantic analysis, in particular on all dereferences. These Alfa
---  cross-references are output in a separate section of ALI files, as
---  described in alfa.adb. They are the basis for the computation of data
---  dependences in the formal verification backend. This implies that all
---  cross-references should be generated in this mode, even those that would
---  not make sense from a user point-of-view, and that cross-references that do
---  not lead to data dependences for subprograms can be safely ignored.
-
---  To support the formal verification of units parameterized by data, the
---  value of deferred constants should not be considered as a compile-time
---  constant at program locations where the full view is not visible.
-
---  To fulfill objective 3, Expand_Alfa does not expand features that are not
---  formally analyzed (tasking), or for which formal analysis relies on the
---  source level representation (dispatching, aspects, pragmas). However, these
---  should be semantically analyzed, which sometimes requires the insertion of
---  semantic pre-analysis, for example for subprogram contracts and pragma
---  check/assert.
-
-with Types; use Types;
-
-package Exp_Alfa is
-
-   procedure Expand_Alfa (N : Node_Id);
-
-end Exp_Alfa;
index a0b08ed937c5f9a18ae7901d09d5cab5cd4c974a..760676238cec63cbfc8fe959807c1b6fd4f33cbe 100644 (file)
@@ -6131,10 +6131,10 @@ package body Exp_Ch3 is
       elsif CodePeer_Mode then
          return;
 
-      --  Do not create TSS routine Finalize_Address when compiling in Alfa
+      --  Do not create TSS routine Finalize_Address when compiling in SPARK
       --  mode because it is not necessary and results in useless expansion.
 
-      elsif Alfa_Mode then
+      elsif SPARK_Mode then
          return;
       end if;
 
@@ -6883,9 +6883,9 @@ package body Exp_Ch3 is
             --  created. If Def_Id is limited, Stream_Input and Stream_Read
             --  may produce build-in-place allocations and for those the
             --  expander needs Finalize_Address. Do not create the body of
-            --  Finalize_Address in Alfa mode since it is not needed.
+            --  Finalize_Address in SPARK mode since it is not needed.
 
-            if not Alfa_Mode then
+            if not SPARK_Mode then
                Make_Finalize_Address_Body (Def_Id);
             end if;
 
index e463f3868c8b04d08d3152f04a015962a40b9675..22cbe79ee1ea2fed95ed1949bc7eff000240b566 100644 (file)
@@ -1240,14 +1240,14 @@ package body Exp_Ch4 is
             --    * .NET/JVM - these targets do not support address arithmetic
             --    and unchecked conversion, key elements of Finalize_Address.
 
-            --    * Alfa mode - the call is useless and results in unwanted
+            --    * SPARK mode - the call is useless and results in unwanted
             --    expansion.
 
             --    * CodePeer mode - TSS primitive Finalize_Address is not
             --    created in this mode.
 
             if VM_Target = No_VM
-              and then not Alfa_Mode
+              and then not SPARK_Mode
               and then not CodePeer_Mode
               and then Present (Finalization_Master (PtrT))
               and then Present (Temp_Decl)
@@ -4255,10 +4255,10 @@ package body Exp_Ch4 is
 
          --  The finalization master must be inserted and analyzed as part of
          --  the current semantic unit. This form of expansion is not carried
-         --  out in Alfa mode because it is useless. Note that the master is
+         --  out in SPARK mode because it is useless. Note that the master is
          --  updated when analysis changes current units.
 
-         if not Alfa_Mode then
+         if not SPARK_Mode then
             if Present (Rel_Typ) then
                Set_Finalization_Master (PtrT, Finalization_Master (Rel_Typ));
             else
@@ -4790,13 +4790,13 @@ package body Exp_Ch4 is
 
                      --  Do not generate this call in the following cases:
                      --
-                     --    * Alfa mode - the call is useless and results in
+                     --    * SPARK mode - the call is useless and results in
                      --    unwanted expansion.
                      --
                      --    * CodePeer mode - TSS primitive Finalize_Address is
                      --    not created in this mode.
 
-                     elsif not (Alfa_Mode or CodePeer_Mode) then
+                     elsif not (SPARK_Mode or CodePeer_Mode) then
                         Insert_Action (N,
                           Make_Set_Finalize_Address_Call
                             (Loc     => Loc,
@@ -7557,7 +7557,7 @@ package body Exp_Ch4 is
 
       --  CodePeer and GNATprove want to see the unexpanded N_Op_Expon node
 
-      if CodePeer_Mode or Alfa_Mode then
+      if CodePeer_Mode or SPARK_Mode then
          return;
       end if;
 
index bd6bb705bc82063821725106fb974dc797f2d75c..3e33ed8a018b9cbe691fb571048b71970a772ebd 100644 (file)
@@ -8092,11 +8092,11 @@ package body Exp_Ch6 is
          return False;
 
       else
-         --  In Alfa mode, build-in-place calls are not expanded, so that we
+         --  In SPARK mode, build-in-place calls are not expanded, so that we
          --  may end up with a call that is neither resolved to an entity, nor
          --  an indirect call.
 
-         if Alfa_Mode then
+         if SPARK_Mode then
             return False;
 
          elsif Is_Entity_Name (Name (Exp_Node)) then
@@ -8563,12 +8563,12 @@ package body Exp_Ch6 is
          then
             null;
 
-         --  Do not generate the call to Set_Finalize_Address in Alfa mode
+         --  Do not generate the call to Set_Finalize_Address in SPARK mode
          --  because it is not necessary and results in unwanted expansion.
          --  This expansion is also not carried out in CodePeer mode because
          --  Finalize_Address is never built.
 
-         elsif not Alfa_Mode
+         elsif not SPARK_Mode
            and then not CodePeer_Mode
          then
             Insert_Action (Allocator,
index 72892828b61cf536321374a19794fc5dbf0ea678..fdaf213ff863a24788579c1f841afa34564723b9 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2013, 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- --
@@ -929,10 +929,10 @@ package body Exp_Ch7 is
       then
          return;
 
-      --  Do not create finalization masters in Alfa mode because they result
+      --  Do not create finalization masters in SPARK mode because they result
       --  in unwanted expansion.
 
-      elsif Alfa_Mode then
+      elsif SPARK_Mode then
          return;
       end if;
 
@@ -2805,10 +2805,10 @@ package body Exp_Ch7 is
    begin
       Fin_Id := Empty;
 
-      --  Do not perform this expansion in Alfa mode because it is not
+      --  Do not perform this expansion in SPARK mode because it is not
       --  necessary.
 
-      if Alfa_Mode then
+      if SPARK_Mode then
          return;
       end if;
 
@@ -2967,10 +2967,10 @@ package body Exp_Ch7 is
       HSS : Node_Id;
 
    begin
-      --  Do not perform this expansion in Alfa mode because we do not create
+      --  Do not perform this expansion in SPARK mode because we do not create
       --  finalizers in the first place.
 
-      if Alfa_Mode then
+      if SPARK_Mode then
          return;
       end if;
 
@@ -3653,7 +3653,7 @@ package body Exp_Ch7 is
       --  this node and enclosed expression are not expanded, so do not apply
       --  any transformations here.
 
-      elsif Alfa_Mode
+      elsif SPARK_Mode
         and then Nkind (Wrap_Node) = N_Pragma
         and then Get_Pragma_Id (Wrap_Node) = Pragma_Check
       then
index c034fe5cf6b2b95d6373fe47fda6d079577b7bbf..cc5ff4fc8fb7f496c4a80b3e4231948d415b51d1 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1996-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 1996-2013, 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- --
@@ -1315,7 +1315,7 @@ package body Exp_Dbug is
       --  name as being qualified, as Qualify_Entity_Name may be called more
       --  than once on the same entity.
 
-      elsif Alfa_Mode then
+      elsif SPARK_Mode then
          if Has_Homonym (Ent) then
             Get_Name_String (Chars (Ent));
             Append_Homonym_Number (Ent);
diff --git a/gcc/ada/exp_spark.adb b/gcc/ada/exp_spark.adb
new file mode 100644 (file)
index 0000000..cd32353
--- /dev/null
@@ -0,0 +1,321 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                            E X P _ S P A R K                             --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 1992-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Atree;    use Atree;
+with Einfo;    use Einfo;
+with Exp_Attr; use Exp_Attr;
+with Exp_Ch4;  use Exp_Ch4;
+with Exp_Ch6;  use Exp_Ch6;
+with Exp_Dbug; use Exp_Dbug;
+with Exp_Util; use Exp_Util;
+with Nlists;   use Nlists;
+with Rtsfind;  use Rtsfind;
+with Sem_Aux;  use Sem_Aux;
+with Sem_Res;  use Sem_Res;
+with Sem_Util; use Sem_Util;
+with Sinfo;    use Sinfo;
+with Snames;   use Snames;
+with Stand;    use Stand;
+with Tbuild;   use Tbuild;
+
+package body Exp_SPARK is
+
+   -----------------------
+   -- Local Subprograms --
+   -----------------------
+
+   procedure Expand_SPARK_Call (N : Node_Id);
+   --  This procedure contains common processing for function and procedure
+   --  calls:
+   --    * expansion of actuals to introduce necessary temporaries
+   --    * replacement of renaming by subprogram renamed
+
+   procedure Expand_SPARK_N_Attribute_Reference (N : Node_Id);
+   --  Expand attributes 'Old and 'Result only
+
+   procedure Expand_SPARK_N_In (N : Node_Id);
+   --  Expand set membership into individual ones
+
+   procedure Expand_SPARK_N_Object_Renaming_Declaration (N : Node_Id);
+   --  Perform name evaluation for a renamed object
+
+   procedure Expand_SPARK_N_Simple_Return_Statement (N : Node_Id);
+   --  Insert conversion on function return if necessary
+
+   procedure Expand_SPARK_Simple_Function_Return (N : Node_Id);
+   --  Expand simple return from function
+
+   procedure Expand_Potential_Renaming (N : Node_Id);
+   --  N denotes a N_Identifier or N_Expanded_Name. If N references a renaming,
+   --  replace N with the renamed object.
+
+   ------------------
+   -- Expand_SPARK --
+   ------------------
+
+   procedure Expand_SPARK (N : Node_Id) is
+   begin
+      case Nkind (N) is
+         when N_Attribute_Reference =>
+            Expand_SPARK_N_Attribute_Reference (N);
+
+         --  Qualification of entity names in formal verification mode
+         --  is limited to the addition of a suffix for homonyms (see
+         --  Exp_Dbug.Qualify_Entity_Name). We used to qualify entity names
+         --  as full expansion does, but this was removed as this prevents the
+         --  verification back-end from using a short name for debugging and
+         --  user interaction. The verification back-end already takes care
+         --  of qualifying names when needed.
+
+         when N_Block_Statement     |
+              N_Package_Body        |
+              N_Package_Declaration |
+              N_Subprogram_Body     =>
+            Qualify_Entity_Names (N);
+
+         when N_Subprogram_Call     =>
+            Expand_SPARK_Call (N);
+
+         when N_Expanded_Name |
+              N_Identifier    =>
+            Expand_Potential_Renaming (N);
+
+         when N_In =>
+            Expand_SPARK_N_In (N);
+
+         --  A NOT IN B gets transformed to NOT (A IN B). This is the same
+         --  expansion used in the normal case, so shared the code.
+
+         when N_Not_In =>
+            Expand_N_Not_In (N);
+
+         when N_Object_Renaming_Declaration =>
+            Expand_SPARK_N_Object_Renaming_Declaration (N);
+
+         when N_Simple_Return_Statement =>
+            Expand_SPARK_N_Simple_Return_Statement (N);
+
+         --  In SPARK mode, no other constructs require expansion
+
+         when others =>
+            null;
+      end case;
+   end Expand_SPARK;
+
+   -----------------------
+   -- Expand_SPARK_Call --
+   -----------------------
+
+   procedure Expand_SPARK_Call (N : Node_Id) is
+      Call_Node   : constant Node_Id := N;
+      Parent_Subp : Entity_Id;
+      Subp        : Entity_Id;
+
+   begin
+      --  Ignore if previous error
+
+      if Nkind (Call_Node) in N_Has_Etype
+        and then Etype (Call_Node) = Any_Type
+      then
+         return;
+      end if;
+
+      --  Call using access to subprogram with explicit dereference
+
+      if Nkind (Name (Call_Node)) = N_Explicit_Dereference then
+         Subp        := Etype (Name (Call_Node));
+         Parent_Subp := Empty;
+
+      --  Case of call to simple entry, where the Name is a selected component
+      --  whose prefix is the task, and whose selector name is the entry name
+
+      elsif Nkind (Name (Call_Node)) = N_Selected_Component then
+         Subp        := Entity (Selector_Name (Name (Call_Node)));
+         Parent_Subp := Empty;
+
+      --  Case of call to member of entry family, where Name is an indexed
+      --  component, with the prefix being a selected component giving the
+      --  task and entry family name, and the index being the entry index.
+
+      elsif Nkind (Name (Call_Node)) = N_Indexed_Component then
+         Subp        := Entity (Selector_Name (Prefix (Name (Call_Node))));
+         Parent_Subp := Empty;
+
+      --  Normal case
+
+      else
+         Subp        := Entity (Name (Call_Node));
+         Parent_Subp := Alias (Subp);
+      end if;
+
+      --  Various expansion activities for actuals are carried out
+
+      Expand_Actuals (N, Subp);
+
+      --  If the subprogram is a renaming, replace it in the call with the name
+      --  of the actual subprogram being called.
+
+      if Present (Parent_Subp) then
+         Parent_Subp := Ultimate_Alias (Parent_Subp);
+
+         --  The below setting of Entity is suspect, see F109-018 discussion???
+
+         Set_Entity (Name (Call_Node), Parent_Subp);
+      end if;
+   end Expand_SPARK_Call;
+
+   ----------------------------------------
+   -- Expand_SPARK_N_Attribute_Reference --
+   ----------------------------------------
+
+   procedure Expand_SPARK_N_Attribute_Reference (N : Node_Id) is
+      Id : constant Attribute_Id := Get_Attribute_Id (Attribute_Name (N));
+
+   begin
+      case Id is
+         when Attribute_Old    |
+              Attribute_Result =>
+            Expand_N_Attribute_Reference (N);
+
+         when others =>
+            null;
+      end case;
+   end Expand_SPARK_N_Attribute_Reference;
+
+   -----------------------
+   -- Expand_SPARK_N_In --
+   -----------------------
+
+   procedure Expand_SPARK_N_In (N : Node_Id) is
+   begin
+      if Present (Alternatives (N)) then
+         Expand_Set_Membership (N);
+      end if;
+   end Expand_SPARK_N_In;
+
+   ------------------------------------------------
+   -- Expand_SPARK_N_Object_Renaming_Declaration --
+   ------------------------------------------------
+
+   procedure Expand_SPARK_N_Object_Renaming_Declaration (N : Node_Id) is
+   begin
+      --  Unconditionally remove all side effects from the name
+
+      Evaluate_Name (Name (N));
+   end Expand_SPARK_N_Object_Renaming_Declaration;
+
+   --------------------------------------------
+   -- Expand_SPARK_N_Simple_Return_Statement --
+   --------------------------------------------
+
+   procedure Expand_SPARK_N_Simple_Return_Statement (N : Node_Id) is
+   begin
+      --  Defend against previous errors (i.e. the return statement calls a
+      --  function that is not available in configurable runtime).
+
+      if Present (Expression (N))
+        and then Nkind (Expression (N)) = N_Empty
+      then
+         return;
+      end if;
+
+      --  Distinguish the function and non-function cases:
+
+      case Ekind (Return_Applies_To (Return_Statement_Entity (N))) is
+
+         when E_Function          |
+              E_Generic_Function  =>
+            Expand_SPARK_Simple_Function_Return (N);
+
+         when E_Procedure         |
+              E_Generic_Procedure |
+              E_Entry             |
+              E_Entry_Family      |
+              E_Return_Statement =>
+            null;
+
+         when others =>
+            raise Program_Error;
+      end case;
+
+   exception
+      when RE_Not_Available =>
+         return;
+   end Expand_SPARK_N_Simple_Return_Statement;
+
+   -----------------------------------------
+   -- Expand_SPARK_Simple_Function_Return --
+   -----------------------------------------
+
+   procedure Expand_SPARK_Simple_Function_Return (N : Node_Id) is
+      Scope_Id : constant Entity_Id :=
+                   Return_Applies_To (Return_Statement_Entity (N));
+      --  The function we are returning from
+
+      R_Type : constant Entity_Id := Etype (Scope_Id);
+      --  The result type of the function
+
+      Exp : constant Node_Id := Expression (N);
+      pragma Assert (Present (Exp));
+
+      Exptyp : constant Entity_Id := Etype (Exp);
+      --  The type of the expression (not necessarily the same as R_Type)
+
+   begin
+      --  Check the result expression of a scalar function against the subtype
+      --  of the function by inserting a conversion. This conversion must
+      --  eventually be performed for other classes of types, but for now it's
+      --  only done for scalars.
+      --  ???
+
+      if Is_Scalar_Type (Exptyp) then
+         Rewrite (Exp, Convert_To (R_Type, Exp));
+
+         --  The expression is resolved to ensure that the conversion gets
+         --  expanded to generate a possible constraint check.
+
+         Analyze_And_Resolve (Exp, R_Type);
+      end if;
+   end Expand_SPARK_Simple_Function_Return;
+
+   -------------------------------
+   -- Expand_Potential_Renaming --
+   -------------------------------
+
+   procedure Expand_Potential_Renaming (N : Node_Id) is
+      E : constant Entity_Id := Entity (N);
+      T : constant Entity_Id := Etype (N);
+
+   begin
+      --  Replace a reference to a renaming with the actual renamed object
+
+      if Ekind (E) in Object_Kind and then Present (Renamed_Object (E)) then
+         Rewrite (N, New_Copy_Tree (Renamed_Object (E)));
+         Reset_Analyzed_Flags (N);
+         Analyze_And_Resolve (N, T);
+      end if;
+   end Expand_Potential_Renaming;
+
+end Exp_SPARK;
diff --git a/gcc/ada/exp_spark.ads b/gcc/ada/exp_spark.ads
new file mode 100644 (file)
index 0000000..726b69a
--- /dev/null
@@ -0,0 +1,87 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                            E X P _ S P A R K                             --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This package implements a light expansion which is used in formal
+--  verification mode (SPARK_Mode = True). Instead of a complete expansion
+--  of nodes for code generation, this SPARK expansion targets generation
+--  of intermediate code for formal verification.
+
+--  Expand_SPARK is called directly by Expander.Expand.
+
+--  SPARK expansion has three main objectives:
+
+--    1. Perform limited expansion to explicit some Ada rules and constructs
+--       (translate 'Old and 'Result, replace renamings by renamed, insert
+--        conversions, expand actuals in calls to introduce temporaries, expand
+--        generics instantiations)
+
+--    2. Facilitate treatment for the formal verification back-end (fully
+--       qualify names, expand set membership, compute data dependences)
+
+--    3. Avoid the introduction of low-level code that is difficult to analyze
+--       formally, as typically done in the full expansion for high-level
+--       constructs (tasking, dispatching)
+
+--  To fulfill objective 1, Expand_SPARK selectively expands some constructs.
+
+--  To fulfill objective 2, the tree after SPARK expansion should be fully
+--  analyzed semantically. In particular, all expression must have their proper
+--  type, and semantic links should be set between tree nodes (partial to full
+--  view, etc.) Some kinds of nodes should be either absent, or can be ignored
+--  by the formal verification backend:
+
+--      N_Object_Renaming_Declaration: can be ignored safely
+--      N_Expression_Function:         absent (rewitten)
+--      N_Expression_With_Actions:     absent (not generated)
+
+--  SPARK cross-references are generated from the regular cross-references
+--  (used for browsing and code understanding) and additional references
+--  collected during semantic analysis, in particular on all
+--  dereferences. These SPARK cross-references are output in a separate section
+--  of ALI files, as described in spark_xrefs.adb. They are the basis for the
+--  computation of data dependences in the formal verification backend. This
+--  implies that all cross-references should be generated in this mode, even
+--  those that would not make sense from a user point-of-view, and that
+--  cross-references that do not lead to data dependences for subprograms can
+--  be safely ignored.
+
+--  To support the formal verification of units parameterized by data, the
+--  value of deferred constants should not be considered as a compile-time
+--  constant at program locations where the full view is not visible.
+
+--  To fulfill objective 3, Expand_SPARK does not expand features that are not
+--  formally analyzed (tasking), or for which formal analysis relies on the
+--  source level representation (dispatching, aspects, pragmas). However, these
+--  should be semantically analyzed, which sometimes requires the insertion of
+--  semantic pre-analysis, for example for subprogram contracts and pragma
+--  check/assert.
+
+with Types; use Types;
+
+package Exp_SPARK is
+
+   procedure Expand_SPARK (N : Node_Id);
+
+end Exp_SPARK;
index 366885374a067b46e668ce796e08f52af4c03ba4..df4d170cf19b28ace38f6e84d014b90838cf0eab 100644 (file)
@@ -560,10 +560,10 @@ package body Exp_Util is
    --  Start of processing for Build_Allocate_Deallocate_Proc
 
    begin
-      --  Do not perform this expansion in Alfa mode because it is not
+      --  Do not perform this expansion in SPARK mode because it is not
       --  necessary.
 
-      if Alfa_Mode then
+      if SPARK_Mode then
          return;
       end if;
 
@@ -6986,10 +6986,13 @@ package body Exp_Util is
       --  Otherwise we generate a reference to the value
 
       else
-         --  An expression which is in Alfa mode is considered side effect free
-         --  if the resulting value is captured by a variable or a constant.
+         --  An expression which is in SPARK mode is considered side effect
+         --  free if the resulting value is captured by a variable or a
+         --  constant.
 
-         if Alfa_Mode and then Nkind (Parent (Exp)) = N_Object_Declaration then
+         if SPARK_Mode
+           and then Nkind (Parent (Exp)) = N_Object_Declaration
+         then
             goto Leave;
          end if;
 
@@ -7029,11 +7032,11 @@ package body Exp_Util is
 
          --  The regular expansion of functions with side effects involves the
          --  generation of an access type to capture the return value found on
-         --  the secondary stack. Since Alfa (and why) cannot process access
+         --  the secondary stack. Since SPARK (and why) cannot process access
          --  types, use a different approach which ignores the secondary stack
          --  and "copies" the returned object.
 
-         if Alfa_Mode then
+         if SPARK_Mode then
             Res := New_Reference_To (Def_Id, Loc);
             Ref_Type := Exp_Type;
 
@@ -7067,10 +7070,10 @@ package body Exp_Util is
          else
             E := Relocate_Node (E);
 
-            --  Do not generate a 'reference in Alfa mode since the access type
-            --  is not created in the first place.
+            --  Do not generate a 'reference in SPARK mode since the access
+            --  type is not created in the first place.
 
-            if Alfa_Mode then
+            if SPARK_Mode then
                New_Exp := E;
 
             --  Otherwise generate reference, marking the value as non-null
index cb20234db173134e9f3efdc08e15f2b457466e48..a037dd3790c52f255757c5da29e31fcf49dc5c9c 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
-with Atree;    use Atree;
-with Debug_A;  use Debug_A;
-with Exp_Aggr; use Exp_Aggr;
-with Exp_Alfa; use Exp_Alfa;
-with Exp_Attr; use Exp_Attr;
-with Exp_Ch2;  use Exp_Ch2;
-with Exp_Ch3;  use Exp_Ch3;
-with Exp_Ch4;  use Exp_Ch4;
-with Exp_Ch5;  use Exp_Ch5;
-with Exp_Ch6;  use Exp_Ch6;
-with Exp_Ch7;  use Exp_Ch7;
-with Exp_Ch8;  use Exp_Ch8;
-with Exp_Ch9;  use Exp_Ch9;
-with Exp_Ch11; use Exp_Ch11;
-with Exp_Ch12; use Exp_Ch12;
-with Exp_Ch13; use Exp_Ch13;
-with Exp_Prag; use Exp_Prag;
-with Opt;      use Opt;
-with Rtsfind;  use Rtsfind;
-with Sem;      use Sem;
-with Sem_Ch8;  use Sem_Ch8;
-with Sem_Util; use Sem_Util;
-with Sinfo;    use Sinfo;
+with Atree;     use Atree;
+with Debug_A;   use Debug_A;
+with Exp_Aggr;  use Exp_Aggr;
+with Exp_SPARK; use Exp_SPARK;
+with Exp_Attr;  use Exp_Attr;
+with Exp_Ch2;   use Exp_Ch2;
+with Exp_Ch3;   use Exp_Ch3;
+with Exp_Ch4;   use Exp_Ch4;
+with Exp_Ch5;   use Exp_Ch5;
+with Exp_Ch6;   use Exp_Ch6;
+with Exp_Ch7;   use Exp_Ch7;
+with Exp_Ch8;   use Exp_Ch8;
+with Exp_Ch9;   use Exp_Ch9;
+with Exp_Ch11;  use Exp_Ch11;
+with Exp_Ch12;  use Exp_Ch12;
+with Exp_Ch13;  use Exp_Ch13;
+with Exp_Prag;  use Exp_Prag;
+with Opt;       use Opt;
+with Rtsfind;   use Rtsfind;
+with Sem;       use Sem;
+with Sem_Ch8;   use Sem_Ch8;
+with Sem_Util;  use Sem_Util;
+with Sinfo;     use Sinfo;
 with Table;
 
 package body Expander is
@@ -127,13 +127,13 @@ package body Expander is
          Debug_A_Entry ("expanding  ", N);
 
          begin
-            --  In Alfa mode we only need a very limited subset of the usual
-            --  expansions. This limited subset is implemented in Expand_Alfa.
+            --  In SPARK mode we only need a very limited subset of the usual
+            --  expansions. This limited subset is implemented in Expand_SPARK.
 
-            if Alfa_Mode then
-               Expand_Alfa (N);
+            if SPARK_Mode then
+               Expand_SPARK (N);
 
-            --  Here for normal non-Alfa mode
+            --  Here for normal non-SPARK mode
 
             else
                --  Processing depends on node kind. For full details on the
index d4f46fa58c03d0ad2c8589ae6bf4ea400bf2b5c7..88a8f6df656045e9d62872080bf1d0b535ef237d 100644 (file)
@@ -2584,13 +2584,13 @@ package body Freeze is
 
            and then RM_Size (Rec) >= Scalar_Component_Total_RM_Size
 
-           --  Never do implicit packing in CodePeer or Alfa modes since
+           --  Never do implicit packing in CodePeer or SPARK modes since
            --  we don't do any packing in these modes, since this generates
            --  over-complex code that confuses static analysis, and in
            --  general, neither CodePeer not GNATprove care about the
            --  internal representation of objects.
 
-           and then not (CodePeer_Mode or Alfa_Mode)
+           and then not (CodePeer_Mode or SPARK_Mode)
          then
             --  If implicit packing enabled, do it
 
@@ -3442,7 +3442,7 @@ package body Freeze is
                     and then not Is_Limited_Composite (E)
                     and then not Is_Packed (Root_Type (E))
                     and then not Has_Component_Size_Clause (Root_Type (E))
-                    and then not (CodePeer_Mode or Alfa_Mode)
+                    and then not (CodePeer_Mode or SPARK_Mode)
                   then
                      Get_Index_Bounds (First_Index (E), Lo, Hi);
 
index 46b030f0cba07d34343ff094f0f9501bf6f89603..e9ac76f681739b6272ec37b6228f65467dda9e43 100644 (file)
@@ -204,7 +204,7 @@ GNAT_ADA_OBJS =     \
  ada/a-except.o        \
  ada/a-ioexce.o        \
  ada/ada.o     \
- ada/alfa.o    \
+ ada/spark_xrefs.o     \
  ada/ali.o     \
  ada/alloc.o   \
  ada/aspects.o  \
@@ -224,7 +224,7 @@ GNAT_ADA_OBJS =     \
  ada/erroutc.o \
  ada/eval_fat.o        \
  ada/exp_aggr.o        \
- ada/exp_alfa.o        \
+ ada/exp_spark.o       \
  ada/exp_atag.o        \
  ada/exp_attr.o        \
  ada/exp_cg.o \
@@ -266,7 +266,7 @@ GNAT_ADA_OBJS =     \
  ada/g-spchge.o        \
  ada/g-speche.o        \
  ada/g-u3spch.o        \
- ada/get_alfa.o        \
+ ada/get_spark_xrefs.o \
  ada/get_targ.o        \
  ada/gnat.o    \
  ada/gnatvsn.o \
@@ -295,7 +295,7 @@ GNAT_ADA_OBJS =     \
  ada/par_sco.o \
  ada/prep.o    \
  ada/prepcomp.o        \
- ada/put_alfa.o        \
+ ada/put_spark_xrefs.o \
  ada/put_scos.o        \
  ada/repinfo.o \
  ada/restrict.o        \
@@ -1043,48 +1043,48 @@ ada/utils2.o : ada/gcc-interface/utils2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
 #
 # GNAT DEPENDENCIES
 # regular dependencies
-ada/a-charac.o : ada/ada.ads ada/a-charac.ads ada/system.ads 
+ada/a-charac.o : ada/ada.ads ada/a-charac.ads ada/system.ads
 
 ada/a-chlat1.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
-   ada/system.ads 
+   ada/system.ads
 
 ada/a-clrefi.o : ada/ada.ads ada/a-comlin.ads ada/a-clrefi.ads \
    ada/a-clrefi.adb ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
    ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads 
+   ada/s-string.ads ada/s-traent.ads
 
 ada/a-comlin.o : ada/ada.ads ada/a-comlin.ads ada/a-comlin.adb \
    ada/a-unccon.ads ada/system.ads ada/s-secsta.ads ada/s-stoele.ads \
-   ada/s-stoele.adb 
+   ada/s-stoele.adb
 
 ada/a-elchha.o : ada/ada.ads ada/a-except.ads ada/a-elchha.ads \
    ada/a-elchha.adb ada/a-unccon.ads ada/system.ads ada/s-parame.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-traent.ads 
+   ada/s-stoele.adb ada/s-traent.ads
 
 ada/a-except.o : ada/ada.ads ada/a-except.ads ada/a-except.adb \
    ada/a-exexda.adb ada/a-exextr.adb ada/a-elchha.ads ada/a-excpol.adb \
    ada/a-exstat.adb ada/a-unccon.ads ada/system.ads ada/s-exctab.ads \
    ada/s-excdeb.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-traent.ads 
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-traent.ads
 
 ada/a-ioexce.o : ada/ada.ads ada/a-except.ads ada/a-ioexce.ads \
    ada/a-unccon.ads ada/system.ads ada/s-exctab.ads ada/s-exctab.adb \
    ada/s-htable.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads 
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads
 
-ada/ada.o : ada/ada.ads ada/system.ads 
+ada/ada.o : ada/ada.ads ada/system.ads
 
-ada/alfa.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
-   ada/a-uncdea.ads ada/alfa.ads ada/alfa.adb ada/gnat.ads ada/g-table.ads \
+ada/spark_xrefs.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
+   ada/a-uncdea.ads ada/spark_xrefs.ads ada/spark_xrefs.adb ada/gnat.ads ada/g-table.ads \
    ada/g-table.adb ada/hostparm.ads ada/output.ads ada/output.adb \
-   ada/put_alfa.ads ada/put_alfa.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/put_spark_xrefs.ads ada/put_spark_xrefs.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/types.ads \
+   ada/unchconv.ads ada/unchdeal.ads
 
 ada/ali-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/ali.ads ada/ali.adb ada/ali-util.ads \
@@ -1099,32 +1099,31 @@ ada/ali-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/scans.ads ada/scng.ads ada/scng.adb ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/sinput.adb ada/sinput-c.ads ada/snames.ads \
    ada/stand.ads ada/stringt.ads ada/stringt.adb ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
+   ada/s-crc32.ads ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/ali.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/ali.ads ada/ali.adb ada/alloc.ads ada/butil.ads ada/casing.ads \
    ada/debug.ads ada/fname.ads ada/gnat.ads ada/g-htable.ads \
    ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
    ada/namet.adb ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
-   ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+   ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
 
-ada/alloc.o : ada/alloc.ads ada/system.ads 
+ada/alloc.o : ada/alloc.ads ada/system.ads
 
 ada/aspects.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -1132,24 +1131,23 @@ ada/aspects.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/einfo.adb ada/gnat.ads ada/g-htable.ads ada/hostparm.ads \
    ada/namet.ads ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-strhas.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/atree.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
    ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
    ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads 
+   ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1162,12 +1160,12 @@ ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads ada/scans.ads \
    ada/sinfo.ads ada/sinput.ads ada/sinput.adb ada/snames.ads \
    ada/stand.ads ada/stringt.ads ada/switch.ads ada/switch-c.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/bcheck.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/ali.ads ada/ali.adb ada/ali-util.ads \
@@ -1180,13 +1178,13 @@ ada/bcheck.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/rident.ads ada/scans.ads ada/scng.ads ada/scng.adb ada/sinfo.ads \
    ada/sinput.ads ada/sinput-c.ads ada/snames.ads ada/stringt.ads \
    ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/binde.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/ali.ads ada/ali.adb ada/alloc.ads ada/binde.ads \
@@ -1194,22 +1192,22 @@ ada/binde.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/debug.ads ada/fname.ads ada/gnat.ads ada/g-htable.ads \
    ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
    ada/namet.adb ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
-   ada/system.ads ada/s-assert.ads ada/s-casuti.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
+   ada/system.ads ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
 
 ada/binderr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/binderr.ads ada/binderr.adb \
    ada/butil.ads ada/debug.ads ada/hostparm.ads ada/namet.ads ada/opt.ads \
-   ada/output.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/output.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/ali.ads ada/ali.adb ada/alloc.ads ada/binde.ads \
@@ -1217,42 +1215,41 @@ ada/bindgen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/butil.ads ada/casing.ads ada/debug.ads ada/fname.ads ada/gnat.ads \
    ada/g-hesora.ads ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads \
    ada/namet.ads ada/opt.ads ada/osint.ads ada/osint-b.ads ada/output.ads \
-   ada/rident.ads ada/system.ads ada/s-assert.ads ada/s-casuti.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/rident.ads ada/system.ads ada/s-casuti.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/bindusg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/bindusg.ads ada/bindusg.adb \
    ada/debug.ads ada/gnatvsn.ads ada/hostparm.ads ada/namet.ads \
    ada/opt.ads ada/osint.ads ada/output.ads ada/switch.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/butil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/butil.ads ada/butil.adb \
    ada/debug.ads ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
-   ada/rident.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/rident.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/casing.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/casing.adb \
    ada/csets.ads ada/csets.adb ada/debug.ads ada/hostparm.ads \
    ada/namet.ads ada/opt.ads ada/output.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/widechar.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
 
 ada/checks.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1269,25 +1266,24 @@ ada/checks.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/rtsfind.adb ada/scans.ads ada/sem.ads \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch3.ads \
    ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_disp.ads \
-   ada/sem_dist.ads ada/sem_eval.ads ada/sem_eval.adb ada/sem_prag.ads \
-   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
-   ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
-   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
-   ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
-   ada/widechar.ads 
+   ada/sem_dist.ads ada/sem_eval.ads ada/sem_eval.adb ada/sem_res.ads \
+   ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
+   ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+   ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
+   ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+   ada/validsw.ads ada/widechar.ads
 
 ada/comperr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1299,19 +1295,19 @@ ada/comperr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.ads ada/opt.ads ada/osint.ads ada/output.ads ada/output.adb \
    ada/rident.ads ada/sdefault.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/treepr.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tree_io.ads ada/treepr.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/csets.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads ada/csets.ads \
    ada/csets.adb ada/hostparm.ads ada/opt.ads ada/system.ads \
    ada/s-exctab.ads ada/s-stalib.ads ada/s-string.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/s-wchcon.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/cstand.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1323,7 +1319,7 @@ ada/cstand.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/interfac.ads \
    ada/layout.ads ada/lib.ads ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
-   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads \
@@ -1331,29 +1327,28 @@ ada/cstand.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_util.adb ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
+   ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
-ada/debug.o : ada/debug.ads ada/debug.adb ada/system.ads 
+ada/debug.o : ada/debug.ads ada/debug.adb ada/system.ads
 
 ada/debug_a.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/debug_a.ads \
    ada/debug_a.adb ada/einfo.ads ada/hostparm.ads ada/namet.ads \
    ada/nlists.ads ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinput.ads \
-   ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads 
+   ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/einfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1361,31 +1356,30 @@ ada/einfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/namet.ads \
    ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/snames.adb \
-   ada/stand.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb 
+   ada/stand.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
 
 ada/elists.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/elists.ads \
    ada/elists.adb ada/hostparm.ads ada/opt.ads ada/output.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/err_vars.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/err_vars.ads \
    ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
-   ada/s-htable.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads
 
 ada/errout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1397,14 +1391,14 @@ ada/errout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/rident.ads \
    ada/scans.ads ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stringt.ads ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/erroutc.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1413,26 +1407,26 @@ ada/erroutc.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-byorma.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
    ada/namet.adb ada/nlists.ads ada/opt.ads ada/output.ads ada/output.adb \
    ada/rident.ads ada/scans.ads ada/sinfo.ads ada/sinput.ads \
-   ada/sinput.adb ada/snames.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/sinput.adb ada/snames.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/widechar.ads
 
 ada/eval_fat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/einfo.ads \
    ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
    ada/eval_fat.adb ada/exp_tss.ads ada/gnat.ads ada/g-htable.ads \
    ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
-   ada/sem_util.ads ada/snames.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb 
+   ada/sem_util.ads ada/snames.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
 
 ada/exp_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1449,42 +1443,41 @@ ada/exp_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/rtsfind.adb ada/scans.ads ada/sem.ads \
    ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
    ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads \
    ada/sem_disp.ads ada/sem_dist.ads ada/sem_eval.ads ada/sem_eval.adb \
-   ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
-   ada/sem_util.adb ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
-   ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
-   ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/validsw.ads ada/widechar.ads 
+   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
+   ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
+   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
+   ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
+   ada/widechar.ads
 
-ada/exp_alfa.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
+ada/exp_spark.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
-   ada/exp_alfa.ads ada/exp_alfa.adb ada/exp_attr.ads ada/exp_ch4.ads \
+   ada/exp_spark.ads ada/exp_spark.adb ada/exp_attr.ads ada/exp_ch4.ads \
    ada/exp_ch6.ads ada/exp_dbug.ads ada/exp_tss.ads ada/exp_util.ads \
    ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
    ada/opt.ads ada/output.ads ada/rtsfind.ads ada/sem_aux.ads \
    ada/sem_aux.adb ada/sem_res.ads ada/sem_util.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/exp_atag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1499,14 +1492,14 @@ ada/exp_atag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/rtsfind.adb ada/sem.ads ada/sem_aux.ads ada/sem_aux.adb \
    ada/sem_ch7.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_util.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1524,7 +1517,7 @@ ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads \
    ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch3.ads ada/sem_ch4.ads \
@@ -1534,16 +1527,15 @@ ada/exp_attr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
 
 ada/exp_cg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1554,14 +1546,13 @@ ada/exp_cg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/namet.ads ada/namet.adb ada/nlists.ads ada/opt.ads ada/output.ads \
    ada/sem_aux.ads ada/sem_aux.adb ada/sem_disp.ads ada/sem_type.ads \
    ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/stand.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/snames.ads ada/stand.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/exp_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1580,15 +1571,14 @@ ada/exp_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \
    ada/sem_prag.ads ada/sem_res.ads ada/sem_util.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/exp_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1599,12 +1589,12 @@ ada/exp_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/output.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
    ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
 ada/exp_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1616,16 +1606,16 @@ ada/exp_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb \
    ada/opt.ads ada/output.ads ada/restrict.ads ada/restrict.adb \
    ada/rident.ads ada/rtsfind.ads ada/sem.ads ada/sem_aux.ads \
-   ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_eval.ads ada/sem_prag.ads \
-   ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/stand.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads 
+   ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_eval.ads ada/sem_util.ads \
+   ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/validsw.ads
 
 ada/exp_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1637,12 +1627,12 @@ ada/exp_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/rtsfind.ads ada/sem.ads ada/sem_eval.ads ada/sem_res.ads \
    ada/sem_util.ads ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/exp_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1665,19 +1655,18 @@ ada/exp_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_aux.ads ada/sem_aux.adb ada/sem_cat.ads ada/sem_ch3.ads \
    ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_disp.ads \
    ada/sem_dist.ads ada/sem_eval.ads ada/sem_eval.adb ada/sem_mech.ads \
-   ada/sem_prag.ads ada/sem_res.ads ada/sem_scil.ads ada/sem_type.ads \
-   ada/sem_util.ads ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
-   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads 
+   ada/sem_res.ads ada/sem_scil.ads ada/sem_type.ads ada/sem_util.ads \
+   ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
+   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/validsw.ads ada/widechar.ads
 
 ada/exp_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1695,25 +1684,25 @@ ada/exp_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \
+   ada/par_sco.ads ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb \
    ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/scil_ll.ads \
    ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb \
    ada/sem_cat.ads ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch6.ads \
    ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_eval.adb \
-   ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
-   ada/sem_util.adb ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
-   ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/validsw.ads ada/widechar.ads 
+   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
+   ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
+   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
+   ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-exctab.adb \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
+   ada/widechar.ads
 
 ada/exp_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1728,24 +1717,24 @@ ada/exp_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/inline.ads \
    ada/itypes.ads ada/lib.ads ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
-   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_cat.ads ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch6.ads \
    ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_eval.adb \
-   ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
-   ada/sem_util.adb ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/sprint.ads \
-   ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
-   ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads 
+   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
+   ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
+   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
+   ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/validsw.ads
 
 ada/exp_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1764,7 +1753,7 @@ ada/exp_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/rtsfind.adb ada/scans.ads ada/scil_ll.ads \
    ada/sem.ads ada/sem.adb ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_aux.adb ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads \
@@ -1776,15 +1765,15 @@ ada/exp_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
    ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/validsw.ads ada/widechar.ads
 
 ada/exp_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1800,7 +1789,7 @@ ada/exp_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch10.ads ada/sem_ch11.ads \
    ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch3.ads \
@@ -1810,15 +1799,15 @@ ada/exp_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_util.adb ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/validsw.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
+   ada/widechar.ads
 
 ada/exp_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1831,17 +1820,17 @@ ada/exp_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
    ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
    ada/rident.ads ada/rtsfind.ads ada/sem.ads ada/sem_aux.ads \
-   ada/sem_ch8.ads ada/sem_eval.ads ada/sem_prag.ads ada/sem_res.ads \
-   ada/sem_type.ads ada/sem_util.ads ada/set_targ.ads ada/sinfo.ads \
-   ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads 
+   ada/sem_ch8.ads ada/sem_eval.ads ada/sem_res.ads ada/sem_type.ads \
+   ada/sem_util.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
+   ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/validsw.ads
 
 ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1857,25 +1846,24 @@ ada/exp_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/layout.ads ada/lib.ads ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb \
-   ada/output.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \
+   ada/output.ads ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb \
    ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/sem.ads \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch11.ads \
    ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch5.ads ada/sem_ch6.ads \
    ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_ch9.adb ada/sem_disp.ads \
-   ada/sem_elab.ads ada/sem_eval.ads ada/sem_prag.ads ada/sem_res.ads \
-   ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
-   ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
-   ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads 
+   ada/sem_elab.ads ada/sem_eval.ads ada/sem_res.ads ada/sem_type.ads \
+   ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads ada/set_targ.ads \
+   ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
+   ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/validsw.ads ada/widechar.ads
 
 ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1888,7 +1876,7 @@ ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
    ada/lib-util.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb \
    ada/namet-sp.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/nmake.adb ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.adb ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
    ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads \
@@ -1896,15 +1884,15 @@ ada/exp_code.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_util.adb ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
    ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/types.adb ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/types.adb ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/exp_dbug.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1915,14 +1903,14 @@ ada/exp_dbug.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/opt.ads ada/output.ads ada/rident.ads ada/sem_aux.ads \
    ada/sem_eval.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1938,24 +1926,23 @@ ada/exp_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/scil_ll.ads ada/sem.ads \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch6.ads \
    ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads \
-   ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
-   ada/sem_util.adb ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
-   ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads 
+   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
+   ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+   ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
+   ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
+   ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/widechar.ads
 
 ada/exp_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1972,15 +1959,15 @@ ada/exp_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_ch8.ads ada/sem_dist.ads ada/sem_eval.ads ada/sem_util.ads \
    ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/exp_fixd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -1995,13 +1982,13 @@ ada/exp_fixd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_eval.adb ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
    ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb
 
 ada/exp_imgv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2017,15 +2004,15 @@ ada/exp_imgv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/rtsfind.adb ada/sem.ads ada/sem_aux.ads ada/sem_ch7.ads \
    ada/sem_dist.ads ada/sem_res.ads ada/sem_util.ads ada/set_targ.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
+   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/exp_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2040,23 +2027,23 @@ ada/exp_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/hostparm.ads ada/inline.ads ada/interfac.ads ada/itypes.ads \
    ada/lib.ads ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
-   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads \
-   ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_prag.ads \
-   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
-   ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/sinput.adb ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/urealp.adb ada/validsw.ads ada/widechar.ads 
+   ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_res.ads \
+   ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/set_targ.ads \
+   ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
+   ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
+   ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+   ada/validsw.ads ada/widechar.ads
 
 ada/exp_pakd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2072,18 +2059,17 @@ ada/exp_pakd.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/restrict.ads \
    ada/rident.ads ada/rtsfind.ads ada/sem.ads ada/sem_aux.ads \
    ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch8.ads ada/sem_eval.ads \
-   ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads \
-   ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
-   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/validsw.ads 
+   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_warn.ads \
+   ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+   ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
 
 ada/exp_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2099,14 +2085,14 @@ ada/exp_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_ch8.ads ada/sem_res.ads ada/sem_util.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
    ada/snames.adb ada/stand.ads ada/stringt.ads ada/stringt.adb \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/exp_sel.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2116,12 +2102,12 @@ ada/exp_sel.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/opt.ads ada/output.ads ada/restrict.ads ada/rident.ads \
    ada/rtsfind.ads ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
 ada/exp_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2131,12 +2117,12 @@ ada/exp_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
    ada/rtsfind.ads ada/sem.ads ada/sem_aux.ads ada/sem_util.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/exp_strm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2148,13 +2134,13 @@ ada/exp_strm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/output.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
    ada/sem_aux.ads ada/sem_util.ads ada/set_targ.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/exp_tss.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2168,13 +2154,13 @@ ada/exp_tss.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
    ada/sem_aux.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/exp_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2198,16 +2184,16 @@ ada/exp_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_warn.ads \
    ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/validsw.ads ada/widechar.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
+   ada/widechar.ads
 
 ada/exp_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2217,18 +2203,18 @@ ada/exp_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
    ada/rtsfind.ads ada/sem_res.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb
 
 ada/expander.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/debug_a.ads \
    ada/debug_a.adb ada/einfo.ads ada/elists.ads ada/exp_aggr.ads \
-   ada/exp_alfa.ads ada/exp_attr.ads ada/exp_ch11.ads ada/exp_ch12.ads \
+   ada/exp_spark.ads ada/exp_attr.ads ada/exp_ch11.ads ada/exp_ch12.ads \
    ada/exp_ch13.ads ada/exp_ch2.ads ada/exp_ch3.ads ada/exp_ch4.ads \
    ada/exp_ch5.ads ada/exp_ch6.ads ada/exp_ch7.ads ada/exp_ch8.ads \
    ada/exp_ch9.ads ada/exp_prag.ads ada/exp_tss.ads ada/expander.ads \
@@ -2240,46 +2226,44 @@ ada/expander.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_ch2.ads ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch5.ads \
    ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \
    ada/sem_prag.ads ada/sem_util.ads ada/sinfo.ads ada/sinput.ads \
-   ada/snames.ads ada/stand.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/snames.ads ada/stand.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/fmap.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/fmap.ads ada/fmap.adb \
    ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/namet.ads \
    ada/opt.ads ada/osint.ads ada/output.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/fname-uf.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/debug.ads \
    ada/fmap.ads ada/fname.ads ada/fname-uf.ads ada/fname-uf.adb \
    ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/krunch.ads \
    ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-htable.adb ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tree_io.ads ada/types.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+   ada/types.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/widechar.ads
 
 ada/fname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/fname.ads \
    ada/fname.adb ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/freeze.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2295,7 +2279,7 @@ ada/freeze.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/namet-sp.ads \
    ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
-   ada/output.ads ada/put_alfa.ads ada/restrict.ads ada/rident.ads \
+   ada/output.ads ada/put_spark_xrefs.ads ada/restrict.ads ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_aggr.ads \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_cat.ads \
    ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads \
@@ -2308,15 +2292,15 @@ ada/freeze.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
    ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads 
+   ada/widechar.ads
 
 ada/frontend.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2336,52 +2320,52 @@ ada/frontend.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_scil.ads ada/sem_warn.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/sinput-l.ads ada/snames.ads ada/sprint.ads \
    ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-crc32.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/g-byorma.o : ada/gnat.ads ada/g-byorma.ads ada/g-byorma.adb \
-   ada/system.ads 
+   ada/system.ads
 
 ada/g-hesora.o : ada/gnat.ads ada/g-hesora.ads ada/g-hesora.adb \
-   ada/system.ads 
+   ada/system.ads
 
 ada/g-htable.o : ada/gnat.ads ada/g-htable.ads ada/g-htable.adb \
-   ada/system.ads ada/s-htable.ads 
+   ada/system.ads ada/s-htable.ads
 
 ada/g-spchge.o : ada/gnat.ads ada/g-spchge.ads ada/g-spchge.adb \
-   ada/system.ads 
+   ada/system.ads
 
 ada/g-speche.o : ada/gnat.ads ada/g-speche.ads ada/g-speche.adb \
-   ada/g-spchge.ads ada/g-spchge.adb ada/system.ads 
+   ada/g-spchge.ads ada/g-spchge.adb ada/system.ads
 
 ada/g-u3spch.o : ada/gnat.ads ada/g-spchge.ads ada/g-spchge.adb \
    ada/g-u3spch.ads ada/g-u3spch.adb ada/system.ads ada/s-wchcnv.ads \
-   ada/s-wchcon.ads 
+   ada/s-wchcon.ads
 
-ada/get_alfa.o : ada/ada.ads ada/a-ioexce.ads ada/a-unccon.ads \
-   ada/alfa.ads ada/get_alfa.ads ada/get_alfa.adb ada/gnat.ads \
-   ada/g-table.ads ada/g-table.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads ada/s-unstyp.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+ada/get_spark_xrefs.o : ada/ada.ads ada/a-ioexce.ads ada/a-unccon.ads \
+   ada/spark_xrefs.ads ada/get_spark_xrefs.ads ada/get_spark_xrefs.adb ada/gnat.ads \
+   ada/g-table.ads ada/g-table.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads \
+   ada/unchconv.ads ada/unchdeal.ads
 
 ada/get_targ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/einfo.ads \
    ada/get_targ.ads ada/get_targ.adb ada/hostparm.ads ada/namet.ads \
    ada/opt.ads ada/output.ads ada/snames.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
-ada/gnat.o : ada/gnat.ads ada/system.ads 
+ada/gnat.o : ada/gnat.ads ada/system.ads
 
 ada/gnat1drv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2395,7 +2379,7 @@ ada/gnat1drv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
    ada/lib-util.ads ada/lib-writ.ads ada/lib-xref.ads ada/namet.ads \
    ada/nlists.ads ada/opt.ads ada/osint.ads ada/output.ads ada/par_sco.ads \
-   ada/prepcomp.ads ada/put_alfa.ads ada/repinfo.ads ada/restrict.ads \
+   ada/prepcomp.ads ada/put_spark_xrefs.ads ada/repinfo.ads ada/restrict.ads \
    ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/scos.ads ada/sem.ads \
    ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch8.ads ada/sem_elim.ads \
    ada/sem_eval.ads ada/sem_type.ads ada/set_targ.ads ada/sinfo.ads \
@@ -2409,7 +2393,7 @@ ada/gnat1drv.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/table.adb ada/targparm.ads ada/tree_gen.ads ada/tree_io.ads \
    ada/treepr.ads ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/usage.ads \
-   ada/validsw.ads ada/widechar.ads 
+   ada/validsw.ads ada/widechar.ads
 
 ada/gnatbind.o : ada/ada.ads ada/a-comlin.ads ada/a-clrefi.ads \
    ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads ada/ali.ads \
@@ -2420,21 +2404,21 @@ ada/gnatbind.o : ada/ada.ads ada/a-comlin.ads ada/a-clrefi.ads \
    ada/gnatbind.adb ada/gnatvsn.ads ada/hostparm.ads ada/namet.ads \
    ada/opt.ads ada/osint.ads ada/osint-b.ads ada/output.ads ada/rident.ads \
    ada/snames.ads ada/switch.ads ada/switch.adb ada/switch-b.ads \
-   ada/system.ads ada/s-assert.ads ada/s-casuti.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/system.ads ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+   ada/unchconv.ads ada/unchdeal.ads
 
 ada/gnatvsn.o : ada/ada.ads ada/a-unccon.ads ada/gnatvsn.ads \
    ada/gnatvsn.adb ada/system.ads ada/s-secsta.ads ada/s-stoele.ads \
-   ada/s-stoele.adb 
+   ada/s-stoele.adb
 
 ada/hostparm.o : ada/ada.ads ada/a-unccon.ads ada/hostparm.ads \
    ada/system.ads ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/impunit.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2445,13 +2429,12 @@ ada/impunit.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-sort.adb ada/namet.ads ada/nlists.ads \
    ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/inline.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2464,15 +2447,14 @@ ada/inline.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.adb ada/opt.ads ada/output.ads ada/sem.ads ada/sem_aux.ads \
    ada/sem_ch10.ads ada/sem_ch12.ads ada/sem_ch8.ads ada/sem_util.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
-ada/interfac.o : ada/interfac.ads ada/system.ads 
+ada/interfac.o : ada/interfac.ads ada/system.ads
 
 ada/itypes.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2481,17 +2463,17 @@ ada/itypes.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/itypes.ads ada/itypes.adb ada/namet.ads ada/nlists.ads ada/opt.ads \
    ada/output.ads ada/rident.ads ada/sem.ads ada/sem_util.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/krunch.o : ada/ada.ads ada/a-unccon.ads ada/hostparm.ads \
-   ada/krunch.ads ada/krunch.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/krunch.ads ada/krunch.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/layout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2503,22 +2485,22 @@ ada/layout.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/hostparm.ads ada/layout.ads ada/layout.adb ada/lib.ads \
    ada/lib-util.ads ada/lib-xref.ads ada/namet.ads ada/namet-sp.ads \
    ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
-   ada/output.ads ada/put_alfa.ads ada/repinfo.ads ada/repinfo.adb \
+   ada/output.ads ada/put_spark_xrefs.ads ada/repinfo.ads ada/repinfo.adb \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch13.ads \
    ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_res.ads \
    ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/set_targ.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
    ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
 ada/lib-load.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2534,25 +2516,25 @@ ada/lib-load.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/sinput-l.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tbuild.ads ada/tbuild.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/lib-util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/lib.ads ada/lib-util.ads ada/lib-util.adb ada/namet.ads ada/opt.ads \
    ada/osint.ads ada/osint-c.ads ada/output.ads ada/stringt.ads \
-   ada/stringt.adb ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/stringt.adb ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads
 
 ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/ali.ads ada/ali.adb ada/alloc.ads ada/aspects.ads \
@@ -2565,23 +2547,23 @@ ada/lib-writ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-util.ads ada/lib-util.adb ada/lib-writ.ads ada/lib-writ.adb \
    ada/lib-xref.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
    ada/nmake.ads ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads \
-   ada/par.ads ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads \
+   ada/par.ads ada/par_sco.ads ada/put_spark_xrefs.ads ada/restrict.ads \
    ada/restrict.adb ada/rident.ads ada/scans.ads ada/scn.ads ada/scng.ads \
    ada/scng.adb ada/sem_aux.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/sinput.adb ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-casuti.ads \
-   ada/s-crc32.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-casuti.ads ada/s-crc32.ads \
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
-   ada/a-uncdea.ads ada/alfa.ads ada/alfa.adb ada/alloc.ads \
+   ada/a-uncdea.ads ada/spark_xrefs.ads ada/spark_xrefs.adb ada/alloc.ads \
    ada/aspects.ads ada/atree.ads ada/atree.adb ada/casing.ads \
    ada/checks.ads ada/csets.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
    ada/elists.ads ada/elists.adb ada/err_vars.ads ada/errout.ads \
@@ -2591,10 +2573,10 @@ ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-htable.ads ada/g-table.ads ada/g-table.adb ada/hostparm.ads \
    ada/interfac.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \
    ada/lib-sort.adb ada/lib-util.ads ada/lib-util.adb ada/lib-xref.ads \
-   ada/lib-xref.adb ada/lib-xref-alfa.adb ada/namet.ads ada/namet.adb \
+   ada/lib-xref.adb ada/lib-xref-spark_specific.adb ada/namet.ads ada/namet.adb \
    ada/namet-sp.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
    ada/nmake.adb ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads \
-   ada/put_alfa.ads ada/put_alfa.adb ada/restrict.ads ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/put_spark_xrefs.adb ada/restrict.ads ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch8.ads ada/sem_disp.ads \
    ada/sem_eval.ads ada/sem_prag.ads ada/sem_res.ads ada/sem_type.ads \
@@ -2602,15 +2584,14 @@ ada/lib-xref.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
    ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/aspects.ads ada/atree.ads ada/atree.adb \
@@ -2621,12 +2602,12 @@ ada/lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/namet.adb ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
    ada/scans.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/live.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2637,56 +2618,55 @@ ada/live.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/namet.ads ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
    ada/sem_aux.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/namet-sp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
    ada/g-u3spch.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
    ada/namet.adb ada/namet-sp.ads ada/namet-sp.adb ada/opt.ads \
-   ada/output.ads ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcnv.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/types.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/widechar.ads 
+   ada/output.ads ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcnv.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
+   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
 
 ada/namet.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/output.ads \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/types.adb ada/unchconv.ads \
+   ada/unchdeal.ads ada/widechar.ads
 
 ada/nlists.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
    ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/nlists.adb \
    ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinput.ads ada/snames.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/nmake.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/debug.ads \
    ada/einfo.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/sinfo.ads \
    ada/sinfo.adb ada/snames.ads ada/stand.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
 ada/opt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/gnatvsn.ads ada/hostparm.ads ada/opt.ads ada/opt.adb ada/system.ads \
@@ -2694,50 +2674,50 @@ ada/opt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
    ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
    ada/s-wchcon.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads 
+   ada/unchdeal.ads
 
 ada/osint-b.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/namet.ads ada/opt.ads ada/osint.ads ada/osint-b.ads ada/osint-b.adb \
-   ada/output.ads ada/rident.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/output.ads ada/rident.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/osint-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/osint.ads \
    ada/osint-c.ads ada/osint-c.adb ada/output.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/widechar.ads
 
 ada/osint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/fmap.ads ada/gnat.ads \
    ada/g-htable.ads ada/gnatvsn.ads ada/hostparm.ads ada/interfac.ads \
    ada/namet.ads ada/namet.adb ada/opt.ads ada/osint.ads ada/osint.adb \
    ada/output.ads ada/rident.ads ada/sdefault.ads ada/system.ads \
-   ada/s-assert.ads ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-htable.adb ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
+   ada/s-casuti.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads
 
 ada/output.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/hostparm.ads ada/output.ads ada/output.adb \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
-   ada/s-htable.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/aspects.ads ada/aspects.adb ada/atree.ads \
@@ -2757,7 +2737,7 @@ ada/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/par-ch5.adb ada/par-ch6.adb ada/par-ch7.adb ada/par-ch8.adb \
    ada/par-ch9.adb ada/par-endh.adb ada/par-labl.adb ada/par-load.adb \
    ada/par-prag.adb ada/par-sync.adb ada/par-tchk.adb ada/par-util.adb \
-   ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads ada/rident.ads \
+   ada/par_sco.ads ada/put_spark_xrefs.ads ada/restrict.ads ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/scans.adb ada/scn.ads ada/scng.ads \
    ada/scng.adb ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_res.ads \
@@ -2766,17 +2746,16 @@ ada/par.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/sinput.adb ada/sinput-l.ads ada/snames.ads ada/snames.adb \
    ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
    ada/style.adb ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-crc32.ads \
-   ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/types.adb \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads ada/warnsw.ads \
-   ada/widechar.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
+   ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/validsw.ads ada/warnsw.ads ada/widechar.ads
 
 ada/par_sco.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -2791,13 +2770,13 @@ ada/par_sco.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/put_scos.ads ada/put_scos.adb ada/scans.ads ada/scos.ads \
    ada/scos.adb ada/sem.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/prep.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/casing.ads ada/csets.ads \
@@ -2805,13 +2784,13 @@ ada/prep.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-dyntab.adb ada/g-hesorg.ads ada/g-hesorg.adb ada/hostparm.ads \
    ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/prep.ads \
    ada/prep.adb ada/scans.ads ada/sinput.ads ada/snames.ads \
-   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
-   ada/s-carun8.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-carun8.ads \
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/casing.ads \
@@ -2824,29 +2803,28 @@ ada/prepcomp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/scn.ads ada/scng.ads ada/scng.adb ada/sinfo.ads ada/sinput.ads \
    ada/sinput-l.ads ada/snames.ads ada/stringt.ads ada/stringt.adb \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-crc32.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
-ada/put_alfa.o : ada/ada.ads ada/a-unccon.ads ada/alfa.ads ada/gnat.ads \
-   ada/g-table.ads ada/g-table.adb ada/put_alfa.ads ada/put_alfa.adb \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
-   ada/s-stalib.ads ada/s-unstyp.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads 
+ada/put_spark_xrefs.o : ada/ada.ads ada/a-unccon.ads ada/spark_xrefs.ads ada/gnat.ads \
+   ada/g-table.ads ada/g-table.adb ada/put_spark_xrefs.ads ada/put_spark_xrefs.adb \
+   ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-stalib.ads \
+   ada/s-unstyp.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/put_scos.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
    ada/g-table.ads ada/g-table.adb ada/hostparm.ads ada/namet.ads \
    ada/opt.ads ada/output.ads ada/put_scos.ads ada/put_scos.adb \
-   ada/scos.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/scos.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/repinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2858,13 +2836,13 @@ ada/repinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/repinfo.ads ada/repinfo.adb ada/scans.ads ada/sem_aux.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/restrict.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -2877,16 +2855,16 @@ ada/restrict.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.ads ada/opt.ads ada/output.ads ada/restrict.ads \
    ada/restrict.adb ada/rident.ads ada/scans.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
-   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
-ada/rident.o : ada/rident.ads ada/system.ads ada/s-rident.ads 
+ada/rident.o : ada/rident.ads ada/system.ads ada/s-rident.ads
 
 ada/rtsfind.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -2901,189 +2879,187 @@ ada/rtsfind.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/rtsfind.adb ada/sem.ads ada/sem_aux.ads ada/sem_ch7.ads \
    ada/sem_dist.ads ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tbuild.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/s-addope.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-addope.ads ada/s-addope.adb 
+   ada/s-addope.ads ada/s-addope.adb
 
 ada/s-assert.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/system.ads ada/s-assert.ads ada/s-assert.adb ada/s-exctab.ads \
    ada/s-exctab.adb ada/s-excdeb.ads ada/s-htable.ads ada/s-parame.ads \
    ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-traent.ads 
+   ada/s-stoele.adb ada/s-traent.ads
 
 ada/s-bitops.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/system.ads ada/s-bitops.ads ada/s-bitops.adb ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads 
+   ada/s-stalib.ads ada/s-traent.ads ada/s-unstyp.ads
 
 ada/s-carun8.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-addope.ads ada/s-addope.adb ada/s-carun8.ads ada/s-carun8.adb 
+   ada/s-addope.ads ada/s-addope.adb ada/s-carun8.ads ada/s-carun8.adb
 
-ada/s-casuti.o : ada/system.ads ada/s-casuti.ads ada/s-casuti.adb 
+ada/s-casuti.o : ada/system.ads ada/s-casuti.ads ada/s-casuti.adb
 
-ada/s-conca2.o : ada/system.ads ada/s-conca2.ads ada/s-conca2.adb 
+ada/s-conca2.o : ada/system.ads ada/s-conca2.ads ada/s-conca2.adb
 
 ada/s-conca3.o : ada/system.ads ada/s-conca2.ads ada/s-conca3.ads \
-   ada/s-conca3.adb 
+   ada/s-conca3.adb
 
 ada/s-conca4.o : ada/system.ads ada/s-conca3.ads ada/s-conca4.ads \
-   ada/s-conca4.adb 
+   ada/s-conca4.adb
 
 ada/s-conca5.o : ada/system.ads ada/s-conca4.ads ada/s-conca5.ads \
-   ada/s-conca5.adb 
+   ada/s-conca5.adb
 
 ada/s-conca6.o : ada/system.ads ada/s-conca5.ads ada/s-conca6.ads \
-   ada/s-conca6.adb 
+   ada/s-conca6.adb
 
 ada/s-conca7.o : ada/system.ads ada/s-conca6.ads ada/s-conca7.ads \
-   ada/s-conca7.adb 
+   ada/s-conca7.adb
 
 ada/s-conca8.o : ada/system.ads ada/s-conca7.ads ada/s-conca8.ads \
-   ada/s-conca8.adb 
+   ada/s-conca8.adb
 
 ada/s-conca9.o : ada/system.ads ada/s-conca8.ads ada/s-conca9.ads \
-   ada/s-conca9.adb 
+   ada/s-conca9.adb
 
 ada/s-crc32.o : ada/interfac.ads ada/system.ads ada/s-crc32.ads \
-   ada/s-crc32.adb 
+   ada/s-crc32.adb
 
-ada/s-crtl.o : ada/system.ads ada/s-crtl.ads ada/s-parame.ads 
+ada/s-crtl.o : ada/system.ads ada/s-crtl.ads ada/s-parame.ads
 
 ada/s-excdeb.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-excdeb.ads ada/s-excdeb.adb ada/s-stalib.ads 
+   ada/s-excdeb.ads ada/s-excdeb.adb ada/s-stalib.ads
 
 ada/s-except.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-except.ads \
    ada/s-except.adb ada/s-htable.ads ada/s-parame.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-traent.ads 
+   ada/s-traent.ads
 
 ada/s-exctab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/system.ads ada/s-exctab.ads ada/s-exctab.adb \
    ada/s-htable.ads ada/s-htable.adb ada/s-parame.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-strhas.ads ada/s-traent.ads 
+   ada/s-strhas.ads ada/s-traent.ads
 
 ada/s-htable.o : ada/ada.ads ada/a-uncdea.ads ada/system.ads \
-   ada/s-htable.ads ada/s-htable.adb ada/s-strhas.ads 
+   ada/s-htable.ads ada/s-htable.adb ada/s-strhas.ads
 
 ada/s-imenne.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-imenne.adb \
-   ada/s-stalib.ads 
+   ada/s-imenne.ads ada/s-imenne.adb
 
 ada/s-imgenu.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
    ada/s-imgenu.ads ada/s-imgenu.adb ada/s-secsta.ads ada/s-stoele.ads \
-   ada/s-stoele.adb 
+   ada/s-stoele.adb
 
 ada/s-mastop.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-mastop.ads ada/s-mastop.adb ada/s-stoele.ads ada/s-stoele.adb 
+   ada/s-mastop.ads ada/s-mastop.adb ada/s-stoele.ads ada/s-stoele.adb
 
 ada/s-memory.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/system.ads ada/s-crtl.ads ada/s-memory.ads ada/s-memory.adb \
    ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads 
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads
 
 ada/s-os_lib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/system.ads ada/s-casuti.ads ada/s-crtl.ads \
    ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-os_lib.ads \
    ada/s-os_lib.adb ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads 
+   ada/s-string.ads ada/s-traent.ads
 
-ada/s-parame.o : ada/system.ads ada/s-parame.ads ada/s-parame.adb 
+ada/s-parame.o : ada/system.ads ada/s-parame.ads ada/s-parame.adb
 
-ada/s-purexc.o : ada/system.ads ada/s-purexc.ads 
+ada/s-purexc.o : ada/system.ads ada/s-purexc.ads
 
 ada/s-restri.o : ada/system.ads ada/s-restri.ads ada/s-restri.adb \
-   ada/s-rident.ads 
+   ada/s-rident.ads
 
 ada/s-secsta.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/system.ads ada/s-parame.ads ada/s-secsta.ads \
    ada/s-secsta.adb ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads 
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads
 
 ada/s-soflin.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/system.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
    ada/s-soflin.adb ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-traent.ads 
+   ada/s-stoele.adb ada/s-traent.ads
 
 ada/s-sopco3.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
    ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-sopco3.ads \
-   ada/s-sopco3.adb 
+   ada/s-sopco3.adb
 
 ada/s-sopco4.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
    ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-sopco4.ads \
-   ada/s-sopco4.adb 
+   ada/s-sopco4.adb
 
 ada/s-sopco5.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
    ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-sopco5.ads \
-   ada/s-sopco5.adb 
+   ada/s-sopco5.adb
 
 ada/s-stache.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-stache.ads ada/s-stache.adb ada/s-stoele.ads ada/s-stoele.adb 
+   ada/s-stache.ads ada/s-stache.adb ada/s-stoele.ads ada/s-stoele.adb
 
 ada/s-stalib.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/system.ads ada/s-memory.ads ada/s-parame.ads ada/s-soflin.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stalib.adb ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-traent.ads 
+   ada/s-stoele.adb ada/s-traent.ads
 
 ada/s-stoele.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-stoele.ads ada/s-stoele.adb 
+   ada/s-stoele.ads ada/s-stoele.adb
 
 ada/s-strcom.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-strcom.ads ada/s-strcom.adb 
+   ada/s-strcom.ads ada/s-strcom.adb
 
-ada/s-strhas.o : ada/system.ads ada/s-strhas.ads ada/s-strhas.adb 
+ada/s-strhas.o : ada/system.ads ada/s-strhas.ads ada/s-strhas.adb
 
 ada/s-string.o : ada/ada.ads ada/a-uncdea.ads ada/system.ads \
-   ada/s-string.ads ada/s-string.adb 
+   ada/s-string.ads ada/s-string.adb
 
 ada/s-strops.o : ada/ada.ads ada/a-unccon.ads ada/system.ads \
    ada/s-secsta.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strops.ads \
-   ada/s-strops.adb 
+   ada/s-strops.adb
 
-ada/s-traent.o : ada/system.ads ada/s-traent.ads ada/s-traent.adb 
+ada/s-traent.o : ada/system.ads ada/s-traent.ads ada/s-traent.adb
 
-ada/s-unstyp.o : ada/system.ads ada/s-unstyp.ads 
+ada/s-unstyp.o : ada/system.ads ada/s-unstyp.ads
 
-ada/s-utf_32.o : ada/system.ads ada/s-utf_32.ads ada/s-utf_32.adb 
+ada/s-utf_32.o : ada/system.ads ada/s-utf_32.ads ada/s-utf_32.adb
 
 ada/s-wchcnv.o : ada/interfac.ads ada/system.ads ada/s-wchcnv.ads \
-   ada/s-wchcnv.adb ada/s-wchcon.ads ada/s-wchjis.ads 
+   ada/s-wchcnv.adb ada/s-wchcon.ads ada/s-wchjis.ads
 
-ada/s-wchcon.o : ada/system.ads ada/s-wchcon.ads ada/s-wchcon.adb 
+ada/s-wchcon.o : ada/system.ads ada/s-wchcon.ads ada/s-wchcon.adb
 
-ada/s-wchjis.o : ada/system.ads ada/s-wchjis.ads ada/s-wchjis.adb 
+ada/s-wchjis.o : ada/system.ads ada/s-wchjis.ads ada/s-wchjis.adb
 
 ada/scans.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/output.ads \
    ada/scans.ads ada/scans.adb ada/snames.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/scil_ll.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads \
    ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
    ada/output.ads ada/scil_ll.ads ada/scil_ll.adb ada/sinfo.ads \
-   ada/sinput.ads ada/snames.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/sinput.ads ada/snames.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
 ada/scn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/aspects.ads ada/atree.ads ada/atree.adb \
@@ -3097,15 +3073,15 @@ ada/scn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
    ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \
    ada/style.adb ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-crc32.ads \
-   ada/s-crc32.adb ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-crc32.adb \
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-utf_32.ads ada/s-utf_32.adb ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/scng.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/casing.ads \
@@ -3113,21 +3089,21 @@ ada/scng.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/interfac.ads ada/namet.ads ada/opt.ads ada/output.ads \
    ada/restrict.ads ada/rident.ads ada/scans.ads ada/scng.ads ada/scng.adb \
    ada/sinfo.ads ada/sinput.ads ada/snames.ads ada/stringt.ads \
-   ada/styleg.ads ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-crc32.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/styleg.ads ada/stylesw.ads ada/system.ads ada/s-crc32.ads \
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/scos.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
    ada/g-table.ads ada/g-table.adb ada/hostparm.ads ada/namet.ads \
    ada/opt.ads ada/output.ads ada/scos.ads ada/scos.adb ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/sem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/alloc.ads ada/aspects.ads ada/atree.ads ada/atree.adb \
@@ -3144,13 +3120,13 @@ ada/sem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \
    ada/sem_dim.ads ada/sem_prag.ads ada/sem_util.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/widechar.ads
 
 ada/sem_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3166,34 +3142,33 @@ ada/sem_aggr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/sem.ads ada/sem_aggr.ads ada/sem_aggr.adb \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch13.ads \
    ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch8.ads ada/sem_dim.ads \
-   ada/sem_disp.ads ada/sem_eval.ads ada/sem_eval.adb ada/sem_prag.ads \
-   ada/sem_res.ads ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
-   ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
-   ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
-   ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads 
-
-ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
-   ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads ada/alloc.ads \
-   ada/aspects.ads ada/atree.ads ada/atree.adb ada/casing.ads \
-   ada/checks.ads ada/checks.adb ada/csets.ads ada/debug.ads \
-   ada/debug_a.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
-   ada/elists.adb ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
-   ada/eval_fat.ads ada/exp_aggr.ads ada/exp_ch11.ads ada/exp_ch2.ads \
-   ada/exp_ch4.ads ada/exp_ch6.ads ada/exp_ch7.ads ada/exp_disp.ads \
+   ada/sem_disp.ads ada/sem_eval.ads ada/sem_eval.adb ada/sem_res.ads \
+   ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.ads \
+   ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
+   ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
+   ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/validsw.ads ada/widechar.ads
+
+ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
+   ada/a-except.ads ada/a-unccon.ads ada/a-uncdea.ads ada/alloc.ads \
+   ada/aspects.ads ada/atree.ads ada/atree.adb ada/casing.ads \
+   ada/checks.ads ada/checks.adb ada/csets.ads ada/debug.ads \
+   ada/debug_a.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
+   ada/elists.adb ada/err_vars.ads ada/errout.ads ada/erroutc.ads \
+   ada/eval_fat.ads ada/exp_aggr.ads ada/exp_ch11.ads ada/exp_ch2.ads \
+   ada/exp_ch4.ads ada/exp_ch6.ads ada/exp_ch7.ads ada/exp_disp.ads \
    ada/exp_dist.ads ada/exp_pakd.ads ada/exp_tss.ads ada/exp_util.ads \
    ada/exp_util.adb ada/expander.ads ada/fname.ads ada/fname-uf.ads \
    ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-byorma.ads \
@@ -3201,7 +3176,7 @@ ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
    ada/interfac.ads ada/itypes.ads ada/lib.ads ada/lib-load.ads \
    ada/lib-util.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb \
    ada/namet-sp.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/nmake.adb ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.adb ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/sdefault.ads ada/sem.ads ada/sem.adb ada/sem_aggr.ads \
    ada/sem_attr.ads ada/sem_attr.adb ada/sem_aux.ads ada/sem_aux.adb \
@@ -3216,16 +3191,16 @@ ada/sem_attr.o : ada/ada.ads ada/a-charac.ads ada/a-chlat1.ads \
    ada/sinput.ads ada/sinput.adb ada/snames.ads ada/snames.adb \
    ada/sprint.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
-   ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-exctab.adb \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/validsw.ads ada/widechar.ads 
+   ada/validsw.ads ada/widechar.ads
 
 ada/sem_aux.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3233,11 +3208,11 @@ ada/sem_aux.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
    ada/output.ads ada/sem_aux.ads ada/sem_aux.adb ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/sem_case.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3249,14 +3224,13 @@ ada/sem_case.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/output.ads ada/sem.ads ada/sem_aux.ads ada/sem_case.ads \
    ada/sem_case.adb ada/sem_eval.ads ada/sem_res.ads ada/sem_type.ads \
    ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/stand.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tbuild.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/snames.ads ada/stand.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_cat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3268,7 +3242,7 @@ ada/sem_cat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-htable.ads ada/hostparm.ads ada/lib.ads ada/lib.adb \
    ada/lib-list.adb ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
-   ada/nmake.ads ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.ads ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
    ada/sem_cat.adb ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads \
@@ -3276,14 +3250,14 @@ ada/sem_cat.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_util.adb ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3298,7 +3272,7 @@ ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/namet-sp.ads \
    ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
-   ada/opt.adb ada/output.ads ada/par_sco.ads ada/put_alfa.ads \
+   ada/opt.adb ada/output.ads ada/par_sco.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_ch10.ads ada/sem_ch10.adb ada/sem_ch11.ads ada/sem_ch12.ads \
@@ -3310,14 +3284,14 @@ ada/sem_ch10.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
    ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/sem_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3326,19 +3300,18 @@ ada/sem_ch11.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/exp_code.ads ada/exp_tss.ads ada/fname.ads ada/hostparm.ads \
    ada/lib.ads ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
-   ada/output.ads ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads \
+   ada/output.ads ada/par_sco.ads ada/put_spark_xrefs.ads ada/restrict.ads \
    ada/rident.ads ada/rtsfind.ads ada/sem.ads ada/sem_aux.ads \
    ada/sem_ch11.ads ada/sem_ch11.adb ada/sem_ch13.ads ada/sem_ch5.ads \
    ada/sem_ch8.ads ada/sem_eval.ads ada/sem_res.ads ada/sem_util.ads \
    ada/sem_warn.ads ada/sem_warn.adb ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/sem_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -3353,7 +3326,7 @@ ada/sem_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-load.ads \
    ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/namet-sp.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads ada/put_alfa.ads \
+   ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/rtsfind.adb \
    ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads \
@@ -3366,16 +3339,15 @@ ada/sem_ch12.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/sinput-l.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
    ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
-   ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/widechar.ads 
+   ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads ada/s-htable.adb \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -3391,7 +3363,7 @@ ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
    ada/rtsfind.adb ada/scans.ads ada/sem.ads ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_aux.adb ada/sem_cat.ads ada/sem_ch13.ads \
    ada/sem_ch13.adb ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch7.ads \
@@ -3401,16 +3373,16 @@ ada/sem_ch13.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-exctab.adb \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
-   ada/warnsw.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/validsw.ads ada/warnsw.ads \
+   ada/widechar.ads
 
 ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3419,12 +3391,12 @@ ada/sem_ch2.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/output.ads ada/restrict.ads ada/rident.ads ada/sem_ch2.ads \
    ada/sem_ch2.adb ada/sem_ch8.ads ada/sem_dim.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/types.adb ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3442,7 +3414,7 @@ ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_aux.adb ada/sem_case.ads ada/sem_case.adb \
    ada/sem_cat.ads ada/sem_cat.adb ada/sem_ch10.ads ada/sem_ch11.ads \
@@ -3455,16 +3427,15 @@ ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/sprint.ads ada/stand.ads \
    ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/validsw.ads \
-   ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/validsw.ads ada/widechar.ads
 
 ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3479,7 +3450,7 @@ ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem_aggr.ads \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_case.ads ada/sem_case.adb \
    ada/sem_cat.ads ada/sem_ch13.ads ada/sem_ch3.ads ada/sem_ch4.ads \
@@ -3490,15 +3461,15 @@ ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
    ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3514,7 +3485,7 @@ ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/itypes.ads ada/lib.ads ada/lib-load.ads ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb \
-   ada/output.ads ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads \
+   ada/output.ads ada/par_sco.ads ada/put_spark_xrefs.ads ada/restrict.ads \
    ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/sem.ads ada/sem.adb ada/sem_aggr.ads ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_case.ads ada/sem_case.adb ada/sem_cat.ads \
@@ -3528,15 +3499,15 @@ ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_warn.adb ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/sprint.ads \
    ada/stand.ads ada/stringt.ads ada/style.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/validsw.ads 
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/validsw.ads
 
 ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3552,7 +3523,7 @@ ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/namet-sp.ads \
    ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
-   ada/opt.adb ada/output.ads ada/put_alfa.ads ada/restrict.ads \
+   ada/opt.adb ada/output.ads ada/put_spark_xrefs.ads ada/restrict.ads \
    ada/restrict.adb ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/sem.ads ada/sem.adb ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_aux.adb ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch11.ads \
@@ -3565,16 +3536,16 @@ ada/sem_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
    ada/sinput.ads ada/snames.ads ada/snames.adb ada/stand.ads \
    ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-carun8.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-carun8.ads \
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads \
-   ada/widechar.ads 
+   ada/widechar.ads
 
 ada/sem_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3588,7 +3559,7 @@ ada/sem_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch12.ads ada/sem_ch13.ads \
    ada/sem_ch3.ads ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch7.adb \
@@ -3597,14 +3568,14 @@ ada/sem_ch7.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/snames.adb ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3620,7 +3591,7 @@ ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb \
-   ada/output.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \
+   ada/output.ads ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb \
    ada/rident.ads ada/rtsfind.ads ada/rtsfind.adb ada/scans.ads \
    ada/sem.ads ada/sem.adb ada/sem_aggr.ads ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch11.ads \
@@ -3633,15 +3604,14 @@ ada/sem_ch8.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_warn.ads ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
    ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \
@@ -3657,7 +3627,7 @@ ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/layout.ads ada/lib.ads ada/lib-load.ads ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb \
-   ada/output.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \
+   ada/output.ads ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb \
    ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb \
    ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
    ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads \
@@ -3670,14 +3640,14 @@ ada/sem_ch9.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
    ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/validsw.ads
 
 ada/sem_dim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3690,7 +3660,7 @@ ada/sem_dim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-load.ads \
    ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/namet-sp.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/nmake.adb ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.adb ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/rtsfind.adb \
    ada/scans.ads ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_dim.ads ada/sem_dim.adb \
@@ -3699,15 +3669,15 @@ ada/sem_dim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/widechar.ads
 
 ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3722,7 +3692,7 @@ ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/scil_ll.ads ada/sem.ads \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_ch3.ads \
    ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_disp.ads \
@@ -3730,15 +3700,14 @@ ada/sem_disp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_util.ads ada/sem_util.adb ada/set_targ.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
    ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3750,12 +3719,12 @@ ada/sem_dist.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_dist.ads ada/sem_dist.adb ada/sem_eval.ads ada/sem_res.ads \
    ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/stringt.adb \
-   ada/system.ads ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tbuild.ads \
-   ada/tree_io.ads ada/types.ads ada/types.adb ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tbuild.ads ada/tree_io.ads \
+   ada/types.ads ada/types.adb ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3769,7 +3738,7 @@ ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \
    ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \
    ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem_attr.ads \
    ada/sem_aux.ads ada/sem_cat.ads ada/sem_ch7.ads ada/sem_ch8.ads \
    ada/sem_disp.ads ada/sem_elab.ads ada/sem_elab.adb ada/sem_eval.ads \
@@ -3777,14 +3746,14 @@ ada/sem_elab.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
    ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3797,14 +3766,13 @@ ada/sem_elim.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_elim.ads \
    ada/sem_elim.adb ada/sem_prag.ads ada/sem_util.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
-   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3817,7 +3785,7 @@ ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-htable.ads ada/hostparm.ads ada/interfac.ads ada/itypes.ads \
    ada/lib.ads ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
-   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_alfa.ads \
+   ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/sem.ads ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_aux.adb ada/sem_cat.ads ada/sem_ch13.ads ada/sem_ch4.ads \
@@ -3828,15 +3796,15 @@ ada/sem_eval.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3849,13 +3817,13 @@ ada/sem_intr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_aux.ads ada/sem_aux.adb ada/sem_eval.ads ada/sem_intr.ads \
    ada/sem_intr.adb ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
-   ada/stringt.adb ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/stringt.adb ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_mech.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3865,13 +3833,13 @@ ada/sem_mech.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/rident.ads \
    ada/sem.ads ada/sem_aux.ads ada/sem_mech.ads ada/sem_mech.adb \
    ada/sem_util.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/stand.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/snames.ads ada/stand.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/ali.ads ada/alloc.ads ada/aspects.ads \
@@ -3890,7 +3858,7 @@ ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-writ.ads ada/lib-writ.adb ada/lib-xref.ads ada/namet.ads \
    ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/osint.ads ada/osint-c.ads \
-   ada/output.ads ada/par.ads ada/par_sco.ads ada/put_alfa.ads \
+   ada/output.ads ada/par.ads ada/par_sco.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/restrict.adb ada/rident.ads ada/rtsfind.ads \
    ada/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb ada/sem.ads \
    ada/sem.adb ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads \
@@ -3906,17 +3874,17 @@ ada/sem_prag.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/snames.adb ada/sprint.ads ada/stand.ads \
    ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-casuti.ads ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads \
-   ada/s-exctab.adb ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/ttypes.ads ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/urealp.adb ada/validsw.ads ada/warnsw.ads ada/widechar.ads 
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-casuti.ads \
+   ada/s-carun8.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-exctab.adb \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
+   ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
+   ada/validsw.ads ada/warnsw.ads ada/widechar.ads
 
 ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3934,7 +3902,7 @@ ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
    ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
    ada/nmake.ads ada/nmake.adb ada/opt.ads ada/opt.adb ada/output.ads \
-   ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
+   ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
    ada/rtsfind.ads ada/rtsfind.adb ada/scans.ads ada/sem.ads ada/sem.adb \
    ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_cat.ads \
    ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads \
@@ -3947,16 +3915,16 @@ ada/sem_res.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads \
    ada/snames.ads ada/sprint.ads ada/stand.ads ada/stringt.ads \
    ada/stringt.adb ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/stylesw.ads ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
+   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/types.adb ada/uintp.ads ada/uintp.adb ada/uname.ads \
    ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/validsw.ads ada/widechar.ads 
+   ada/validsw.ads ada/widechar.ads
 
 ada/sem_scil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3965,11 +3933,11 @@ ada/sem_scil.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/opt.ads ada/output.ads ada/rtsfind.ads ada/scil_ll.ads \
    ada/sem_aux.ads ada/sem_scil.ads ada/sem_scil.adb ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/sem_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3978,11 +3946,11 @@ ada/sem_smem.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/namet.ads ada/nlists.ads ada/opt.ads ada/output.ads ada/sem_aux.ads \
    ada/sem_smem.ads ada/sem_smem.adb ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/sem_type.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -3995,7 +3963,7 @@ ada/sem_type.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
    ada/lib-util.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb \
    ada/namet-sp.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/opt.ads ada/output.ads ada/put_alfa.ads ada/restrict.ads \
+   ada/opt.ads ada/output.ads ada/put_spark_xrefs.ads ada/restrict.ads \
    ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/sem.ads \
    ada/sem_attr.ads ada/sem_aux.ads ada/sem_ch12.ads ada/sem_ch6.ads \
    ada/sem_ch8.ads ada/sem_disp.ads ada/sem_dist.ads ada/sem_eval.ads \
@@ -4003,15 +3971,14 @@ ada/sem_type.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_util.adb ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
-   ada/treepr.ads ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/uname.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/targparm.ads ada/tbuild.ads ada/tree_io.ads ada/treepr.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4026,7 +3993,7 @@ ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-list.adb ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads \
    ada/lib-xref.ads ada/namet.ads ada/namet.adb ada/namet-sp.ads \
    ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads \
-   ada/output.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \
+   ada/output.ads ada/put_spark_xrefs.ads ada/restrict.ads ada/restrict.adb \
    ada/rident.ads ada/rtsfind.ads ada/rtsfind.adb ada/scans.ads \
    ada/sem.ads ada/sem.adb ada/sem_attr.ads ada/sem_aux.ads \
    ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch11.ads ada/sem_ch12.ads \
@@ -4038,15 +4005,15 @@ ada/sem_util.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/stand.ads ada/stringt.ads ada/style.ads \
    ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
-   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-strhas.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tbuild.adb \
+   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/sem_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4054,12 +4021,11 @@ ada/sem_vfpt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
    ada/output.ads ada/rident.ads ada/sem_vfpt.ads ada/sem_vfpt.adb \
    ada/sinfo.ads ada/snames.ads ada/stand.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4072,7 +4038,7 @@ ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-sort.adb \
    ada/lib-util.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb \
    ada/namet-sp.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads \
-   ada/opt.ads ada/output.ads ada/par_sco.ads ada/put_alfa.ads \
+   ada/opt.ads ada/output.ads ada/par_sco.ads ada/put_spark_xrefs.ads \
    ada/restrict.ads ada/rident.ads ada/rtsfind.ads ada/scans.ads \
    ada/sem.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb \
    ada/sem_ch8.ads ada/sem_disp.ads ada/sem_eval.ads ada/sem_res.ads \
@@ -4080,25 +4046,24 @@ ada/sem_warn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sem_warn.adb ada/set_targ.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
    ada/stringt.ads ada/style.ads ada/styleg.ads ada/styleg.adb \
-   ada/stylesw.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/stylesw.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/targparm.ads ada/tbuild.ads ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/set_targ.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/einfo.ads \
    ada/get_targ.ads ada/hostparm.ads ada/namet.ads ada/opt.ads \
    ada/output.ads ada/set_targ.ads ada/set_targ.adb ada/snames.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4106,23 +4071,23 @@ ada/sinfo-cn.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/hostparm.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
    ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinfo-cn.ads \
    ada/sinfo-cn.adb ada/sinput.ads ada/snames.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/sinfo.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
    ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/gnat.ads \
    ada/g-htable.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
    ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
-   ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-htable.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/sinput-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4130,12 +4095,12 @@ ada/sinput-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-byorma.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
    ada/opt.ads ada/output.ads ada/scans.ads ada/sinfo.ads ada/sinput.ads \
    ada/sinput.adb ada/sinput-c.ads ada/sinput-c.adb ada/snames.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4143,13 +4108,12 @@ ada/sinput-d.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-byorma.ads ada/hostparm.ads ada/namet.ads ada/nlists.ads \
    ada/opt.ads ada/osint.ads ada/osint-c.ads ada/output.ads ada/scans.ads \
    ada/sinfo.ads ada/sinput.ads ada/sinput.adb ada/sinput-d.ads \
-   ada/sinput-d.adb ada/snames.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/sinput-d.adb ada/snames.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4164,13 +4128,13 @@ ada/sinput-l.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/sinput-l.ads \
    ada/sinput-l.adb ada/snames.ads ada/stand.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
-   ada/system.ads ada/s-assert.ads ada/s-crc32.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/system.ads ada/s-crc32.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-utf_32.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/sinput.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4178,22 +4142,22 @@ ada/sinput.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/g-byorma.ads ada/hostparm.ads ada/interfac.ads ada/namet.ads \
    ada/namet.adb ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
    ada/scans.ads ada/sinfo.ads ada/sinput.ads ada/sinput.adb \
-   ada/snames.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/snames.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/snames.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/interfac.ads ada/namet.ads ada/namet.adb ada/opt.ads ada/output.ads \
-   ada/snames.ads ada/snames.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads 
+   ada/snames.ads ada/snames.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/widechar.ads
 
 ada/sprint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4207,28 +4171,27 @@ ada/sprint.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/sinput-d.ads ada/snames.ads ada/sprint.ads ada/sprint.adb \
    ada/stand.ads ada/stringt.ads ada/stringt.adb ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/widechar.ads 
+   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/stand.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads ada/stand.ads \
    ada/stand.adb ada/system.ads ada/s-exctab.ads ada/s-os_lib.ads \
    ada/s-stalib.ads ada/s-string.ads ada/s-unstyp.ads ada/tree_io.ads \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/stringt.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/namet.ads ada/opt.ads ada/output.ads ada/stringt.ads \
-   ada/stringt.adb ada/system.ads ada/s-assert.ads ada/s-carun8.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/types.adb ada/unchconv.ads ada/unchdeal.ads 
+   ada/stringt.adb ada/system.ads ada/s-carun8.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/types.adb \
+   ada/unchconv.ads ada/unchdeal.ads
 
 ada/style.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4238,85 +4201,84 @@ ada/style.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/namet.ads ada/namet.adb ada/nlists.ads ada/opt.ads ada/output.ads \
    ada/scans.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/sinput.adb \
    ada/snames.ads ada/stand.ads ada/style.ads ada/style.adb ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads 
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/styleg.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/casing.ads \
    ada/csets.ads ada/debug.ads ada/einfo.ads ada/err_vars.ads \
    ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads ada/scans.ads \
    ada/sinfo.ads ada/sinput.ads ada/snames.ads ada/styleg.ads \
-   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads 
+   ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads
 
 ada/stylesw.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/hostparm.ads ada/opt.ads ada/stylesw.ads ada/stylesw.adb \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/types.ads ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/switch-b.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnatvsn.ads \
    ada/hostparm.ads ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads \
    ada/switch.ads ada/switch-b.ads ada/switch-b.adb ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/switch-c.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/einfo.ads \
    ada/get_targ.ads ada/gnatvsn.ads ada/hostparm.ads ada/lib.ads \
    ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/set_targ.ads \
    ada/snames.ads ada/stylesw.ads ada/switch.ads ada/switch-c.ads \
-   ada/switch-c.adb ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/ttypes.ads \
-   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/validsw.ads ada/warnsw.ads 
+   ada/switch-c.adb ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
+   ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/validsw.ads ada/warnsw.ads
 
 ada/switch.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnatvsn.ads \
    ada/hostparm.ads ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads \
-   ada/switch.ads ada/switch.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/switch.ads ada/switch.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
-ada/system.o : ada/system.ads 
+ada/system.o : ada/system.ads
 
 ada/table.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads ada/debug.ads \
    ada/hostparm.ads ada/opt.ads ada/output.ads ada/system.ads \
    ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-stalib.ads \
    ada/s-string.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
    ada/table.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads 
+   ada/unchdeal.ads
 
 ada/targparm.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/csets.ads ada/debug.ads \
    ada/hostparm.ads ada/interfac.ads ada/namet.ads ada/namet.adb \
    ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \
-   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/targparm.adb ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/widechar.ads 
+   ada/s-exctab.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
+   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/targparm.adb \
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/widechar.ads
 
 ada/tbuild.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4327,15 +4289,14 @@ ada/tbuild.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/namet.adb ada/nlists.ads ada/nmake.ads ada/nmake.adb ada/opt.ads \
    ada/output.ads ada/restrict.ads ada/rident.ads ada/sem_aux.ads \
    ada/sinfo.ads ada/sinfo.adb ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads \
-   ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb \
-   ada/widechar.ads 
+   ada/stringt.ads ada/stringt.adb ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/types.ads \
+   ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads ada/urealp.adb ada/widechar.ads
 
 ada/tree_gen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4343,13 +4304,13 @@ ada/tree_gen.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/hostparm.ads ada/lib.ads ada/namet.ads ada/nlists.ads ada/opt.ads \
    ada/osint.ads ada/osint-c.ads ada/output.ads ada/repinfo.ads \
    ada/sem_aux.ads ada/sinfo.ads ada/sinput.ads ada/snames.ads \
-   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
-   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
-   ada/table.adb ada/tree_gen.ads ada/tree_gen.adb ada/tree_in.ads \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
+   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
+   ada/tree_gen.ads ada/tree_gen.adb ada/tree_in.ads ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
 ada/tree_in.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4357,12 +4318,12 @@ ada/tree_in.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/fname.ads ada/hostparm.ads ada/lib.ads ada/namet.ads ada/nlists.ads \
    ada/opt.ads ada/output.ads ada/repinfo.ads ada/sem_aux.ads \
    ada/sinfo.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_in.ads ada/tree_in.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_in.ads ada/tree_in.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/urealp.ads
 
 ada/tree_io.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/debug.ads ada/hostparm.ads ada/output.ads \
@@ -4370,7 +4331,7 @@ ada/tree_io.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/s-os_lib.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
    ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
    ada/s-traent.ads ada/s-unstyp.ads ada/tree_io.ads ada/tree_io.adb \
-   ada/types.ads ada/unchconv.ads ada/unchdeal.ads 
+   ada/types.ads ada/unchconv.ads ada/unchdeal.ads
 
 ada/treepr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4381,51 +4342,49 @@ ada/treepr.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads ada/output.adb \
    ada/scans.ads ada/scil_ll.ads ada/sem_mech.ads ada/sinfo.ads \
    ada/sinfo.adb ada/sinput.ads ada/sinput.adb ada/snames.ads \
-   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-assert.ads \
-   ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads \
-   ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/treepr.ads \
-   ada/treepr.adb ada/treeprs.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/uname.ads ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/stand.ads ada/stringt.ads ada/system.ads ada/s-exctab.ads \
+   ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-secsta.ads ada/s-soflin.ads ada/s-stache.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/treepr.ads ada/treepr.adb \
+   ada/treeprs.ads ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
 
 ada/treeprs.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/namet.ads ada/opt.ads ada/output.ads ada/sinfo.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/treeprs.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/treeprs.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/ttypes.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/einfo.ads \
    ada/get_targ.ads ada/hostparm.ads ada/namet.ads ada/opt.ads \
    ada/output.ads ada/set_targ.ads ada/snames.ads ada/system.ads \
-   ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
-   ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/ttypes.ads ada/types.ads ada/uintp.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
+   ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
+   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/ttypes.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
+   ada/unchdeal.ads ada/urealp.ads
 
 ada/types.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads ada/system.ads \
-   ada/s-assert.ads ada/s-carun8.ads ada/s-exctab.ads ada/s-exctab.adb \
-   ada/s-htable.ads ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads \
-   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads \
-   ada/s-unstyp.ads ada/types.ads ada/types.adb ada/unchconv.ads \
-   ada/unchdeal.ads 
+   ada/s-carun8.ads ada/s-exctab.ads ada/s-exctab.adb ada/s-htable.ads \
+   ada/s-parame.ads ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads \
+   ada/s-stoele.ads ada/s-stoele.adb ada/s-traent.ads ada/s-unstyp.ads \
+   ada/types.ads ada/types.adb ada/unchconv.ads ada/unchdeal.ads
 
 ada/uintp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
    ada/g-htable.ads ada/hostparm.ads ada/opt.ads ada/output.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-htable.adb ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-stalib.ads ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
-   ada/unchconv.ads ada/unchdeal.ads 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-htable.adb \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
+   ada/s-strhas.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/uintp.adb ada/unchconv.ads \
+   ada/unchdeal.ads
 
 ada/uname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
@@ -4435,49 +4394,48 @@ ada/uname.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/lib-sort.adb ada/namet.ads ada/nlists.ads ada/nlists.adb \
    ada/opt.ads ada/output.ads ada/scans.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.ads ada/sinput.adb ada/snames.ads ada/stand.ads \
-   ada/stringt.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads \
-   ada/s-secsta.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uname.ads ada/uname.adb ada/unchconv.ads ada/unchdeal.ads \
-   ada/urealp.ads ada/widechar.ads 
+   ada/stringt.ads ada/system.ads ada/s-exctab.ads ada/s-imenne.ads \
+   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-secsta.ads \
+   ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uname.ads \
+   ada/uname.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
+   ada/widechar.ads
 
 ada/urealp.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/gnat.ads \
    ada/g-htable.ads ada/hostparm.ads ada/opt.ads ada/output.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-htable.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads \
-   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
-   ada/table.ads ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads \
-   ada/uintp.adb ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads \
-   ada/urealp.adb 
+   ada/system.ads ada/s-exctab.ads ada/s-htable.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-stalib.ads ada/s-string.ads \
+   ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads \
+   ada/table.adb ada/tree_io.ads ada/types.ads ada/uintp.ads ada/uintp.adb \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/urealp.adb
 
 ada/usage.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/hostparm.ads \
    ada/namet.ads ada/opt.ads ada/osint.ads ada/output.ads ada/rident.ads \
-   ada/system.ads ada/s-assert.ads ada/s-exctab.ads ada/s-memory.ads \
-   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
-   ada/s-stoele.ads ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads \
-   ada/s-unstyp.ads ada/s-wchcon.ads ada/table.ads ada/table.adb \
-   ada/targparm.ads ada/tree_io.ads ada/types.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/usage.ads ada/usage.adb 
+   ada/system.ads ada/s-exctab.ads ada/s-memory.ads ada/s-os_lib.ads \
+   ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads ada/s-stoele.ads \
+   ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
+   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
+   ada/tree_io.ads ada/types.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/usage.ads ada/usage.adb
 
 ada/validsw.o : ada/ada.ads ada/a-unccon.ads ada/a-uncdea.ads \
    ada/hostparm.ads ada/opt.ads ada/system.ads ada/s-exctab.ads \
    ada/s-stalib.ads ada/s-string.ads ada/s-unstyp.ads ada/s-wchcon.ads \
    ada/types.ads ada/unchconv.ads ada/unchdeal.ads ada/validsw.ads \
-   ada/validsw.adb 
+   ada/validsw.adb
 
 ada/warnsw.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/debug.ads ada/err_vars.ads \
    ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
-   ada/rident.ads ada/system.ads ada/s-assert.ads ada/s-exctab.ads \
-   ada/s-memory.ads ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads \
-   ada/s-stalib.ads ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \
-   ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \
-   ada/tree_io.ads ada/types.ads ada/uintp.ads ada/unchconv.ads \
-   ada/unchdeal.ads ada/warnsw.ads ada/warnsw.adb 
+   ada/rident.ads ada/system.ads ada/s-exctab.ads ada/s-memory.ads \
+   ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-stalib.ads \
+   ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
+   ada/table.ads ada/table.adb ada/targparm.ads ada/tree_io.ads \
+   ada/types.ads ada/uintp.ads ada/unchconv.ads ada/unchdeal.ads \
+   ada/warnsw.ads ada/warnsw.adb
 
 ada/widechar.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/hostparm.ads ada/interfac.ads ada/opt.ads \
@@ -4485,6 +4443,6 @@ ada/widechar.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
    ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcnv.ads \
    ada/s-wchcnv.adb ada/s-wchcon.ads ada/s-wchjis.ads ada/types.ads \
-   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads ada/widechar.adb 
+   ada/unchconv.ads ada/unchdeal.ads ada/widechar.ads ada/widechar.adb
 
 # end of regular dependencies
diff --git a/gcc/ada/get_alfa.adb b/gcc/ada/get_alfa.adb
deleted file mode 100644 (file)
index a10637c..0000000
+++ /dev/null
@@ -1,499 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                             G E T _ A L F A                              --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---          Copyright (C) 2011-2012, 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
-with Alfa;  use Alfa;
-with Types; use Types;
-
-with Ada.IO_Exceptions; use Ada.IO_Exceptions;
-
-procedure Get_Alfa is
-   C : Character;
-
-   use ASCII;
-   --  For CR/LF
-
-   Cur_File : Nat;
-   --  Dependency number for the current file
-
-   Cur_Scope : Nat;
-   --  Scope number for the current scope entity
-
-   Cur_File_Idx : File_Index;
-   --  Index in Alfa_File_Table of the current file
-
-   Cur_Scope_Idx : Scope_Index;
-   --  Index in Alfa_Scope_Table of the current scope
-
-   Name_Str : String (1 .. 32768);
-   Name_Len : Natural := 0;
-   --  Local string used to store name of File/entity scanned as
-   --  Name_Str (1 .. Name_Len).
-
-   File_Name : String_Ptr;
-   Unit_File_Name : String_Ptr;
-
-   -----------------------
-   -- Local Subprograms --
-   -----------------------
-
-   function At_EOL return Boolean;
-   --  Skips any spaces, then checks if at the end of a line. If so, returns
-   --  True (but does not skip the EOL sequence). If not, then returns False.
-
-   procedure Check (C : Character);
-   --  Checks that file is positioned at given character, and if so skips past
-   --  it, If not, raises Data_Error.
-
-   function Get_Nat return Nat;
-   --  On entry the file is positioned to a digit. On return, the file is
-   --  positioned past the last digit, and the returned result is the decimal
-   --  value read. Data_Error is raised for overflow (value greater than
-   --  Int'Last), or if the initial character is not a digit.
-
-   procedure Get_Name;
-   --  On entry the file is positioned to a name. On return, the file is
-   --  positioned past the last character, and the name scanned is returned
-   --  in Name_Str (1 .. Name_Len).
-
-   procedure Skip_EOL;
-   --  Called with the current character about to be read being LF or CR. Skips
-   --  past CR/LF characters until either a non-CR/LF character is found, or
-   --  the end of file is encountered.
-
-   procedure Skip_Spaces;
-   --  Skips zero or more spaces at the current position, leaving the file
-   --  positioned at the first non-blank character (or Types.EOF).
-
-   ------------
-   -- At_EOL --
-   ------------
-
-   function At_EOL return Boolean is
-   begin
-      Skip_Spaces;
-      return Nextc = CR or else Nextc = LF;
-   end At_EOL;
-
-   -----------
-   -- Check --
-   -----------
-
-   procedure Check (C : Character) is
-   begin
-      if Nextc = C then
-         Skipc;
-      else
-         raise Data_Error;
-      end if;
-   end Check;
-
-   -------------
-   -- Get_Nat --
-   -------------
-
-   function Get_Nat return Nat is
-      Val : Nat;
-      C   : Character;
-
-   begin
-      C := Nextc;
-      Val := 0;
-
-      if C not in '0' .. '9' then
-         raise Data_Error;
-      end if;
-
-      --  Loop to read digits of integer value
-
-      loop
-         declare
-            pragma Unsuppress (Overflow_Check);
-         begin
-            Val := Val * 10 + (Character'Pos (C) - Character'Pos ('0'));
-         end;
-
-         Skipc;
-         C := Nextc;
-
-         exit when C not in '0' .. '9';
-      end loop;
-
-      return Val;
-
-   exception
-      when Constraint_Error =>
-         raise Data_Error;
-   end Get_Nat;
-
-   --------------
-   -- Get_Name --
-   --------------
-
-   procedure Get_Name is
-      N : Integer;
-
-   begin
-      N := 0;
-      while Nextc > ' ' loop
-         N := N + 1;
-         Name_Str (N) := Getc;
-      end loop;
-
-      Name_Len := N;
-   end Get_Name;
-
-   --------------
-   -- Skip_EOL --
-   --------------
-
-   procedure Skip_EOL is
-      C : Character;
-
-   begin
-      loop
-         Skipc;
-         C := Nextc;
-         exit when C /= LF and then C /= CR;
-
-         if C = ' ' then
-            Skip_Spaces;
-            C := Nextc;
-            exit when C /= LF and then C /= CR;
-         end if;
-      end loop;
-   end Skip_EOL;
-
-   -----------------
-   -- Skip_Spaces --
-   -----------------
-
-   procedure Skip_Spaces is
-   begin
-      while Nextc = ' ' loop
-         Skipc;
-      end loop;
-   end Skip_Spaces;
-
---  Start of processing for Get_Alfa
-
-begin
-   Initialize_Alfa_Tables;
-
-   Cur_File      := 0;
-   Cur_Scope     := 0;
-   Cur_File_Idx  := 1;
-   Cur_Scope_Idx := 0;
-
-   --  Loop through lines of Alfa information
-
-   while Nextc = 'F' loop
-      Skipc;
-
-      C := Getc;
-
-      --  Make sure first line is a File line
-
-      if Alfa_File_Table.Last = 0 and then C /= 'D' then
-         raise Data_Error;
-      end if;
-
-      --  Otherwise dispatch on type of line
-
-      case C is
-
-         --  Header entry for scope section
-
-         when 'D' =>
-
-            --  Complete previous entry if any
-
-            if Alfa_File_Table.Last /= 0 then
-               Alfa_File_Table.Table (Alfa_File_Table.Last).To_Scope :=
-                 Alfa_Scope_Table.Last;
-            end if;
-
-            --  Scan out dependency number and file name
-
-            Skip_Spaces;
-            Cur_File := Get_Nat;
-            Skip_Spaces;
-
-            Get_Name;
-            File_Name := new String'(Name_Str (1 .. Name_Len));
-            Skip_Spaces;
-
-            --  Scan out unit file name when present (for subunits)
-
-            if Nextc = '-' then
-               Skipc;
-               Check ('>');
-               Skip_Spaces;
-               Get_Name;
-               Unit_File_Name := new String'(Name_Str (1 .. Name_Len));
-
-            else
-               Unit_File_Name := null;
-            end if;
-
-            --  Make new File table entry (will fill in To_Scope later)
-
-            Alfa_File_Table.Append (
-              (File_Name      => File_Name,
-               Unit_File_Name => Unit_File_Name,
-               File_Num       => Cur_File,
-               From_Scope     => Alfa_Scope_Table.Last + 1,
-               To_Scope       => 0));
-
-            --  Initialize counter for scopes
-
-            Cur_Scope := 1;
-
-         --  Scope entry
-
-         when 'S' =>
-            declare
-               Spec_File  : Nat;
-               Spec_Scope : Nat;
-               Scope      : Nat;
-               Line       : Nat;
-               Col        : Nat;
-               Typ        : Character;
-
-            begin
-               --  Scan out location
-
-               Skip_Spaces;
-               Check ('.');
-               Scope := Get_Nat;
-               Check (' ');
-               Line  := Get_Nat;
-               Typ   := Getc;
-               Col   := Get_Nat;
-
-               pragma Assert (Scope = Cur_Scope);
-               pragma Assert         (Typ = 'K'
-                              or else Typ = 'V'
-                              or else Typ = 'U');
-
-               --  Scan out scope entity name
-
-               Skip_Spaces;
-               Get_Name;
-               Skip_Spaces;
-
-               if Nextc = '-' then
-                  Skipc;
-                  Check ('>');
-                  Skip_Spaces;
-                  Spec_File := Get_Nat;
-                  Check ('.');
-                  Spec_Scope := Get_Nat;
-
-               else
-                  Spec_File  := 0;
-                  Spec_Scope := 0;
-               end if;
-
-               --  Make new scope table entry (will fill in From_Xref and
-               --  To_Xref later). Initial range (From_Xref .. To_Xref) is
-               --  empty for scopes without entities.
-
-               Alfa_Scope_Table.Append (
-                 (Scope_Entity   => Empty,
-                  Scope_Name     => new String'(Name_Str (1 .. Name_Len)),
-                  File_Num       => Cur_File,
-                  Scope_Num      => Cur_Scope,
-                  Spec_File_Num  => Spec_File,
-                  Spec_Scope_Num => Spec_Scope,
-                  Line           => Line,
-                  Stype          => Typ,
-                  Col            => Col,
-                  From_Xref      => 1,
-                  To_Xref        => 0));
-            end;
-
-            --  Update counter for scopes
-
-            Cur_Scope := Cur_Scope + 1;
-
-         --  Header entry for cross-ref section
-
-         when 'X' =>
-
-            --  Scan out dependency number and file name (ignored)
-
-            Skip_Spaces;
-            Cur_File := Get_Nat;
-            Skip_Spaces;
-            Get_Name;
-
-            --  Update component From_Xref of current file if first reference
-            --  in this file.
-
-            while Alfa_File_Table.Table (Cur_File_Idx).File_Num /= Cur_File
-            loop
-               Cur_File_Idx := Cur_File_Idx + 1;
-            end loop;
-
-            --  Scan out scope entity number and entity name (ignored)
-
-            Skip_Spaces;
-            Check ('.');
-            Cur_Scope := Get_Nat;
-            Skip_Spaces;
-            Get_Name;
-
-            --  Update component To_Xref of previous scope
-
-            if Cur_Scope_Idx /= 0 then
-               Alfa_Scope_Table.Table (Cur_Scope_Idx).To_Xref :=
-                 Alfa_Xref_Table.Last;
-            end if;
-
-            --  Update component From_Xref of current scope
-
-            Cur_Scope_Idx := Alfa_File_Table.Table (Cur_File_Idx).From_Scope;
-
-            while Alfa_Scope_Table.Table (Cur_Scope_Idx).Scope_Num /= Cur_Scope
-            loop
-               Cur_Scope_Idx := Cur_Scope_Idx + 1;
-            end loop;
-
-            Alfa_Scope_Table.Table (Cur_Scope_Idx).From_Xref :=
-              Alfa_Xref_Table.Last + 1;
-
-         --  Cross reference entry
-
-         when ' ' =>
-            declare
-               XR_Entity      : String_Ptr;
-               XR_Entity_Line : Nat;
-               XR_Entity_Col  : Nat;
-               XR_Entity_Typ  : Character;
-
-               XR_File : Nat;
-               --  Keeps track of the current file (changed by nn|)
-
-               XR_Scope : Nat;
-               --  Keeps track of the current scope (changed by nn:)
-
-            begin
-               XR_File  := Cur_File;
-               XR_Scope := Cur_Scope;
-
-               XR_Entity_Line := Get_Nat;
-               XR_Entity_Typ  := Getc;
-               XR_Entity_Col  := Get_Nat;
-
-               Skip_Spaces;
-               Get_Name;
-               XR_Entity := new String'(Name_Str (1 .. Name_Len));
-
-               --  Initialize to scan items on one line
-
-               Skip_Spaces;
-
-               --  Loop through cross-references for this entity
-
-               loop
-
-                  declare
-                     Line  : Nat;
-                     Col   : Nat;
-                     N     : Nat;
-                     Rtype : Character;
-
-                  begin
-                     Skip_Spaces;
-
-                     if At_EOL then
-                        Skip_EOL;
-                        exit when Nextc /= '.';
-                        Skipc;
-                        Skip_Spaces;
-                     end if;
-
-                     if Nextc = '.' then
-                        Skipc;
-                        XR_Scope := Get_Nat;
-                        Check (':');
-
-                     else
-                        N := Get_Nat;
-
-                        if Nextc = '|' then
-                           XR_File := N;
-                           Skipc;
-
-                        else
-                           Line  := N;
-                           Rtype := Getc;
-                           Col   := Get_Nat;
-
-                           pragma Assert
-                             (Rtype = 'r' or else
-                              Rtype = 'm' or else
-                              Rtype = 's');
-
-                           Alfa_Xref_Table.Append (
-                             (Entity_Name => XR_Entity,
-                              Entity_Line => XR_Entity_Line,
-                              Etype       => XR_Entity_Typ,
-                              Entity_Col  => XR_Entity_Col,
-                              File_Num    => XR_File,
-                              Scope_Num   => XR_Scope,
-                              Line        => Line,
-                              Rtype       => Rtype,
-                              Col         => Col));
-                        end if;
-                     end if;
-                  end;
-               end loop;
-            end;
-
-         --  No other Alfa lines are possible
-
-         when others =>
-            raise Data_Error;
-      end case;
-
-      --  For cross reference lines, the EOL character has been skipped already
-
-      if C /= ' ' then
-         Skip_EOL;
-      end if;
-   end loop;
-
-   --  Here with all Xrefs stored, complete last entries in File/Scope tables
-
-   if Alfa_File_Table.Last /= 0 then
-      Alfa_File_Table.Table (Alfa_File_Table.Last).To_Scope :=
-        Alfa_Scope_Table.Last;
-   end if;
-
-   if Cur_Scope_Idx /= 0 then
-      Alfa_Scope_Table.Table (Cur_Scope_Idx).To_Xref := Alfa_Xref_Table.Last;
-   end if;
-end Get_Alfa;
diff --git a/gcc/ada/get_alfa.ads b/gcc/ada/get_alfa.ads
deleted file mode 100644 (file)
index e8c6a17..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                             G E T _ A L F A                              --
---                                                                          --
---                                 S p e c                                  --
---                                                                          --
---             Copyright (C) 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
---  This package contains the function used to read Alfa information from an
---  ALI file and populate the tables defined in package Alfa with the result.
-
-generic
-   --  These subprograms provide access to the ALI file. Locating, opening and
-   --  providing access to the ALI file is the callers' responsibility.
-
-   with function Getc return Character is <>;
-   --  Get next character, positioning the ALI file ready to read the following
-   --  character (equivalent to calling Nextc, then Skipc). If the end of file
-   --  is encountered, the value Types.EOF is returned.
-
-   with function Nextc return Character is <>;
-   --  Look at the next character, and return it, leaving the position of the
-   --  file unchanged, so that a subsequent call to Getc or Nextc will return
-   --  this same character. If the file is positioned at the end of file, then
-   --  Types.EOF is returned.
-
-   with procedure Skipc is <>;
-   --  Skip past the current character (which typically was read with Nextc),
-   --  and position to the next character, which will be returned by the next
-   --  call to Getc or Nextc.
-
-procedure Get_Alfa;
---  Load Alfa information from ALI file text format into internal Alfa tables
---  (Alfa.Alfa_Xref_Table, Alfa.Alfa_Scope_Table and Alfa.Alfa_File_Table). On
---  entry the input file is positioned to the initial 'F' of the first Alfa
---  line in the ALI file. On return, the file is positioned either to the end
---  of file, or to the first character of the line following the Alfa
---  information (which will never start with an 'F').
---
---  If a format error is detected in the input, then an exception is raised
---  (Ada.IO_Exceptions.Data_Error), with the file positioned to the error.
diff --git a/gcc/ada/get_spark_xrefs.adb b/gcc/ada/get_spark_xrefs.adb
new file mode 100644 (file)
index 0000000..92964b3
--- /dev/null
@@ -0,0 +1,500 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                       G E T _ S P A R K _ X R E F S                      --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with SPARK_Xrefs; use SPARK_Xrefs;
+with Types;       use Types;
+
+with Ada.IO_Exceptions; use Ada.IO_Exceptions;
+
+procedure Get_SPARK_Xrefs is
+   C : Character;
+
+   use ASCII;
+   --  For CR/LF
+
+   Cur_File : Nat;
+   --  Dependency number for the current file
+
+   Cur_Scope : Nat;
+   --  Scope number for the current scope entity
+
+   Cur_File_Idx : File_Index;
+   --  Index in SPARK_File_Table of the current file
+
+   Cur_Scope_Idx : Scope_Index;
+   --  Index in SPARK_Scope_Table of the current scope
+
+   Name_Str : String (1 .. 32768);
+   Name_Len : Natural := 0;
+   --  Local string used to store name of File/entity scanned as
+   --  Name_Str (1 .. Name_Len).
+
+   File_Name : String_Ptr;
+   Unit_File_Name : String_Ptr;
+
+   -----------------------
+   -- Local Subprograms --
+   -----------------------
+
+   function At_EOL return Boolean;
+   --  Skips any spaces, then checks if at the end of a line. If so, returns
+   --  True (but does not skip the EOL sequence). If not, then returns False.
+
+   procedure Check (C : Character);
+   --  Checks that file is positioned at given character, and if so skips past
+   --  it, If not, raises Data_Error.
+
+   function Get_Nat return Nat;
+   --  On entry the file is positioned to a digit. On return, the file is
+   --  positioned past the last digit, and the returned result is the decimal
+   --  value read. Data_Error is raised for overflow (value greater than
+   --  Int'Last), or if the initial character is not a digit.
+
+   procedure Get_Name;
+   --  On entry the file is positioned to a name. On return, the file is
+   --  positioned past the last character, and the name scanned is returned
+   --  in Name_Str (1 .. Name_Len).
+
+   procedure Skip_EOL;
+   --  Called with the current character about to be read being LF or CR. Skips
+   --  past CR/LF characters until either a non-CR/LF character is found, or
+   --  the end of file is encountered.
+
+   procedure Skip_Spaces;
+   --  Skips zero or more spaces at the current position, leaving the file
+   --  positioned at the first non-blank character (or Types.EOF).
+
+   ------------
+   -- At_EOL --
+   ------------
+
+   function At_EOL return Boolean is
+   begin
+      Skip_Spaces;
+      return Nextc = CR or else Nextc = LF;
+   end At_EOL;
+
+   -----------
+   -- Check --
+   -----------
+
+   procedure Check (C : Character) is
+   begin
+      if Nextc = C then
+         Skipc;
+      else
+         raise Data_Error;
+      end if;
+   end Check;
+
+   -------------
+   -- Get_Nat --
+   -------------
+
+   function Get_Nat return Nat is
+      Val : Nat;
+      C   : Character;
+
+   begin
+      C := Nextc;
+      Val := 0;
+
+      if C not in '0' .. '9' then
+         raise Data_Error;
+      end if;
+
+      --  Loop to read digits of integer value
+
+      loop
+         declare
+            pragma Unsuppress (Overflow_Check);
+         begin
+            Val := Val * 10 + (Character'Pos (C) - Character'Pos ('0'));
+         end;
+
+         Skipc;
+         C := Nextc;
+
+         exit when C not in '0' .. '9';
+      end loop;
+
+      return Val;
+
+   exception
+      when Constraint_Error =>
+         raise Data_Error;
+   end Get_Nat;
+
+   --------------
+   -- Get_Name --
+   --------------
+
+   procedure Get_Name is
+      N : Integer;
+
+   begin
+      N := 0;
+      while Nextc > ' ' loop
+         N := N + 1;
+         Name_Str (N) := Getc;
+      end loop;
+
+      Name_Len := N;
+   end Get_Name;
+
+   --------------
+   -- Skip_EOL --
+   --------------
+
+   procedure Skip_EOL is
+      C : Character;
+
+   begin
+      loop
+         Skipc;
+         C := Nextc;
+         exit when C /= LF and then C /= CR;
+
+         if C = ' ' then
+            Skip_Spaces;
+            C := Nextc;
+            exit when C /= LF and then C /= CR;
+         end if;
+      end loop;
+   end Skip_EOL;
+
+   -----------------
+   -- Skip_Spaces --
+   -----------------
+
+   procedure Skip_Spaces is
+   begin
+      while Nextc = ' ' loop
+         Skipc;
+      end loop;
+   end Skip_Spaces;
+
+--  Start of processing for Get_SPARK_Xrefs
+
+begin
+   Initialize_SPARK_Tables;
+
+   Cur_File      := 0;
+   Cur_Scope     := 0;
+   Cur_File_Idx  := 1;
+   Cur_Scope_Idx := 0;
+
+   --  Loop through lines of SPARK cross-reference information
+
+   while Nextc = 'F' loop
+      Skipc;
+
+      C := Getc;
+
+      --  Make sure first line is a File line
+
+      if SPARK_File_Table.Last = 0 and then C /= 'D' then
+         raise Data_Error;
+      end if;
+
+      --  Otherwise dispatch on type of line
+
+      case C is
+
+         --  Header entry for scope section
+
+         when 'D' =>
+
+            --  Complete previous entry if any
+
+            if SPARK_File_Table.Last /= 0 then
+               SPARK_File_Table.Table (SPARK_File_Table.Last).To_Scope :=
+                 SPARK_Scope_Table.Last;
+            end if;
+
+            --  Scan out dependency number and file name
+
+            Skip_Spaces;
+            Cur_File := Get_Nat;
+            Skip_Spaces;
+
+            Get_Name;
+            File_Name := new String'(Name_Str (1 .. Name_Len));
+            Skip_Spaces;
+
+            --  Scan out unit file name when present (for subunits)
+
+            if Nextc = '-' then
+               Skipc;
+               Check ('>');
+               Skip_Spaces;
+               Get_Name;
+               Unit_File_Name := new String'(Name_Str (1 .. Name_Len));
+
+            else
+               Unit_File_Name := null;
+            end if;
+
+            --  Make new File table entry (will fill in To_Scope later)
+
+            SPARK_File_Table.Append (
+              (File_Name      => File_Name,
+               Unit_File_Name => Unit_File_Name,
+               File_Num       => Cur_File,
+               From_Scope     => SPARK_Scope_Table.Last + 1,
+               To_Scope       => 0));
+
+            --  Initialize counter for scopes
+
+            Cur_Scope := 1;
+
+         --  Scope entry
+
+         when 'S' =>
+            declare
+               Spec_File  : Nat;
+               Spec_Scope : Nat;
+               Scope      : Nat;
+               Line       : Nat;
+               Col        : Nat;
+               Typ        : Character;
+
+            begin
+               --  Scan out location
+
+               Skip_Spaces;
+               Check ('.');
+               Scope := Get_Nat;
+               Check (' ');
+               Line  := Get_Nat;
+               Typ   := Getc;
+               Col   := Get_Nat;
+
+               pragma Assert (Scope = Cur_Scope);
+               pragma Assert         (Typ = 'K'
+                              or else Typ = 'V'
+                              or else Typ = 'U');
+
+               --  Scan out scope entity name
+
+               Skip_Spaces;
+               Get_Name;
+               Skip_Spaces;
+
+               if Nextc = '-' then
+                  Skipc;
+                  Check ('>');
+                  Skip_Spaces;
+                  Spec_File := Get_Nat;
+                  Check ('.');
+                  Spec_Scope := Get_Nat;
+
+               else
+                  Spec_File  := 0;
+                  Spec_Scope := 0;
+               end if;
+
+               --  Make new scope table entry (will fill in From_Xref and
+               --  To_Xref later). Initial range (From_Xref .. To_Xref) is
+               --  empty for scopes without entities.
+
+               SPARK_Scope_Table.Append (
+                 (Scope_Entity   => Empty,
+                  Scope_Name     => new String'(Name_Str (1 .. Name_Len)),
+                  File_Num       => Cur_File,
+                  Scope_Num      => Cur_Scope,
+                  Spec_File_Num  => Spec_File,
+                  Spec_Scope_Num => Spec_Scope,
+                  Line           => Line,
+                  Stype          => Typ,
+                  Col            => Col,
+                  From_Xref      => 1,
+                  To_Xref        => 0));
+            end;
+
+            --  Update counter for scopes
+
+            Cur_Scope := Cur_Scope + 1;
+
+         --  Header entry for cross-ref section
+
+         when 'X' =>
+
+            --  Scan out dependency number and file name (ignored)
+
+            Skip_Spaces;
+            Cur_File := Get_Nat;
+            Skip_Spaces;
+            Get_Name;
+
+            --  Update component From_Xref of current file if first reference
+            --  in this file.
+
+            while SPARK_File_Table.Table (Cur_File_Idx).File_Num /= Cur_File
+            loop
+               Cur_File_Idx := Cur_File_Idx + 1;
+            end loop;
+
+            --  Scan out scope entity number and entity name (ignored)
+
+            Skip_Spaces;
+            Check ('.');
+            Cur_Scope := Get_Nat;
+            Skip_Spaces;
+            Get_Name;
+
+            --  Update component To_Xref of previous scope
+
+            if Cur_Scope_Idx /= 0 then
+               SPARK_Scope_Table.Table (Cur_Scope_Idx).To_Xref :=
+                 SPARK_Xref_Table.Last;
+            end if;
+
+            --  Update component From_Xref of current scope
+
+            Cur_Scope_Idx := SPARK_File_Table.Table (Cur_File_Idx).From_Scope;
+
+            while SPARK_Scope_Table.Table (Cur_Scope_Idx).Scope_Num /=
+              Cur_Scope
+            loop
+               Cur_Scope_Idx := Cur_Scope_Idx + 1;
+            end loop;
+
+            SPARK_Scope_Table.Table (Cur_Scope_Idx).From_Xref :=
+              SPARK_Xref_Table.Last + 1;
+
+         --  Cross reference entry
+
+         when ' ' =>
+            declare
+               XR_Entity      : String_Ptr;
+               XR_Entity_Line : Nat;
+               XR_Entity_Col  : Nat;
+               XR_Entity_Typ  : Character;
+
+               XR_File : Nat;
+               --  Keeps track of the current file (changed by nn|)
+
+               XR_Scope : Nat;
+               --  Keeps track of the current scope (changed by nn:)
+
+            begin
+               XR_File  := Cur_File;
+               XR_Scope := Cur_Scope;
+
+               XR_Entity_Line := Get_Nat;
+               XR_Entity_Typ  := Getc;
+               XR_Entity_Col  := Get_Nat;
+
+               Skip_Spaces;
+               Get_Name;
+               XR_Entity := new String'(Name_Str (1 .. Name_Len));
+
+               --  Initialize to scan items on one line
+
+               Skip_Spaces;
+
+               --  Loop through cross-references for this entity
+
+               loop
+
+                  declare
+                     Line  : Nat;
+                     Col   : Nat;
+                     N     : Nat;
+                     Rtype : Character;
+
+                  begin
+                     Skip_Spaces;
+
+                     if At_EOL then
+                        Skip_EOL;
+                        exit when Nextc /= '.';
+                        Skipc;
+                        Skip_Spaces;
+                     end if;
+
+                     if Nextc = '.' then
+                        Skipc;
+                        XR_Scope := Get_Nat;
+                        Check (':');
+
+                     else
+                        N := Get_Nat;
+
+                        if Nextc = '|' then
+                           XR_File := N;
+                           Skipc;
+
+                        else
+                           Line  := N;
+                           Rtype := Getc;
+                           Col   := Get_Nat;
+
+                           pragma Assert
+                             (Rtype = 'r' or else
+                              Rtype = 'm' or else
+                              Rtype = 's');
+
+                           SPARK_Xref_Table.Append (
+                             (Entity_Name => XR_Entity,
+                              Entity_Line => XR_Entity_Line,
+                              Etype       => XR_Entity_Typ,
+                              Entity_Col  => XR_Entity_Col,
+                              File_Num    => XR_File,
+                              Scope_Num   => XR_Scope,
+                              Line        => Line,
+                              Rtype       => Rtype,
+                              Col         => Col));
+                        end if;
+                     end if;
+                  end;
+               end loop;
+            end;
+
+         --  No other SPARK lines are possible
+
+         when others =>
+            raise Data_Error;
+      end case;
+
+      --  For cross reference lines, the EOL character has been skipped already
+
+      if C /= ' ' then
+         Skip_EOL;
+      end if;
+   end loop;
+
+   --  Here with all Xrefs stored, complete last entries in File/Scope tables
+
+   if SPARK_File_Table.Last /= 0 then
+      SPARK_File_Table.Table (SPARK_File_Table.Last).To_Scope :=
+        SPARK_Scope_Table.Last;
+   end if;
+
+   if Cur_Scope_Idx /= 0 then
+      SPARK_Scope_Table.Table (Cur_Scope_Idx).To_Xref := SPARK_Xref_Table.Last;
+   end if;
+end Get_SPARK_Xrefs;
diff --git a/gcc/ada/get_spark_xrefs.ads b/gcc/ada/get_spark_xrefs.ads
new file mode 100644 (file)
index 0000000..22af7ed
--- /dev/null
@@ -0,0 +1,60 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                       G E T _ S P A R K _ X R E F S                      --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This package contains the function used to read SPARK cross-reference
+--  information from an ALI file and populate the tables defined in package
+--  SPARK_Xrefs with the result.
+
+generic
+   --  These subprograms provide access to the ALI file. Locating, opening and
+   --  providing access to the ALI file is the callers' responsibility.
+
+   with function Getc return Character is <>;
+   --  Get next character, positioning the ALI file ready to read the following
+   --  character (equivalent to calling Nextc, then Skipc). If the end of file
+   --  is encountered, the value Types.EOF is returned.
+
+   with function Nextc return Character is <>;
+   --  Look at the next character, and return it, leaving the position of the
+   --  file unchanged, so that a subsequent call to Getc or Nextc will return
+   --  this same character. If the file is positioned at the end of file, then
+   --  Types.EOF is returned.
+
+   with procedure Skipc is <>;
+   --  Skip past the current character (which typically was read with Nextc),
+   --  and position to the next character, which will be returned by the next
+   --  call to Getc or Nextc.
+
+procedure Get_SPARK_Xrefs;
+--  Load SPARK cross-reference information from ALI file text format into
+--  internal SPARK tables (SPARK_Xrefs.SPARK_Xref_Table,
+--  SPARK_Xrefs.SPARK_Scope_Table and SPARK_Xrefs.SPARK_File_Table). On entry
+--  the input file is positioned to the initial 'F' of the first SPARK specific
+--  line in the ALI file. On return, the file is positioned either to the end
+--  of file, or to the first character of the line following the SPARK specific
+--  information (which will never start with an 'F').
+--
+--  If a format error is detected in the input, then an exception is raised
+--  (Ada.IO_Exceptions.Data_Error), with the file positioned to the error.
index 10ad1e907d31807c364034de3cd124559a720355..4f1dde72f34017b09ec4914c6af9e13cf7e88300 100644 (file)
@@ -292,20 +292,20 @@ procedure Gnat1drv is
          Formal_Extensions := True;
       end if;
 
-      --  Enable Alfa_Mode when using -gnatd.F switch
+      --  Enable SPARK_Mode when using -gnatd.F switch
 
       if Debug_Flag_Dot_FF then
-         Alfa_Mode := True;
+         SPARK_Mode := True;
       end if;
 
-      --  Alfa_Mode is also activated by default in the gnat2why executable
+      --  SPARK_Mode is also activated by default in the gnat2why executable
 
-      if Alfa_Mode then
+      if SPARK_Mode then
 
          --  Set strict standard interpretation of compiler permissions
 
          if Debug_Flag_Dot_DD then
-            Strict_Alfa_Mode := True;
+            SPARK_Strict_Mode := True;
          end if;
 
          --  Distinguish between the two modes of gnat2why: frame condition
@@ -334,7 +334,7 @@ procedure Gnat1drv is
 
          --  Enable some restrictions systematically to simplify the generated
          --  code (and ease analysis). Note that restriction checks are also
-         --  disabled in Alfa mode, see Restrict.Check_Restriction, and user
+         --  disabled in SPARK mode, see Restrict.Check_Restriction, and user
          --  specified Restrictions pragmas are ignored, see
          --  Sem_Prag.Process_Restrictions_Or_Restriction_Warnings.
 
@@ -346,7 +346,7 @@ procedure Gnat1drv is
          --  points at which potential checks are required semantically). We
          --  don't want the expansion associated with these checks, but that
          --  happens anyway because this expansion is simply not done in the
-         --  Alfa version of the expander.
+         --  SPARK version of the expander.
 
          --  Turn off dynamic elaboration checks: generates inconsistencies in
          --  trees between specs compiled as part of a main unit or as part of
@@ -378,7 +378,7 @@ procedure Gnat1drv is
          Polling_Required := False;
 
          --  Set operating mode to Generate_Code, but full front-end expansion
-         --  is not desirable in Alfa mode, so a light expansion is performed
+         --  is not desirable in SPARK mode, so a light expansion is performed
          --  instead.
 
          Operating_Mode := Generate_Code;
@@ -405,7 +405,7 @@ procedure Gnat1drv is
          Assertions_Enabled := True;
 
          --  Turn off style check options since we are not interested in any
-         --  front-end warnings when we are getting Alfa output.
+         --  front-end warnings when we are getting SPARK output.
 
          Reset_Style_Check_Options;
 
@@ -415,13 +415,13 @@ procedure Gnat1drv is
          Warning_Mode := Suppress;
 
          --  Suppress the generation of name tables for enumerations, which are
-         --  not needed for formal verification, and fall outside the Alfa
+         --  not needed for formal verification, and fall outside the SPARK
          --  subset (use of pointers).
 
          Global_Discard_Names := True;
 
          --  Suppress the expansion of tagged types and dispatching calls,
-         --  which lead to the generation of non-Alfa code (use of pointers),
+         --  which lead to the generation of non-SPARK code (use of pointers),
          --  which is more complex to formally verify than the original source.
 
          Tagged_Type_Expansion := False;
@@ -495,7 +495,7 @@ procedure Gnat1drv is
 
       --  Set proper status for overflow check mechanism
 
-      --  If already set (by -gnato or above in Alfa or CodePeer mode) then we
+      --  If already set (by -gnato or above in SPARK or CodePeer mode) then we
       --  have nothing to do.
 
       if Opt.Suppress_Options.Overflow_Mode_General /= Not_Set then
@@ -1062,12 +1062,12 @@ begin
       elsif CodePeer_Mode then
          Back_End_Mode := Generate_Object;
 
-      --  It is not an error to analyze in Alfa mode a spec which requires a
+      --  It is not an error to analyze in SPARK mode a spec which requires a
       --  body, when the body is not available. During frame condition
       --  generation, the corresponding ALI file is generated. During
       --  translation to Why, Why code is generated for the spec.
 
-      elsif Alfa_Mode then
+      elsif SPARK_Mode then
          if Frame_Condition_Mode then
             Back_End_Mode := Declarations_Only;
          else
index 12664ee376f850159dafb069c64207c4c00c13e7..e786f473add61909a3f0182d61ab307b068afc8b 100644 (file)
@@ -33,7 +33,6 @@ with Fname;    use Fname;
 with Fname.UF; use Fname.UF;
 with Lib.Util; use Lib.Util;
 with Lib.Xref; use Lib.Xref;
-               use Lib.Xref.Alfa;
 with Nlists;   use Nlists;
 with Gnatvsn;  use Gnatvsn;
 with Opt;      use Opt;
@@ -816,11 +815,11 @@ package body Lib.Writ is
                      Nkind (Unit (Cunit)) in N_Generic_Renaming_Declaration)
                     and then Generic_May_Lack_ALI (Fname))
 
-              --  In Alfa mode, always generate the dependencies on ALI
+              --  In SPARK mode, always generate the dependencies on ALI
               --  files, which are required to compute frame conditions
               --  of subprograms.
 
-              or else Alfa_Mode
+              or else SPARK_Mode
             then
                Write_Info_Tab (25);
 
@@ -1433,11 +1432,12 @@ package body Lib.Writ is
          SCO_Output;
       end if;
 
-      --  Output Alfa information if needed
+      --  Output SPARK cross-reference information if needed
 
-      if Opt.Xref_Active and then Alfa_Mode then
-         Collect_Alfa (Sdep_Table => Sdep_Table, Num_Sdep => Num_Sdep);
-         Output_Alfa;
+      if Opt.Xref_Active and then SPARK_Mode then
+         SPARK_Specific.Collect_SPARK_Xrefs (Sdep_Table => Sdep_Table,
+                                             Num_Sdep   => Num_Sdep);
+         SPARK_Specific.Output_SPARK_Xrefs;
       end if;
 
       --  Output final blank line and we are done. This final blank line is
index f6553571c22c5ee68326eb2dd99eec16e5c104f3..b631b2aa43a191f2a22857a9db2efd871589cf09 100644 (file)
@@ -811,12 +811,13 @@ package Lib.Writ is
    --  reference data. See the spec of Par_SCO in file par_sco.ads for full
    --  details of the format.
 
-   ----------------------
-   -- Alfa Information --
-   ----------------------
+   ---------------------------------------
+   -- SPARK Cross-Reference Information --
+   ---------------------------------------
 
-   --  The Alfa information follows the SCO information. See the spec of Alfa
-   --  in file alfa.ads for full details of the format.
+   --  The SPARK cross-reference information follows the SCO information. See
+   --  the spec of SPARK_Xrefs in file spark_xrefs.ads for full details of the
+   --  format.
 
    ----------------------
    -- Global Variables --
diff --git a/gcc/ada/lib-xref-alfa.adb b/gcc/ada/lib-xref-alfa.adb
deleted file mode 100644 (file)
index c9ab1e0..0000000
+++ /dev/null
@@ -1,1435 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                        L I B . X R E F . A L F A                         --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---          Copyright (C) 2011-2012, 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
-with Alfa;     use Alfa;
-with Einfo;    use Einfo;
-with Nmake;    use Nmake;
-with Put_Alfa;
-
-with GNAT.HTable;
-
-separate (Lib.Xref)
-package body Alfa is
-
-   ---------------------
-   -- Local Constants --
-   ---------------------
-
-   --  Table of Alfa_Entities, True for each entity kind used in Alfa
-
-   Alfa_Entities : constant array (Entity_Kind) of Boolean :=
-     (E_Constant         => True,
-      E_Function         => True,
-      E_In_Out_Parameter => True,
-      E_In_Parameter     => True,
-      E_Loop_Parameter   => True,
-      E_Operator         => True,
-      E_Out_Parameter    => True,
-      E_Procedure        => True,
-      E_Variable         => True,
-      others             => False);
-
-   --  True for each reference type used in Alfa
-
-   Alfa_References : constant array (Character) of Boolean :=
-     ('m' => True,
-      'r' => True,
-      's' => True,
-      others => False);
-
-   type Entity_Hashed_Range is range 0 .. 255;
-   --  Size of hash table headers
-
-   ---------------------
-   -- Local Variables --
-   ---------------------
-
-   Heap : Entity_Id := Empty;
-   --  A special entity which denotes the heap object
-
-   package Drefs is new Table.Table (
-     Table_Component_Type => Xref_Entry,
-     Table_Index_Type     => Xref_Entry_Number,
-     Table_Low_Bound      => 1,
-     Table_Initial        => Alloc.Drefs_Initial,
-     Table_Increment      => Alloc.Drefs_Increment,
-     Table_Name           => "Drefs");
-   --  Table of cross-references for reads and writes through explicit
-   --  dereferences, that are output as reads/writes to the special variable
-   --  "Heap". These references are added to the regular references when
-   --  computing Alfa cross-references.
-
-   -----------------------
-   -- Local Subprograms --
-   -----------------------
-
-   procedure Add_Alfa_File (Ubody, Uspec : Unit_Number_Type; Dspec : Nat);
-   --  Add file and corresponding scopes for unit to the tables Alfa_File_Table
-   --  and Alfa_Scope_Table. When two units are present for the same
-   --  compilation unit, as it happens for library-level instantiations of
-   --  generics, then Ubody /= Uspec, and all scopes are added to the same
-   --  Alfa file. Otherwise Ubody = Uspec.
-
-   procedure Add_Alfa_Scope (N : Node_Id);
-   --  Add scope N to the table Alfa_Scope_Table
-
-   procedure Add_Alfa_Xrefs;
-   --  Filter table Xrefs to add all references used in Alfa to the table
-   --  Alfa_Xref_Table.
-
-   procedure Detect_And_Add_Alfa_Scope (N : Node_Id);
-   --  Call Add_Alfa_Scope on scopes
-
-   function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range;
-   --  Hash function for hash table
-
-   procedure Traverse_Declarations_Or_Statements
-     (L            : List_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean);
-   procedure Traverse_Handled_Statement_Sequence
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean);
-   procedure Traverse_Package_Body
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean);
-   procedure Traverse_Package_Declaration
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean);
-   procedure Traverse_Subprogram_Body
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean);
-   --  Traverse corresponding construct, calling Process on all declarations
-
-   -------------------
-   -- Add_Alfa_File --
-   -------------------
-
-   procedure Add_Alfa_File (Ubody, Uspec : Unit_Number_Type; Dspec : Nat) is
-      File : constant Source_File_Index := Source_Index (Uspec);
-      From : Scope_Index;
-
-      File_Name      : String_Ptr;
-      Unit_File_Name : String_Ptr;
-
-   begin
-      --  Source file could be inexistant as a result of an error, if option
-      --  gnatQ is used.
-
-      if File = No_Source_File then
-         return;
-      end if;
-
-      From := Alfa_Scope_Table.Last + 1;
-
-      --  Unit might not have an associated compilation unit, as seen in code
-      --  filling Sdep_Table in Write_ALI.
-
-      if Present (Cunit (Ubody)) then
-         Traverse_Compilation_Unit
-           (CU           => Cunit (Ubody),
-            Process      => Detect_And_Add_Alfa_Scope'Access,
-            Inside_Stubs => False);
-      end if;
-
-      --  When two units are present for the same compilation unit, as it
-      --  happens for library-level instantiations of generics, then add all
-      --  scopes to the same Alfa file.
-
-      if Ubody /= Uspec then
-         if Present (Cunit (Uspec)) then
-            Traverse_Compilation_Unit
-              (CU           => Cunit (Uspec),
-               Process      => Detect_And_Add_Alfa_Scope'Access,
-               Inside_Stubs => False);
-         end if;
-      end if;
-
-      --  Update scope numbers
-
-      declare
-         Scope_Id : Int;
-      begin
-         Scope_Id := 1;
-         for Index in From .. Alfa_Scope_Table.Last loop
-            declare
-               S : Alfa_Scope_Record renames Alfa_Scope_Table.Table (Index);
-            begin
-               S.Scope_Num := Scope_Id;
-               S.File_Num  := Dspec;
-               Scope_Id    := Scope_Id + 1;
-            end;
-         end loop;
-      end;
-
-      --  Remove those scopes previously marked for removal
-
-      declare
-         Scope_Id : Scope_Index;
-
-      begin
-         Scope_Id := From;
-         for Index in From .. Alfa_Scope_Table.Last loop
-            declare
-               S : Alfa_Scope_Record renames Alfa_Scope_Table.Table (Index);
-            begin
-               if S.Scope_Num /= 0 then
-                  Alfa_Scope_Table.Table (Scope_Id) := S;
-                  Scope_Id := Scope_Id + 1;
-               end if;
-            end;
-         end loop;
-
-         Alfa_Scope_Table.Set_Last (Scope_Id - 1);
-      end;
-
-      --  Make entry for new file in file table
-
-      Get_Name_String (Reference_Name (File));
-      File_Name := new String'(Name_Buffer (1 .. Name_Len));
-
-      --  For subunits, also retrieve the file name of the unit. Only do so if
-      --  unit has an associated compilation unit.
-
-      if Present (Cunit (Uspec))
-        and then Present (Cunit (Unit (File)))
-        and then Nkind (Unit (Cunit (Unit (File)))) = N_Subunit
-      then
-         Get_Name_String (Reference_Name (Main_Source_File));
-         Unit_File_Name := new String'(Name_Buffer (1 .. Name_Len));
-      end if;
-
-      Alfa_File_Table.Append (
-        (File_Name      => File_Name,
-         Unit_File_Name => Unit_File_Name,
-         File_Num       => Dspec,
-         From_Scope     => From,
-         To_Scope       => Alfa_Scope_Table.Last));
-   end Add_Alfa_File;
-
-   --------------------
-   -- Add_Alfa_Scope --
-   --------------------
-
-   procedure Add_Alfa_Scope (N : Node_Id) is
-      E   : constant Entity_Id  := Defining_Entity (N);
-      Loc : constant Source_Ptr := Sloc (E);
-      Typ : Character;
-
-   begin
-      --  Ignore scopes without a proper location
-
-      if Sloc (N) = No_Location then
-         return;
-      end if;
-
-      case Ekind (E) is
-         when E_Function | E_Generic_Function =>
-            Typ := 'V';
-
-         when E_Procedure | E_Generic_Procedure =>
-            Typ := 'U';
-
-         when E_Subprogram_Body =>
-            declare
-               Spec : Node_Id;
-
-            begin
-               Spec := Parent (E);
-
-               if Nkind (Spec) = N_Defining_Program_Unit_Name then
-                  Spec := Parent (Spec);
-               end if;
-
-               if Nkind (Spec) = N_Function_Specification then
-                  Typ := 'V';
-               else
-                  pragma Assert
-                    (Nkind (Spec) = N_Procedure_Specification);
-                  Typ := 'U';
-               end if;
-            end;
-
-         when E_Package | E_Package_Body | E_Generic_Package =>
-            Typ := 'K';
-
-         when E_Void =>
-            --  Compilation of prj-attr.adb with -gnatn creates a node with
-            --  entity E_Void for the package defined at a-charac.ads16:13
-
-            --  ??? TBD
-
-            return;
-
-         when others =>
-            raise Program_Error;
-      end case;
-
-      --  File_Num and Scope_Num are filled later. From_Xref and To_Xref are
-      --  filled even later, but are initialized to represent an empty range.
-
-      Alfa_Scope_Table.Append (
-        (Scope_Name     => new String'(Unique_Name (E)),
-         File_Num       => 0,
-         Scope_Num      => 0,
-         Spec_File_Num  => 0,
-         Spec_Scope_Num => 0,
-         Line           => Nat (Get_Logical_Line_Number (Loc)),
-         Stype          => Typ,
-         Col            => Nat (Get_Column_Number (Loc)),
-         From_Xref      => 1,
-         To_Xref        => 0,
-         Scope_Entity   => E));
-   end Add_Alfa_Scope;
-
-   --------------------
-   -- Add_Alfa_Xrefs --
-   --------------------
-
-   procedure Add_Alfa_Xrefs is
-      function Entity_Of_Scope (S : Scope_Index) return Entity_Id;
-      --  Return the entity which maps to the input scope index
-
-      function Get_Entity_Type (E : Entity_Id) return Character;
-      --  Return a character representing the type of entity
-
-      function Is_Alfa_Reference
-        (E   : Entity_Id;
-         Typ : Character) return Boolean;
-      --  Return whether entity reference E meets Alfa requirements. Typ is the
-      --  reference type.
-
-      function Is_Alfa_Scope (E : Entity_Id) return Boolean;
-      --  Return whether the entity or reference scope meets requirements for
-      --  being an Alfa scope.
-
-      function Is_Future_Scope_Entity
-        (E : Entity_Id;
-         S : Scope_Index) return Boolean;
-      --  Check whether entity E is in Alfa_Scope_Table at index S or higher
-
-      function Is_Global_Constant (E : Entity_Id) return Boolean;
-      --  Return True if E is a global constant for which we should ignore
-      --  reads in Alfa.
-
-      function Lt (Op1 : Natural; Op2 : Natural) return Boolean;
-      --  Comparison function for Sort call
-
-      procedure Move (From : Natural; To : Natural);
-      --  Move procedure for Sort call
-
-      procedure Update_Scope_Range
-        (S    : Scope_Index;
-         From : Xref_Index;
-         To   : Xref_Index);
-      --  Update the scope which maps to S with the new range From .. To
-
-      package Sorting is new GNAT.Heap_Sort_G (Move, Lt);
-
-      function Get_Scope_Num (N : Entity_Id) return Nat;
-      --  Return the scope number associated to entity N
-
-      procedure Set_Scope_Num (N : Entity_Id; Num : Nat);
-      --  Associate entity N to scope number Num
-
-      No_Scope : constant Nat := 0;
-      --  Initial scope counter
-
-      type Scope_Rec is record
-         Num    : Nat;
-         Entity : Entity_Id;
-      end record;
-      --  Type used to relate an entity and a scope number
-
-      package Scopes is new GNAT.HTable.Simple_HTable
-        (Header_Num => Entity_Hashed_Range,
-         Element    => Scope_Rec,
-         No_Element => (Num => No_Scope, Entity => Empty),
-         Key        => Entity_Id,
-         Hash       => Entity_Hash,
-         Equal      => "=");
-      --  Package used to build a correspondance between entities and scope
-      --  numbers used in Alfa cross references.
-
-      Nrefs : Nat := Xrefs.Last;
-      --  Number of references in table. This value may get reset (reduced)
-      --  when we eliminate duplicate reference entries as well as references
-      --  not suitable for local cross-references.
-
-      Nrefs_Add : constant Nat := Drefs.Last;
-      --  Number of additional references which correspond to dereferences in
-      --  the source code.
-
-      Rnums : array (0 .. Nrefs + Nrefs_Add) of Nat;
-      --  This array contains numbers of references in the Xrefs table. This
-      --  list is sorted in output order. The extra 0'th entry is convenient
-      --  for the call to sort. When we sort the table, we move the entries in
-      --  Rnums around, but we do not move the original table entries.
-
-      ---------------------
-      -- Entity_Of_Scope --
-      ---------------------
-
-      function Entity_Of_Scope (S : Scope_Index) return Entity_Id is
-      begin
-         return Alfa_Scope_Table.Table (S).Scope_Entity;
-      end Entity_Of_Scope;
-
-      ---------------------
-      -- Get_Entity_Type --
-      ---------------------
-
-      function Get_Entity_Type (E : Entity_Id) return Character is
-      begin
-         case Ekind (E) is
-            when E_Out_Parameter    => return '<';
-            when E_In_Out_Parameter => return '=';
-            when E_In_Parameter     => return '>';
-            when others             => return '*';
-         end case;
-      end Get_Entity_Type;
-
-      -------------------
-      -- Get_Scope_Num --
-      -------------------
-
-      function Get_Scope_Num (N : Entity_Id) return Nat is
-      begin
-         return Scopes.Get (N).Num;
-      end Get_Scope_Num;
-
-      -----------------------
-      -- Is_Alfa_Reference --
-      -----------------------
-
-      function Is_Alfa_Reference
-        (E   : Entity_Id;
-         Typ : Character) return Boolean
-      is
-      begin
-         --  The only references of interest on callable entities are calls. On
-         --  non-callable entities, the only references of interest are reads
-         --  and writes.
-
-         if Ekind (E) in Overloadable_Kind then
-            return Typ = 's';
-
-         --  References to constant objects are not considered in Alfa section,
-         --  as these will be translated as constants in the intermediate
-         --  language for formal verification, and should therefore never
-         --  appear in frame conditions.
-
-         elsif Is_Constant_Object (E) then
-            return False;
-
-         --  Objects of Task type or protected type are not Alfa references
-
-         elsif Present (Etype (E))
-           and then Ekind (Etype (E)) in Concurrent_Kind
-         then
-            return False;
-
-         --  In all other cases, result is true for reference/modify cases,
-         --  and false for all other cases.
-
-         else
-            return Typ = 'r' or else Typ = 'm';
-         end if;
-      end Is_Alfa_Reference;
-
-      -------------------
-      -- Is_Alfa_Scope --
-      -------------------
-
-      function Is_Alfa_Scope (E : Entity_Id) return Boolean is
-      begin
-         return Present (E)
-           and then not Is_Generic_Unit (E)
-           and then Renamed_Entity (E) = Empty
-           and then Get_Scope_Num (E) /= No_Scope;
-      end Is_Alfa_Scope;
-
-      ----------------------------
-      -- Is_Future_Scope_Entity --
-      ----------------------------
-
-      function Is_Future_Scope_Entity
-        (E : Entity_Id;
-         S : Scope_Index) return Boolean
-      is
-         function Is_Past_Scope_Entity return Boolean;
-         --  Check whether entity E is in Alfa_Scope_Table at index strictly
-         --  lower than S.
-
-         --------------------------
-         -- Is_Past_Scope_Entity --
-         --------------------------
-
-         function Is_Past_Scope_Entity return Boolean is
-         begin
-            for Index in Alfa_Scope_Table.First .. S - 1 loop
-               if Alfa_Scope_Table.Table (Index).Scope_Entity = E then
-                  declare
-                     Dummy : constant Alfa_Scope_Record :=
-                               Alfa_Scope_Table.Table (Index);
-                     pragma Unreferenced (Dummy);
-                  begin
-                     return True;
-                  end;
-               end if;
-            end loop;
-
-            return False;
-         end Is_Past_Scope_Entity;
-
-      --  Start of processing for Is_Future_Scope_Entity
-
-      begin
-         for Index in S .. Alfa_Scope_Table.Last loop
-            if Alfa_Scope_Table.Table (Index).Scope_Entity = E then
-               return True;
-            end if;
-         end loop;
-
-         --  If this assertion fails, this means that the scope which we are
-         --  looking for has been treated already, which reveals a problem in
-         --  the order of cross-references.
-
-         pragma Assert (not Is_Past_Scope_Entity);
-
-         return False;
-      end Is_Future_Scope_Entity;
-
-      ------------------------
-      -- Is_Global_Constant --
-      ------------------------
-
-      function Is_Global_Constant (E : Entity_Id) return Boolean is
-      begin
-         return Ekind (E) = E_Constant
-           and then Ekind_In (Scope (E), E_Package, E_Package_Body);
-      end Is_Global_Constant;
-
-      --------
-      -- Lt --
-      --------
-
-      function Lt (Op1, Op2 : Natural) return Boolean is
-         T1 : constant Xref_Entry := Xrefs.Table (Rnums (Nat (Op1)));
-         T2 : constant Xref_Entry := Xrefs.Table (Rnums (Nat (Op2)));
-
-      begin
-         --  First test: if entity is in different unit, sort by unit. Note:
-         --  that we use Ent_Scope_File rather than Eun, as Eun may refer to
-         --  the file where the generic scope is defined, which may differ from
-         --  the file where the enclosing scope is defined. It is the latter
-         --  which matters for a correct order here.
-
-         if T1.Ent_Scope_File /= T2.Ent_Scope_File then
-            return Dependency_Num (T1.Ent_Scope_File) <
-                   Dependency_Num (T2.Ent_Scope_File);
-
-         --  Second test: within same unit, sort by location of the scope of
-         --  the entity definition.
-
-         elsif Get_Scope_Num (T1.Key.Ent_Scope) /=
-               Get_Scope_Num (T2.Key.Ent_Scope)
-         then
-            return Get_Scope_Num (T1.Key.Ent_Scope) <
-                   Get_Scope_Num (T2.Key.Ent_Scope);
-
-         --  Third test: within same unit and scope, sort by location of
-         --  entity definition.
-
-         elsif T1.Def /= T2.Def then
-            return T1.Def < T2.Def;
-
-         else
-            --  Both entities must be equal at this point
-
-            pragma Assert (T1.Key.Ent = T2.Key.Ent);
-
-            --  Fourth test: if reference is in same unit as entity definition,
-            --  sort first.
-
-            if T1.Key.Lun /= T2.Key.Lun
-              and then T1.Ent_Scope_File = T1.Key.Lun
-            then
-               return True;
-
-            elsif T1.Key.Lun /= T2.Key.Lun
-              and then T2.Ent_Scope_File = T2.Key.Lun
-            then
-               return False;
-
-            --  Fifth test: if reference is in same unit and same scope as
-            --  entity definition, sort first.
-
-            elsif T1.Ent_Scope_File = T1.Key.Lun
-              and then T1.Key.Ref_Scope /= T2.Key.Ref_Scope
-              and then T1.Key.Ent_Scope = T1.Key.Ref_Scope
-            then
-               return True;
-
-            elsif T2.Ent_Scope_File = T2.Key.Lun
-              and then T1.Key.Ref_Scope /= T2.Key.Ref_Scope
-              and then T2.Key.Ent_Scope = T2.Key.Ref_Scope
-            then
-               return False;
-
-            --  Sixth test: for same entity, sort by reference location unit
-
-            elsif T1.Key.Lun /= T2.Key.Lun then
-               return Dependency_Num (T1.Key.Lun) <
-                      Dependency_Num (T2.Key.Lun);
-
-            --  Seventh test: for same entity, sort by reference location scope
-
-            elsif Get_Scope_Num (T1.Key.Ref_Scope) /=
-                  Get_Scope_Num (T2.Key.Ref_Scope)
-            then
-               return Get_Scope_Num (T1.Key.Ref_Scope) <
-                      Get_Scope_Num (T2.Key.Ref_Scope);
-
-            --  Eighth test: order of location within referencing unit
-
-            elsif T1.Key.Loc /= T2.Key.Loc then
-               return T1.Key.Loc < T2.Key.Loc;
-
-            --  Finally, for two locations at the same address prefer the one
-            --  that does NOT have the type 'r', so that a modification or
-            --  extension takes preference, when there are more than one
-            --  reference at the same location. As a result, in the case of
-            --  entities that are in-out actuals, the read reference follows
-            --  the modify reference.
-
-            else
-               return T2.Key.Typ = 'r';
-            end if;
-         end if;
-      end Lt;
-
-      ----------
-      -- Move --
-      ----------
-
-      procedure Move (From : Natural; To : Natural) is
-      begin
-         Rnums (Nat (To)) := Rnums (Nat (From));
-      end Move;
-
-      -------------------
-      -- Set_Scope_Num --
-      -------------------
-
-      procedure Set_Scope_Num (N : Entity_Id; Num : Nat) is
-      begin
-         Scopes.Set (K => N, E => Scope_Rec'(Num => Num, Entity => N));
-      end Set_Scope_Num;
-
-      ------------------------
-      -- Update_Scope_Range --
-      ------------------------
-
-      procedure Update_Scope_Range
-        (S    : Scope_Index;
-         From : Xref_Index;
-         To   : Xref_Index)
-      is
-      begin
-         Alfa_Scope_Table.Table (S).From_Xref := From;
-         Alfa_Scope_Table.Table (S).To_Xref := To;
-      end Update_Scope_Range;
-
-      --  Local variables
-
-      Col        : Nat;
-      From_Index : Xref_Index;
-      Line       : Nat;
-      Loc        : Source_Ptr;
-      Prev_Typ   : Character;
-      Ref_Count  : Nat;
-      Ref_Id     : Entity_Id;
-      Ref_Name   : String_Ptr;
-      Scope_Id   : Scope_Index;
-
-   --  Start of processing for Add_Alfa_Xrefs
-
-   begin
-      for Index in Alfa_Scope_Table.First .. Alfa_Scope_Table.Last loop
-         declare
-            S : Alfa_Scope_Record renames Alfa_Scope_Table.Table (Index);
-         begin
-            Set_Scope_Num (S.Scope_Entity, S.Scope_Num);
-         end;
-      end loop;
-
-      --  Set up the pointer vector for the sort
-
-      for Index in 1 .. Nrefs loop
-         Rnums (Index) := Index;
-      end loop;
-
-      for Index in Drefs.First .. Drefs.Last loop
-         Xrefs.Append (Drefs.Table (Index));
-
-         Nrefs         := Nrefs + 1;
-         Rnums (Nrefs) := Xrefs.Last;
-      end loop;
-
-      --  Capture the definition Sloc values. As in the case of normal cross
-      --  references, we have to wait until now to get the correct value.
-
-      for Index in 1 .. Nrefs loop
-         Xrefs.Table (Index).Def := Sloc (Xrefs.Table (Index).Key.Ent);
-      end loop;
-
-      --  Eliminate entries not appropriate for Alfa. Done prior to sorting
-      --  cross-references, as it discards useless references which do not have
-      --  a proper format for the comparison function (like no location).
-
-      Ref_Count := Nrefs;
-      Nrefs     := 0;
-
-      for Index in 1 .. Ref_Count loop
-         declare
-            Ref : Xref_Key renames Xrefs.Table (Rnums (Index)).Key;
-
-         begin
-            if Alfa_Entities (Ekind (Ref.Ent))
-              and then Alfa_References (Ref.Typ)
-              and then Is_Alfa_Scope (Ref.Ent_Scope)
-              and then Is_Alfa_Scope (Ref.Ref_Scope)
-              and then not Is_Global_Constant (Ref.Ent)
-              and then Is_Alfa_Reference (Ref.Ent, Ref.Typ)
-
-              --  Discard references from unknown scopes, e.g. generic scopes
-
-              and then Get_Scope_Num (Ref.Ent_Scope) /= No_Scope
-              and then Get_Scope_Num (Ref.Ref_Scope) /= No_Scope
-            then
-               Nrefs         := Nrefs + 1;
-               Rnums (Nrefs) := Rnums (Index);
-            end if;
-         end;
-      end loop;
-
-      --  Sort the references
-
-      Sorting.Sort (Integer (Nrefs));
-
-      --  Eliminate duplicate entries
-
-      --  We need this test for Ref_Count because if we force ALI file
-      --  generation in case of errors detected, it may be the case that
-      --  Nrefs is 0, so we should not reset it here.
-
-      if Nrefs >= 2 then
-         Ref_Count := Nrefs;
-         Nrefs     := 1;
-
-         for Index in 2 .. Ref_Count loop
-            if Xrefs.Table (Rnums (Index)) /=
-               Xrefs.Table (Rnums (Nrefs))
-            then
-               Nrefs := Nrefs + 1;
-               Rnums (Nrefs) := Rnums (Index);
-            end if;
-         end loop;
-      end if;
-
-      --  Eliminate the reference if it is at the same location as the previous
-      --  one, unless it is a read-reference indicating that the entity is an
-      --  in-out actual in a call.
-
-      Ref_Count := Nrefs;
-      Nrefs     := 0;
-      Loc       := No_Location;
-      Prev_Typ  := 'm';
-
-      for Index in 1 .. Ref_Count loop
-         declare
-            Ref : Xref_Key renames Xrefs.Table (Rnums (Index)).Key;
-
-         begin
-            if Ref.Loc /= Loc
-              or else (Prev_Typ = 'm' and then Ref.Typ = 'r')
-            then
-               Loc           := Ref.Loc;
-               Prev_Typ      := Ref.Typ;
-               Nrefs         := Nrefs + 1;
-               Rnums (Nrefs) := Rnums (Index);
-            end if;
-         end;
-      end loop;
-
-      --  The two steps have eliminated all references, nothing to do
-
-      if Alfa_Scope_Table.Last = 0 then
-         return;
-      end if;
-
-      Ref_Id     := Empty;
-      Scope_Id   := 1;
-      From_Index := 1;
-
-      --  Loop to output references
-
-      for Refno in 1 .. Nrefs loop
-         declare
-            Ref_Entry : Xref_Entry renames Xrefs.Table (Rnums (Refno));
-            Ref       : Xref_Key   renames Ref_Entry.Key;
-
-         begin
-            --  If this assertion fails, the scope which we are looking for is
-            --  not in Alfa scope table, which reveals either a problem in the
-            --  construction of the scope table, or an erroneous scope for the
-            --  current cross-reference.
-
-            pragma Assert (Is_Future_Scope_Entity (Ref.Ent_Scope, Scope_Id));
-
-            --  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 Ref.Ent_Scope /= Entity_Of_Scope (Scope_Id) then
-               Update_Scope_Range
-                 (S    => Scope_Id,
-                  From => From_Index,
-                  To   => Alfa_Xref_Table.Last);
-
-               From_Index := Alfa_Xref_Table.Last + 1;
-            end if;
-
-            while Ref.Ent_Scope /= Entity_Of_Scope (Scope_Id) loop
-               Scope_Id := Scope_Id + 1;
-               pragma Assert (Scope_Id <= Alfa_Scope_Table.Last);
-            end loop;
-
-            if Ref.Ent /= Ref_Id then
-               Ref_Name := new String'(Unique_Name (Ref.Ent));
-            end if;
-
-            if Ref.Ent = Heap then
-               Line := 0;
-               Col  := 0;
-            else
-               Line := Int (Get_Logical_Line_Number (Ref_Entry.Def));
-               Col  := Int (Get_Column_Number (Ref_Entry.Def));
-            end if;
-
-            Alfa_Xref_Table.Append (
-              (Entity_Name => Ref_Name,
-               Entity_Line => Line,
-               Etype       => Get_Entity_Type (Ref.Ent),
-               Entity_Col  => Col,
-               File_Num    => Dependency_Num (Ref.Lun),
-               Scope_Num   => Get_Scope_Num (Ref.Ref_Scope),
-               Line        => Int (Get_Logical_Line_Number (Ref.Loc)),
-               Rtype       => Ref.Typ,
-               Col         => Int (Get_Column_Number (Ref.Loc))));
-         end;
-      end loop;
-
-      --  Update the range of cross references to which the scope refers to
-
-      Update_Scope_Range
-        (S    => Scope_Id,
-         From => From_Index,
-         To   => Alfa_Xref_Table.Last);
-   end Add_Alfa_Xrefs;
-
-   ------------------
-   -- Collect_Alfa --
-   ------------------
-
-   procedure Collect_Alfa (Sdep_Table : Unit_Ref_Table; Num_Sdep : Nat) is
-      D1 : Nat;
-      D2 : Nat;
-
-   begin
-      --  Cross-references should have been computed first
-
-      pragma Assert (Xrefs.Last /= 0);
-
-      Initialize_Alfa_Tables;
-
-      --  Generate file and scope Alfa information
-
-      D1 := 1;
-      while D1 <= Num_Sdep loop
-
-         --  In rare cases, when treating the library-level instantiation of a
-         --  generic, two consecutive units refer to the same compilation unit
-         --  node and entity. In that case, treat them as a single unit for the
-         --  sake of Alfa cross references by passing to Add_Alfa_File.
-
-         if D1 < Num_Sdep
-           and then Cunit_Entity (Sdep_Table (D1)) =
-                    Cunit_Entity (Sdep_Table (D1 + 1))
-         then
-            D2 := D1 + 1;
-         else
-            D2 := D1;
-         end if;
-
-         Add_Alfa_File
-           (Ubody => Sdep_Table (D1),
-            Uspec => Sdep_Table (D2),
-            Dspec => D2);
-         D1 := D2 + 1;
-      end loop;
-
-      --  Fill in the spec information when relevant
-
-      declare
-         package Entity_Hash_Table is new
-           GNAT.HTable.Simple_HTable
-             (Header_Num => Entity_Hashed_Range,
-              Element    => Scope_Index,
-              No_Element => 0,
-              Key        => Entity_Id,
-              Hash       => Entity_Hash,
-              Equal      => "=");
-
-      begin
-         --  Fill in the hash-table
-
-         for S in Alfa_Scope_Table.First .. Alfa_Scope_Table.Last loop
-            declare
-               Srec : Alfa_Scope_Record renames Alfa_Scope_Table.Table (S);
-            begin
-               Entity_Hash_Table.Set (Srec.Scope_Entity, S);
-            end;
-         end loop;
-
-         --  Use the hash-table to locate spec entities
-
-         for S in Alfa_Scope_Table.First .. Alfa_Scope_Table.Last loop
-            declare
-               Srec : Alfa_Scope_Record renames Alfa_Scope_Table.Table (S);
-
-               Spec_Entity : constant Entity_Id :=
-                               Unique_Entity (Srec.Scope_Entity);
-               Spec_Scope  : constant Scope_Index :=
-                               Entity_Hash_Table.Get (Spec_Entity);
-
-            begin
-               --  Generic spec may be missing in which case Spec_Scope is zero
-
-               if Spec_Entity /= Srec.Scope_Entity
-                 and then Spec_Scope /= 0
-               then
-                  Srec.Spec_File_Num :=
-                    Alfa_Scope_Table.Table (Spec_Scope).File_Num;
-                  Srec.Spec_Scope_Num :=
-                    Alfa_Scope_Table.Table (Spec_Scope).Scope_Num;
-               end if;
-            end;
-         end loop;
-      end;
-
-      --  Generate cross reference Alfa information
-
-      Add_Alfa_Xrefs;
-   end Collect_Alfa;
-
-   -------------------------------
-   -- Detect_And_Add_Alfa_Scope --
-   -------------------------------
-
-   procedure Detect_And_Add_Alfa_Scope (N : Node_Id) is
-   begin
-      if Nkind_In (N, N_Subprogram_Declaration,
-                      N_Subprogram_Body,
-                      N_Subprogram_Body_Stub,
-                      N_Package_Declaration,
-                      N_Package_Body)
-      then
-         Add_Alfa_Scope (N);
-      end if;
-   end Detect_And_Add_Alfa_Scope;
-
-   -------------------------------------
-   -- Enclosing_Subprogram_Or_Package --
-   -------------------------------------
-
-   function Enclosing_Subprogram_Or_Package (N : Node_Id) return Entity_Id is
-      Result : Entity_Id;
-
-   begin
-      --  If N is the defining identifier for a subprogram, then return the
-      --  enclosing subprogram or package, not this subprogram.
-
-      if Nkind_In (N, N_Defining_Identifier, N_Defining_Operator_Symbol)
-        and then Nkind (Parent (N)) in N_Subprogram_Specification
-      then
-         Result := Parent (Parent (Parent (N)));
-      else
-         Result := N;
-      end if;
-
-      while Present (Result) loop
-         case Nkind (Result) is
-            when N_Package_Specification =>
-               Result := Defining_Unit_Name (Result);
-               exit;
-
-            when N_Package_Body =>
-               Result := Defining_Unit_Name (Result);
-               exit;
-
-            when N_Subprogram_Specification =>
-               Result := Defining_Unit_Name (Result);
-               exit;
-
-            when N_Subprogram_Declaration =>
-               Result := Defining_Unit_Name (Specification (Result));
-               exit;
-
-            when N_Subprogram_Body =>
-               Result := Defining_Unit_Name (Specification (Result));
-               exit;
-
-            --  The enclosing subprogram for a pre- or postconditions should be
-            --  the subprogram to which the pragma is attached. This is not
-            --  always the case in the AST, as the pragma may be declared after
-            --  the declaration of the subprogram. Return Empty in this case.
-
-            when N_Pragma =>
-               if Get_Pragma_Id (Result) = Pragma_Precondition
-                    or else
-                  Get_Pragma_Id (Result) = Pragma_Postcondition
-               then
-                  return Empty;
-               else
-                  Result := Parent (Result);
-               end if;
-
-            when others =>
-               Result := Parent (Result);
-         end case;
-      end loop;
-
-      if Nkind (Result) = N_Defining_Program_Unit_Name then
-         Result := Defining_Identifier (Result);
-      end if;
-
-      --  Do not return a scope without a proper location
-
-      if Present (Result)
-        and then Sloc (Result) = No_Location
-      then
-         return Empty;
-      end if;
-
-      return Result;
-   end Enclosing_Subprogram_Or_Package;
-
-   -----------------
-   -- Entity_Hash --
-   -----------------
-
-   function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range is
-   begin
-      return
-        Entity_Hashed_Range (E mod (Entity_Id (Entity_Hashed_Range'Last) + 1));
-   end Entity_Hash;
-
-   --------------------------
-   -- Generate_Dereference --
-   --------------------------
-
-   procedure Generate_Dereference
-     (N   : Node_Id;
-      Typ : Character := 'r')
-   is
-      procedure Create_Heap;
-      --  Create and decorate the special entity which denotes the heap
-
-      -----------------
-      -- Create_Heap --
-      -----------------
-
-      procedure Create_Heap is
-      begin
-         Name_Len := Name_Of_Heap_Variable'Length;
-         Name_Buffer (1 .. Name_Len) := Name_Of_Heap_Variable;
-
-         Heap := Make_Defining_Identifier (Standard_Location, Name_Enter);
-
-         Set_Ekind       (Heap, E_Variable);
-         Set_Is_Internal (Heap, True);
-         Set_Has_Fully_Qualified_Name (Heap);
-      end Create_Heap;
-
-      --  Local variables
-
-      Loc       : constant Source_Ptr := Sloc (N);
-      Index     : Nat;
-      Ref_Scope : Entity_Id;
-
-   --  Start of processing for Generate_Dereference
-
-   begin
-
-      if Loc > No_Location then
-         Drefs.Increment_Last;
-         Index := Drefs.Last;
-
-         declare
-            Deref_Entry : Xref_Entry renames Drefs.Table (Index);
-            Deref       : Xref_Key   renames Deref_Entry.Key;
-
-         begin
-            if No (Heap) then
-               Create_Heap;
-            end if;
-
-            Ref_Scope := Enclosing_Subprogram_Or_Package (N);
-
-            Deref.Ent := Heap;
-            Deref.Loc := Loc;
-            Deref.Typ := Typ;
-
-            --  It is as if the special "Heap" was defined in every scope where
-            --  it is referenced.
-
-            Deref.Eun := Get_Code_Unit (Loc);
-            Deref.Lun := Get_Code_Unit (Loc);
-
-            Deref.Ref_Scope := Ref_Scope;
-            Deref.Ent_Scope := Ref_Scope;
-
-            Deref_Entry.Def := No_Location;
-
-            Deref_Entry.Ent_Scope_File := Get_Code_Unit (N);
-         end;
-      end if;
-   end Generate_Dereference;
-
-   ------------------------------------
-   -- Traverse_All_Compilation_Units --
-   ------------------------------------
-
-   procedure Traverse_All_Compilation_Units (Process : Node_Processing) is
-   begin
-      for U in Units.First .. Last_Unit loop
-         Traverse_Compilation_Unit (Cunit (U), Process, Inside_Stubs => False);
-      end loop;
-   end Traverse_All_Compilation_Units;
-
-   -------------------------------
-   -- Traverse_Compilation_Unit --
-   -------------------------------
-
-   procedure Traverse_Compilation_Unit
-     (CU           : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean)
-   is
-      Lu : Node_Id;
-
-   begin
-      --  Get Unit (checking case of subunit)
-
-      Lu := Unit (CU);
-
-      if Nkind (Lu) = N_Subunit then
-         Lu := Proper_Body (Lu);
-      end if;
-
-      --  Do not add scopes for generic units
-
-      if Nkind (Lu) = N_Package_Body
-        and then Ekind (Corresponding_Spec (Lu)) in Generic_Unit_Kind
-      then
-         return;
-      end if;
-
-      --  Call Process on all declarations
-
-      if Nkind (Lu) in N_Declaration
-        or else Nkind (Lu) in N_Later_Decl_Item
-      then
-         Process (Lu);
-      end if;
-
-      --  Traverse the unit
-
-      if Nkind (Lu) = N_Subprogram_Body then
-         Traverse_Subprogram_Body (Lu, Process, Inside_Stubs);
-
-      elsif Nkind (Lu) = N_Subprogram_Declaration then
-         null;
-
-      elsif Nkind (Lu) = N_Package_Declaration then
-         Traverse_Package_Declaration (Lu, Process, Inside_Stubs);
-
-      elsif Nkind (Lu) = N_Package_Body then
-         Traverse_Package_Body (Lu, Process, Inside_Stubs);
-
-      --  All other cases of compilation units (e.g. renamings), are not
-      --  declarations, or else generic declarations which are ignored.
-
-      else
-         null;
-      end if;
-   end Traverse_Compilation_Unit;
-
-   -----------------------------------------
-   -- Traverse_Declarations_Or_Statements --
-   -----------------------------------------
-
-   procedure Traverse_Declarations_Or_Statements
-     (L            : List_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean)
-   is
-      N : Node_Id;
-
-   begin
-      --  Loop through statements or declarations
-
-      N := First (L);
-      while Present (N) loop
-         --  Call Process on all declarations
-
-         if Nkind (N) in N_Declaration
-              or else
-            Nkind (N) in N_Later_Decl_Item
-         then
-            Process (N);
-         end if;
-
-         case Nkind (N) is
-
-            --  Package declaration
-
-            when N_Package_Declaration =>
-               Traverse_Package_Declaration (N, Process, Inside_Stubs);
-
-            --  Package body
-
-            when N_Package_Body =>
-               if Ekind (Defining_Entity (N)) /= E_Generic_Package then
-                  Traverse_Package_Body (N, Process, Inside_Stubs);
-               end if;
-
-            when N_Package_Body_Stub =>
-               if Present (Library_Unit (N)) then
-                  declare
-                     Body_N : constant Node_Id := Get_Body_From_Stub (N);
-                  begin
-                     if Inside_Stubs
-                       and then
-                         Ekind (Defining_Entity (Body_N)) /= E_Generic_Package
-                     then
-                        Traverse_Package_Body (Body_N, Process, Inside_Stubs);
-                     end if;
-                  end;
-               end if;
-
-            --  Subprogram declaration
-
-            when N_Subprogram_Declaration =>
-               null;
-
-            --  Subprogram body
-
-            when N_Subprogram_Body =>
-               if not Is_Generic_Subprogram (Defining_Entity (N)) then
-                  Traverse_Subprogram_Body (N, Process, Inside_Stubs);
-               end if;
-
-            when N_Subprogram_Body_Stub =>
-               if Present (Library_Unit (N)) then
-                  declare
-                     Body_N : constant Node_Id := Get_Body_From_Stub (N);
-                  begin
-                     if Inside_Stubs
-                       and then
-                         not Is_Generic_Subprogram (Defining_Entity (Body_N))
-                     then
-                        Traverse_Subprogram_Body
-                          (Body_N, Process, Inside_Stubs);
-                     end if;
-                  end;
-               end if;
-
-            --  Block statement
-
-            when N_Block_Statement =>
-               Traverse_Declarations_Or_Statements
-                 (Declarations (N), Process, Inside_Stubs);
-               Traverse_Handled_Statement_Sequence
-                 (Handled_Statement_Sequence (N), Process, Inside_Stubs);
-
-            when N_If_Statement =>
-
-               --  Traverse the statements in the THEN part
-
-               Traverse_Declarations_Or_Statements
-                 (Then_Statements (N), Process, Inside_Stubs);
-
-               --  Loop through ELSIF parts if present
-
-               if Present (Elsif_Parts (N)) then
-                  declare
-                     Elif : Node_Id := First (Elsif_Parts (N));
-
-                  begin
-                     while Present (Elif) loop
-                        Traverse_Declarations_Or_Statements
-                          (Then_Statements (Elif), Process, Inside_Stubs);
-                        Next (Elif);
-                     end loop;
-                  end;
-               end if;
-
-               --  Finally traverse the ELSE statements if present
-
-               Traverse_Declarations_Or_Statements
-                 (Else_Statements (N), Process, Inside_Stubs);
-
-            --  Case statement
-
-            when N_Case_Statement =>
-
-               --  Process case branches
-
-               declare
-                  Alt : Node_Id;
-               begin
-                  Alt := First (Alternatives (N));
-                  while Present (Alt) loop
-                     Traverse_Declarations_Or_Statements
-                       (Statements (Alt), Process, Inside_Stubs);
-                     Next (Alt);
-                  end loop;
-               end;
-
-            --  Extended return statement
-
-            when N_Extended_Return_Statement =>
-               Traverse_Handled_Statement_Sequence
-                 (Handled_Statement_Sequence (N), Process, Inside_Stubs);
-
-            --  Loop
-
-            when N_Loop_Statement =>
-               Traverse_Declarations_Or_Statements
-                 (Statements (N), Process, Inside_Stubs);
-
-            --  Generic declarations are ignored
-
-            when others =>
-               null;
-         end case;
-
-         Next (N);
-      end loop;
-   end Traverse_Declarations_Or_Statements;
-
-   -----------------------------------------
-   -- Traverse_Handled_Statement_Sequence --
-   -----------------------------------------
-
-   procedure Traverse_Handled_Statement_Sequence
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean)
-   is
-      Handler : Node_Id;
-
-   begin
-      if Present (N) then
-         Traverse_Declarations_Or_Statements
-           (Statements (N), Process, Inside_Stubs);
-
-         if Present (Exception_Handlers (N)) then
-            Handler := First (Exception_Handlers (N));
-            while Present (Handler) loop
-               Traverse_Declarations_Or_Statements
-                 (Statements (Handler), Process, Inside_Stubs);
-               Next (Handler);
-            end loop;
-         end if;
-      end if;
-   end Traverse_Handled_Statement_Sequence;
-
-   ---------------------------
-   -- Traverse_Package_Body --
-   ---------------------------
-
-   procedure Traverse_Package_Body
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean) is
-   begin
-      Traverse_Declarations_Or_Statements
-        (Declarations (N), Process, Inside_Stubs);
-      Traverse_Handled_Statement_Sequence
-        (Handled_Statement_Sequence (N), Process, Inside_Stubs);
-   end Traverse_Package_Body;
-
-   ----------------------------------
-   -- Traverse_Package_Declaration --
-   ----------------------------------
-
-   procedure Traverse_Package_Declaration
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean)
-   is
-      Spec : constant Node_Id := Specification (N);
-   begin
-      Traverse_Declarations_Or_Statements
-        (Visible_Declarations (Spec), Process, Inside_Stubs);
-      Traverse_Declarations_Or_Statements
-        (Private_Declarations (Spec), Process, Inside_Stubs);
-   end Traverse_Package_Declaration;
-
-   ------------------------------
-   -- Traverse_Subprogram_Body --
-   ------------------------------
-
-   procedure Traverse_Subprogram_Body
-     (N            : Node_Id;
-      Process      : Node_Processing;
-      Inside_Stubs : Boolean)
-   is
-   begin
-      Traverse_Declarations_Or_Statements
-        (Declarations (N), Process, Inside_Stubs);
-      Traverse_Handled_Statement_Sequence
-        (Handled_Statement_Sequence (N), Process, Inside_Stubs);
-   end Traverse_Subprogram_Body;
-
-end Alfa;
diff --git a/gcc/ada/lib-xref-spark_specific.adb b/gcc/ada/lib-xref-spark_specific.adb
new file mode 100644 (file)
index 0000000..7841313
--- /dev/null
@@ -0,0 +1,1438 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--              L I B . X R E F . S P A R K _ S P E C I F I C               --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with SPARK_Xrefs;     use SPARK_Xrefs;
+with Einfo;           use Einfo;
+with Nmake;           use Nmake;
+with Put_SPARK_Xrefs;
+
+with GNAT.HTable;
+
+separate (Lib.Xref)
+package body SPARK_Specific is
+
+   ---------------------
+   -- Local Constants --
+   ---------------------
+
+   --  Table of SPARK_Entities, True for each entity kind used in SPARK
+
+   SPARK_Entities : constant array (Entity_Kind) of Boolean :=
+     (E_Constant         => True,
+      E_Function         => True,
+      E_In_Out_Parameter => True,
+      E_In_Parameter     => True,
+      E_Loop_Parameter   => True,
+      E_Operator         => True,
+      E_Out_Parameter    => True,
+      E_Procedure        => True,
+      E_Variable         => True,
+      others             => False);
+
+   --  True for each reference type used in SPARK
+
+   SPARK_References : constant array (Character) of Boolean :=
+     ('m' => True,
+      'r' => True,
+      's' => True,
+      others => False);
+
+   type Entity_Hashed_Range is range 0 .. 255;
+   --  Size of hash table headers
+
+   ---------------------
+   -- Local Variables --
+   ---------------------
+
+   Heap : Entity_Id := Empty;
+   --  A special entity which denotes the heap object
+
+   package Drefs is new Table.Table (
+     Table_Component_Type => Xref_Entry,
+     Table_Index_Type     => Xref_Entry_Number,
+     Table_Low_Bound      => 1,
+     Table_Initial        => Alloc.Drefs_Initial,
+     Table_Increment      => Alloc.Drefs_Increment,
+     Table_Name           => "Drefs");
+   --  Table of cross-references for reads and writes through explicit
+   --  dereferences, that are output as reads/writes to the special variable
+   --  "Heap". These references are added to the regular references when
+   --  computing SPARK cross-references.
+
+   -----------------------
+   -- Local Subprograms --
+   -----------------------
+
+   procedure Add_SPARK_File (Ubody, Uspec : Unit_Number_Type; Dspec : Nat);
+   --  Add file and corresponding scopes for unit to the tables
+   --  SPARK_File_Table and SPARK_Scope_Table. When two units are present for
+   --  the same compilation unit, as it happens for library-level
+   --  instantiations of generics, then Ubody /= Uspec, and all scopes are
+   --  added to the same SPARK file. Otherwise Ubody = Uspec.
+
+   procedure Add_SPARK_Scope (N : Node_Id);
+   --  Add scope N to the table SPARK_Scope_Table
+
+   procedure Add_SPARK_Xrefs;
+   --  Filter table Xrefs to add all references used in SPARK to the table
+   --  SPARK_Xref_Table.
+
+   procedure Detect_And_Add_SPARK_Scope (N : Node_Id);
+   --  Call Add_SPARK_Scope on scopes
+
+   function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range;
+   --  Hash function for hash table
+
+   procedure Traverse_Declarations_Or_Statements
+     (L            : List_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean);
+   procedure Traverse_Handled_Statement_Sequence
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean);
+   procedure Traverse_Package_Body
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean);
+   procedure Traverse_Package_Declaration
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean);
+   procedure Traverse_Subprogram_Body
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean);
+   --  Traverse corresponding construct, calling Process on all declarations
+
+   --------------------
+   -- Add_SPARK_File --
+   --------------------
+
+   procedure Add_SPARK_File (Ubody, Uspec : Unit_Number_Type; Dspec : Nat) is
+      File : constant Source_File_Index := Source_Index (Uspec);
+      From : Scope_Index;
+
+      File_Name      : String_Ptr;
+      Unit_File_Name : String_Ptr;
+
+   begin
+      --  Source file could be inexistant as a result of an error, if option
+      --  gnatQ is used.
+
+      if File = No_Source_File then
+         return;
+      end if;
+
+      From := SPARK_Scope_Table.Last + 1;
+
+      --  Unit might not have an associated compilation unit, as seen in code
+      --  filling Sdep_Table in Write_ALI.
+
+      if Present (Cunit (Ubody)) then
+         Traverse_Compilation_Unit
+           (CU           => Cunit (Ubody),
+            Process      => Detect_And_Add_SPARK_Scope'Access,
+            Inside_Stubs => False);
+      end if;
+
+      --  When two units are present for the same compilation unit, as it
+      --  happens for library-level instantiations of generics, then add all
+      --  scopes to the same SPARK file.
+
+      if Ubody /= Uspec then
+         if Present (Cunit (Uspec)) then
+            Traverse_Compilation_Unit
+              (CU           => Cunit (Uspec),
+               Process      => Detect_And_Add_SPARK_Scope'Access,
+               Inside_Stubs => False);
+         end if;
+      end if;
+
+      --  Update scope numbers
+
+      declare
+         Scope_Id : Int;
+      begin
+         Scope_Id := 1;
+         for Index in From .. SPARK_Scope_Table.Last loop
+            declare
+               S : SPARK_Scope_Record renames SPARK_Scope_Table.Table (Index);
+            begin
+               S.Scope_Num := Scope_Id;
+               S.File_Num  := Dspec;
+               Scope_Id    := Scope_Id + 1;
+            end;
+         end loop;
+      end;
+
+      --  Remove those scopes previously marked for removal
+
+      declare
+         Scope_Id : Scope_Index;
+
+      begin
+         Scope_Id := From;
+         for Index in From .. SPARK_Scope_Table.Last loop
+            declare
+               S : SPARK_Scope_Record renames SPARK_Scope_Table.Table (Index);
+            begin
+               if S.Scope_Num /= 0 then
+                  SPARK_Scope_Table.Table (Scope_Id) := S;
+                  Scope_Id := Scope_Id + 1;
+               end if;
+            end;
+         end loop;
+
+         SPARK_Scope_Table.Set_Last (Scope_Id - 1);
+      end;
+
+      --  Make entry for new file in file table
+
+      Get_Name_String (Reference_Name (File));
+      File_Name := new String'(Name_Buffer (1 .. Name_Len));
+
+      --  For subunits, also retrieve the file name of the unit. Only do so if
+      --  unit has an associated compilation unit.
+
+      if Present (Cunit (Uspec))
+        and then Present (Cunit (Unit (File)))
+        and then Nkind (Unit (Cunit (Unit (File)))) = N_Subunit
+      then
+         Get_Name_String (Reference_Name (Main_Source_File));
+         Unit_File_Name := new String'(Name_Buffer (1 .. Name_Len));
+      end if;
+
+      SPARK_File_Table.Append (
+        (File_Name      => File_Name,
+         Unit_File_Name => Unit_File_Name,
+         File_Num       => Dspec,
+         From_Scope     => From,
+         To_Scope       => SPARK_Scope_Table.Last));
+   end Add_SPARK_File;
+
+   ---------------------
+   -- Add_SPARK_Scope --
+   ---------------------
+
+   procedure Add_SPARK_Scope (N : Node_Id) is
+      E   : constant Entity_Id  := Defining_Entity (N);
+      Loc : constant Source_Ptr := Sloc (E);
+      Typ : Character;
+
+   begin
+      --  Ignore scopes without a proper location
+
+      if Sloc (N) = No_Location then
+         return;
+      end if;
+
+      case Ekind (E) is
+         when E_Function | E_Generic_Function =>
+            Typ := 'V';
+
+         when E_Procedure | E_Generic_Procedure =>
+            Typ := 'U';
+
+         when E_Subprogram_Body =>
+            declare
+               Spec : Node_Id;
+
+            begin
+               Spec := Parent (E);
+
+               if Nkind (Spec) = N_Defining_Program_Unit_Name then
+                  Spec := Parent (Spec);
+               end if;
+
+               if Nkind (Spec) = N_Function_Specification then
+                  Typ := 'V';
+               else
+                  pragma Assert
+                    (Nkind (Spec) = N_Procedure_Specification);
+                  Typ := 'U';
+               end if;
+            end;
+
+         when E_Package | E_Package_Body | E_Generic_Package =>
+            Typ := 'K';
+
+         when E_Void =>
+            --  Compilation of prj-attr.adb with -gnatn creates a node with
+            --  entity E_Void for the package defined at a-charac.ads16:13
+
+            --  ??? TBD
+
+            return;
+
+         when others =>
+            raise Program_Error;
+      end case;
+
+      --  File_Num and Scope_Num are filled later. From_Xref and To_Xref are
+      --  filled even later, but are initialized to represent an empty range.
+
+      SPARK_Scope_Table.Append (
+        (Scope_Name     => new String'(Unique_Name (E)),
+         File_Num       => 0,
+         Scope_Num      => 0,
+         Spec_File_Num  => 0,
+         Spec_Scope_Num => 0,
+         Line           => Nat (Get_Logical_Line_Number (Loc)),
+         Stype          => Typ,
+         Col            => Nat (Get_Column_Number (Loc)),
+         From_Xref      => 1,
+         To_Xref        => 0,
+         Scope_Entity   => E));
+   end Add_SPARK_Scope;
+
+   ---------------------
+   -- Add_SPARK_Xrefs --
+   ---------------------
+
+   procedure Add_SPARK_Xrefs is
+      function Entity_Of_Scope (S : Scope_Index) return Entity_Id;
+      --  Return the entity which maps to the input scope index
+
+      function Get_Entity_Type (E : Entity_Id) return Character;
+      --  Return a character representing the type of entity
+
+      function Is_SPARK_Reference
+        (E   : Entity_Id;
+         Typ : Character) return Boolean;
+      --  Return whether entity reference E meets SPARK requirements. Typ is
+      --  the reference type.
+
+      function Is_SPARK_Scope (E : Entity_Id) return Boolean;
+      --  Return whether the entity or reference scope meets requirements for
+      --  being an SPARK scope.
+
+      function Is_Future_Scope_Entity
+        (E : Entity_Id;
+         S : Scope_Index) return Boolean;
+      --  Check whether entity E is in SPARK_Scope_Table at index S or higher
+
+      function Is_Global_Constant (E : Entity_Id) return Boolean;
+      --  Return True if E is a global constant for which we should ignore
+      --  reads in SPARK.
+
+      function Lt (Op1 : Natural; Op2 : Natural) return Boolean;
+      --  Comparison function for Sort call
+
+      procedure Move (From : Natural; To : Natural);
+      --  Move procedure for Sort call
+
+      procedure Update_Scope_Range
+        (S    : Scope_Index;
+         From : Xref_Index;
+         To   : Xref_Index);
+      --  Update the scope which maps to S with the new range From .. To
+
+      package Sorting is new GNAT.Heap_Sort_G (Move, Lt);
+
+      function Get_Scope_Num (N : Entity_Id) return Nat;
+      --  Return the scope number associated to entity N
+
+      procedure Set_Scope_Num (N : Entity_Id; Num : Nat);
+      --  Associate entity N to scope number Num
+
+      No_Scope : constant Nat := 0;
+      --  Initial scope counter
+
+      type Scope_Rec is record
+         Num    : Nat;
+         Entity : Entity_Id;
+      end record;
+      --  Type used to relate an entity and a scope number
+
+      package Scopes is new GNAT.HTable.Simple_HTable
+        (Header_Num => Entity_Hashed_Range,
+         Element    => Scope_Rec,
+         No_Element => (Num => No_Scope, Entity => Empty),
+         Key        => Entity_Id,
+         Hash       => Entity_Hash,
+         Equal      => "=");
+      --  Package used to build a correspondance between entities and scope
+      --  numbers used in SPARK cross references.
+
+      Nrefs : Nat := Xrefs.Last;
+      --  Number of references in table. This value may get reset (reduced)
+      --  when we eliminate duplicate reference entries as well as references
+      --  not suitable for local cross-references.
+
+      Nrefs_Add : constant Nat := Drefs.Last;
+      --  Number of additional references which correspond to dereferences in
+      --  the source code.
+
+      Rnums : array (0 .. Nrefs + Nrefs_Add) of Nat;
+      --  This array contains numbers of references in the Xrefs table. This
+      --  list is sorted in output order. The extra 0'th entry is convenient
+      --  for the call to sort. When we sort the table, we move the entries in
+      --  Rnums around, but we do not move the original table entries.
+
+      ---------------------
+      -- Entity_Of_Scope --
+      ---------------------
+
+      function Entity_Of_Scope (S : Scope_Index) return Entity_Id is
+      begin
+         return SPARK_Scope_Table.Table (S).Scope_Entity;
+      end Entity_Of_Scope;
+
+      ---------------------
+      -- Get_Entity_Type --
+      ---------------------
+
+      function Get_Entity_Type (E : Entity_Id) return Character is
+      begin
+         case Ekind (E) is
+            when E_Out_Parameter    => return '<';
+            when E_In_Out_Parameter => return '=';
+            when E_In_Parameter     => return '>';
+            when others             => return '*';
+         end case;
+      end Get_Entity_Type;
+
+      -------------------
+      -- Get_Scope_Num --
+      -------------------
+
+      function Get_Scope_Num (N : Entity_Id) return Nat is
+      begin
+         return Scopes.Get (N).Num;
+      end Get_Scope_Num;
+
+      ------------------------
+      -- Is_SPARK_Reference --
+      ------------------------
+
+      function Is_SPARK_Reference
+        (E   : Entity_Id;
+         Typ : Character) return Boolean
+      is
+      begin
+         --  The only references of interest on callable entities are calls. On
+         --  non-callable entities, the only references of interest are reads
+         --  and writes.
+
+         if Ekind (E) in Overloadable_Kind then
+            return Typ = 's';
+
+         --  References to constant objects are not considered in SPARK
+         --  section, as these will be translated as constants in the
+         --  intermediate language for formal verification, and should
+         --  therefore never appear in frame conditions.
+
+         elsif Is_Constant_Object (E) then
+            return False;
+
+         --  Objects of Task type or protected type are not SPARK references
+
+         elsif Present (Etype (E))
+           and then Ekind (Etype (E)) in Concurrent_Kind
+         then
+            return False;
+
+         --  In all other cases, result is true for reference/modify cases,
+         --  and false for all other cases.
+
+         else
+            return Typ = 'r' or else Typ = 'm';
+         end if;
+      end Is_SPARK_Reference;
+
+      --------------------
+      -- Is_SPARK_Scope --
+      --------------------
+
+      function Is_SPARK_Scope (E : Entity_Id) return Boolean is
+      begin
+         return Present (E)
+           and then not Is_Generic_Unit (E)
+           and then Renamed_Entity (E) = Empty
+           and then Get_Scope_Num (E) /= No_Scope;
+      end Is_SPARK_Scope;
+
+      ----------------------------
+      -- Is_Future_Scope_Entity --
+      ----------------------------
+
+      function Is_Future_Scope_Entity
+        (E : Entity_Id;
+         S : Scope_Index) return Boolean
+      is
+         function Is_Past_Scope_Entity return Boolean;
+         --  Check whether entity E is in SPARK_Scope_Table at index strictly
+         --  lower than S.
+
+         --------------------------
+         -- Is_Past_Scope_Entity --
+         --------------------------
+
+         function Is_Past_Scope_Entity return Boolean is
+         begin
+            for Index in SPARK_Scope_Table.First .. S - 1 loop
+               if SPARK_Scope_Table.Table (Index).Scope_Entity = E then
+                  declare
+                     Dummy : constant SPARK_Scope_Record :=
+                               SPARK_Scope_Table.Table (Index);
+                     pragma Unreferenced (Dummy);
+                  begin
+                     return True;
+                  end;
+               end if;
+            end loop;
+
+            return False;
+         end Is_Past_Scope_Entity;
+
+      --  Start of processing for Is_Future_Scope_Entity
+
+      begin
+         for Index in S .. SPARK_Scope_Table.Last loop
+            if SPARK_Scope_Table.Table (Index).Scope_Entity = E then
+               return True;
+            end if;
+         end loop;
+
+         --  If this assertion fails, this means that the scope which we are
+         --  looking for has been treated already, which reveals a problem in
+         --  the order of cross-references.
+
+         pragma Assert (not Is_Past_Scope_Entity);
+
+         return False;
+      end Is_Future_Scope_Entity;
+
+      ------------------------
+      -- Is_Global_Constant --
+      ------------------------
+
+      function Is_Global_Constant (E : Entity_Id) return Boolean is
+      begin
+         return Ekind (E) = E_Constant
+           and then Ekind_In (Scope (E), E_Package, E_Package_Body);
+      end Is_Global_Constant;
+
+      --------
+      -- Lt --
+      --------
+
+      function Lt (Op1, Op2 : Natural) return Boolean is
+         T1 : constant Xref_Entry := Xrefs.Table (Rnums (Nat (Op1)));
+         T2 : constant Xref_Entry := Xrefs.Table (Rnums (Nat (Op2)));
+
+      begin
+         --  First test: if entity is in different unit, sort by unit. Note:
+         --  that we use Ent_Scope_File rather than Eun, as Eun may refer to
+         --  the file where the generic scope is defined, which may differ from
+         --  the file where the enclosing scope is defined. It is the latter
+         --  which matters for a correct order here.
+
+         if T1.Ent_Scope_File /= T2.Ent_Scope_File then
+            return Dependency_Num (T1.Ent_Scope_File) <
+                   Dependency_Num (T2.Ent_Scope_File);
+
+         --  Second test: within same unit, sort by location of the scope of
+         --  the entity definition.
+
+         elsif Get_Scope_Num (T1.Key.Ent_Scope) /=
+               Get_Scope_Num (T2.Key.Ent_Scope)
+         then
+            return Get_Scope_Num (T1.Key.Ent_Scope) <
+                   Get_Scope_Num (T2.Key.Ent_Scope);
+
+         --  Third test: within same unit and scope, sort by location of
+         --  entity definition.
+
+         elsif T1.Def /= T2.Def then
+            return T1.Def < T2.Def;
+
+         else
+            --  Both entities must be equal at this point
+
+            pragma Assert (T1.Key.Ent = T2.Key.Ent);
+
+            --  Fourth test: if reference is in same unit as entity definition,
+            --  sort first.
+
+            if T1.Key.Lun /= T2.Key.Lun
+              and then T1.Ent_Scope_File = T1.Key.Lun
+            then
+               return True;
+
+            elsif T1.Key.Lun /= T2.Key.Lun
+              and then T2.Ent_Scope_File = T2.Key.Lun
+            then
+               return False;
+
+            --  Fifth test: if reference is in same unit and same scope as
+            --  entity definition, sort first.
+
+            elsif T1.Ent_Scope_File = T1.Key.Lun
+              and then T1.Key.Ref_Scope /= T2.Key.Ref_Scope
+              and then T1.Key.Ent_Scope = T1.Key.Ref_Scope
+            then
+               return True;
+
+            elsif T2.Ent_Scope_File = T2.Key.Lun
+              and then T1.Key.Ref_Scope /= T2.Key.Ref_Scope
+              and then T2.Key.Ent_Scope = T2.Key.Ref_Scope
+            then
+               return False;
+
+            --  Sixth test: for same entity, sort by reference location unit
+
+            elsif T1.Key.Lun /= T2.Key.Lun then
+               return Dependency_Num (T1.Key.Lun) <
+                      Dependency_Num (T2.Key.Lun);
+
+            --  Seventh test: for same entity, sort by reference location scope
+
+            elsif Get_Scope_Num (T1.Key.Ref_Scope) /=
+                  Get_Scope_Num (T2.Key.Ref_Scope)
+            then
+               return Get_Scope_Num (T1.Key.Ref_Scope) <
+                      Get_Scope_Num (T2.Key.Ref_Scope);
+
+            --  Eighth test: order of location within referencing unit
+
+            elsif T1.Key.Loc /= T2.Key.Loc then
+               return T1.Key.Loc < T2.Key.Loc;
+
+            --  Finally, for two locations at the same address prefer the one
+            --  that does NOT have the type 'r', so that a modification or
+            --  extension takes preference, when there are more than one
+            --  reference at the same location. As a result, in the case of
+            --  entities that are in-out actuals, the read reference follows
+            --  the modify reference.
+
+            else
+               return T2.Key.Typ = 'r';
+            end if;
+         end if;
+      end Lt;
+
+      ----------
+      -- Move --
+      ----------
+
+      procedure Move (From : Natural; To : Natural) is
+      begin
+         Rnums (Nat (To)) := Rnums (Nat (From));
+      end Move;
+
+      -------------------
+      -- Set_Scope_Num --
+      -------------------
+
+      procedure Set_Scope_Num (N : Entity_Id; Num : Nat) is
+      begin
+         Scopes.Set (K => N, E => Scope_Rec'(Num => Num, Entity => N));
+      end Set_Scope_Num;
+
+      ------------------------
+      -- Update_Scope_Range --
+      ------------------------
+
+      procedure Update_Scope_Range
+        (S    : Scope_Index;
+         From : Xref_Index;
+         To   : Xref_Index)
+      is
+      begin
+         SPARK_Scope_Table.Table (S).From_Xref := From;
+         SPARK_Scope_Table.Table (S).To_Xref := To;
+      end Update_Scope_Range;
+
+      --  Local variables
+
+      Col        : Nat;
+      From_Index : Xref_Index;
+      Line       : Nat;
+      Loc        : Source_Ptr;
+      Prev_Typ   : Character;
+      Ref_Count  : Nat;
+      Ref_Id     : Entity_Id;
+      Ref_Name   : String_Ptr;
+      Scope_Id   : Scope_Index;
+
+   --  Start of processing for Add_SPARK_Xrefs
+
+   begin
+      for Index in SPARK_Scope_Table.First .. SPARK_Scope_Table.Last loop
+         declare
+            S : SPARK_Scope_Record renames SPARK_Scope_Table.Table (Index);
+         begin
+            Set_Scope_Num (S.Scope_Entity, S.Scope_Num);
+         end;
+      end loop;
+
+      --  Set up the pointer vector for the sort
+
+      for Index in 1 .. Nrefs loop
+         Rnums (Index) := Index;
+      end loop;
+
+      for Index in Drefs.First .. Drefs.Last loop
+         Xrefs.Append (Drefs.Table (Index));
+
+         Nrefs         := Nrefs + 1;
+         Rnums (Nrefs) := Xrefs.Last;
+      end loop;
+
+      --  Capture the definition Sloc values. As in the case of normal cross
+      --  references, we have to wait until now to get the correct value.
+
+      for Index in 1 .. Nrefs loop
+         Xrefs.Table (Index).Def := Sloc (Xrefs.Table (Index).Key.Ent);
+      end loop;
+
+      --  Eliminate entries not appropriate for SPARK. Done prior to sorting
+      --  cross-references, as it discards useless references which do not have
+      --  a proper format for the comparison function (like no location).
+
+      Ref_Count := Nrefs;
+      Nrefs     := 0;
+
+      for Index in 1 .. Ref_Count loop
+         declare
+            Ref : Xref_Key renames Xrefs.Table (Rnums (Index)).Key;
+
+         begin
+            if SPARK_Entities (Ekind (Ref.Ent))
+              and then SPARK_References (Ref.Typ)
+              and then Is_SPARK_Scope (Ref.Ent_Scope)
+              and then Is_SPARK_Scope (Ref.Ref_Scope)
+              and then not Is_Global_Constant (Ref.Ent)
+              and then Is_SPARK_Reference (Ref.Ent, Ref.Typ)
+
+              --  Discard references from unknown scopes, e.g. generic scopes
+
+              and then Get_Scope_Num (Ref.Ent_Scope) /= No_Scope
+              and then Get_Scope_Num (Ref.Ref_Scope) /= No_Scope
+            then
+               Nrefs         := Nrefs + 1;
+               Rnums (Nrefs) := Rnums (Index);
+            end if;
+         end;
+      end loop;
+
+      --  Sort the references
+
+      Sorting.Sort (Integer (Nrefs));
+
+      --  Eliminate duplicate entries
+
+      --  We need this test for Ref_Count because if we force ALI file
+      --  generation in case of errors detected, it may be the case that
+      --  Nrefs is 0, so we should not reset it here.
+
+      if Nrefs >= 2 then
+         Ref_Count := Nrefs;
+         Nrefs     := 1;
+
+         for Index in 2 .. Ref_Count loop
+            if Xrefs.Table (Rnums (Index)) /=
+               Xrefs.Table (Rnums (Nrefs))
+            then
+               Nrefs := Nrefs + 1;
+               Rnums (Nrefs) := Rnums (Index);
+            end if;
+         end loop;
+      end if;
+
+      --  Eliminate the reference if it is at the same location as the previous
+      --  one, unless it is a read-reference indicating that the entity is an
+      --  in-out actual in a call.
+
+      Ref_Count := Nrefs;
+      Nrefs     := 0;
+      Loc       := No_Location;
+      Prev_Typ  := 'm';
+
+      for Index in 1 .. Ref_Count loop
+         declare
+            Ref : Xref_Key renames Xrefs.Table (Rnums (Index)).Key;
+
+         begin
+            if Ref.Loc /= Loc
+              or else (Prev_Typ = 'm' and then Ref.Typ = 'r')
+            then
+               Loc           := Ref.Loc;
+               Prev_Typ      := Ref.Typ;
+               Nrefs         := Nrefs + 1;
+               Rnums (Nrefs) := Rnums (Index);
+            end if;
+         end;
+      end loop;
+
+      --  The two steps have eliminated all references, nothing to do
+
+      if SPARK_Scope_Table.Last = 0 then
+         return;
+      end if;
+
+      Ref_Id     := Empty;
+      Scope_Id   := 1;
+      From_Index := 1;
+
+      --  Loop to output references
+
+      for Refno in 1 .. Nrefs loop
+         declare
+            Ref_Entry : Xref_Entry renames Xrefs.Table (Rnums (Refno));
+            Ref       : Xref_Key   renames Ref_Entry.Key;
+
+         begin
+            --  If this assertion fails, the scope which we are looking for is
+            --  not in SPARK scope table, which reveals either a problem in the
+            --  construction of the scope table, or an erroneous scope for the
+            --  current cross-reference.
+
+            pragma Assert (Is_Future_Scope_Entity (Ref.Ent_Scope, Scope_Id));
+
+            --  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 Ref.Ent_Scope /= Entity_Of_Scope (Scope_Id) then
+               Update_Scope_Range
+                 (S    => Scope_Id,
+                  From => From_Index,
+                  To   => SPARK_Xref_Table.Last);
+
+               From_Index := SPARK_Xref_Table.Last + 1;
+            end if;
+
+            while Ref.Ent_Scope /= Entity_Of_Scope (Scope_Id) loop
+               Scope_Id := Scope_Id + 1;
+               pragma Assert (Scope_Id <= SPARK_Scope_Table.Last);
+            end loop;
+
+            if Ref.Ent /= Ref_Id then
+               Ref_Name := new String'(Unique_Name (Ref.Ent));
+            end if;
+
+            if Ref.Ent = Heap then
+               Line := 0;
+               Col  := 0;
+            else
+               Line := Int (Get_Logical_Line_Number (Ref_Entry.Def));
+               Col  := Int (Get_Column_Number (Ref_Entry.Def));
+            end if;
+
+            SPARK_Xref_Table.Append (
+              (Entity_Name => Ref_Name,
+               Entity_Line => Line,
+               Etype       => Get_Entity_Type (Ref.Ent),
+               Entity_Col  => Col,
+               File_Num    => Dependency_Num (Ref.Lun),
+               Scope_Num   => Get_Scope_Num (Ref.Ref_Scope),
+               Line        => Int (Get_Logical_Line_Number (Ref.Loc)),
+               Rtype       => Ref.Typ,
+               Col         => Int (Get_Column_Number (Ref.Loc))));
+         end;
+      end loop;
+
+      --  Update the range of cross references to which the scope refers to
+
+      Update_Scope_Range
+        (S    => Scope_Id,
+         From => From_Index,
+         To   => SPARK_Xref_Table.Last);
+   end Add_SPARK_Xrefs;
+
+   -------------------------
+   -- Collect_SPARK_Xrefs --
+   -------------------------
+
+   procedure Collect_SPARK_Xrefs
+     (Sdep_Table : Unit_Ref_Table;
+      Num_Sdep   : Nat)
+   is
+      D1 : Nat;
+      D2 : Nat;
+
+   begin
+      --  Cross-references should have been computed first
+
+      pragma Assert (Xrefs.Last /= 0);
+
+      Initialize_SPARK_Tables;
+
+      --  Generate file and scope SPARK cross-reference information
+
+      D1 := 1;
+      while D1 <= Num_Sdep loop
+
+         --  In rare cases, when treating the library-level instantiation of a
+         --  generic, two consecutive units refer to the same compilation unit
+         --  node and entity. In that case, treat them as a single unit for the
+         --  sake of SPARK cross references by passing to Add_SPARK_File.
+
+         if D1 < Num_Sdep
+           and then Cunit_Entity (Sdep_Table (D1)) =
+                    Cunit_Entity (Sdep_Table (D1 + 1))
+         then
+            D2 := D1 + 1;
+         else
+            D2 := D1;
+         end if;
+
+         Add_SPARK_File
+           (Ubody => Sdep_Table (D1),
+            Uspec => Sdep_Table (D2),
+            Dspec => D2);
+         D1 := D2 + 1;
+      end loop;
+
+      --  Fill in the spec information when relevant
+
+      declare
+         package Entity_Hash_Table is new
+           GNAT.HTable.Simple_HTable
+             (Header_Num => Entity_Hashed_Range,
+              Element    => Scope_Index,
+              No_Element => 0,
+              Key        => Entity_Id,
+              Hash       => Entity_Hash,
+              Equal      => "=");
+
+      begin
+         --  Fill in the hash-table
+
+         for S in SPARK_Scope_Table.First .. SPARK_Scope_Table.Last loop
+            declare
+               Srec : SPARK_Scope_Record renames SPARK_Scope_Table.Table (S);
+            begin
+               Entity_Hash_Table.Set (Srec.Scope_Entity, S);
+            end;
+         end loop;
+
+         --  Use the hash-table to locate spec entities
+
+         for S in SPARK_Scope_Table.First .. SPARK_Scope_Table.Last loop
+            declare
+               Srec : SPARK_Scope_Record renames SPARK_Scope_Table.Table (S);
+
+               Spec_Entity : constant Entity_Id :=
+                               Unique_Entity (Srec.Scope_Entity);
+               Spec_Scope  : constant Scope_Index :=
+                               Entity_Hash_Table.Get (Spec_Entity);
+
+            begin
+               --  Generic spec may be missing in which case Spec_Scope is zero
+
+               if Spec_Entity /= Srec.Scope_Entity
+                 and then Spec_Scope /= 0
+               then
+                  Srec.Spec_File_Num :=
+                    SPARK_Scope_Table.Table (Spec_Scope).File_Num;
+                  Srec.Spec_Scope_Num :=
+                    SPARK_Scope_Table.Table (Spec_Scope).Scope_Num;
+               end if;
+            end;
+         end loop;
+      end;
+
+      --  Generate SPARK cross-reference information
+
+      Add_SPARK_Xrefs;
+   end Collect_SPARK_Xrefs;
+
+   --------------------------------
+   -- Detect_And_Add_SPARK_Scope --
+   --------------------------------
+
+   procedure Detect_And_Add_SPARK_Scope (N : Node_Id) is
+   begin
+      if Nkind_In (N, N_Subprogram_Declaration,
+                      N_Subprogram_Body,
+                      N_Subprogram_Body_Stub,
+                      N_Package_Declaration,
+                      N_Package_Body)
+      then
+         Add_SPARK_Scope (N);
+      end if;
+   end Detect_And_Add_SPARK_Scope;
+
+   -------------------------------------
+   -- Enclosing_Subprogram_Or_Package --
+   -------------------------------------
+
+   function Enclosing_Subprogram_Or_Package (N : Node_Id) return Entity_Id is
+      Result : Entity_Id;
+
+   begin
+      --  If N is the defining identifier for a subprogram, then return the
+      --  enclosing subprogram or package, not this subprogram.
+
+      if Nkind_In (N, N_Defining_Identifier, N_Defining_Operator_Symbol)
+        and then Nkind (Parent (N)) in N_Subprogram_Specification
+      then
+         Result := Parent (Parent (Parent (N)));
+      else
+         Result := N;
+      end if;
+
+      while Present (Result) loop
+         case Nkind (Result) is
+            when N_Package_Specification =>
+               Result := Defining_Unit_Name (Result);
+               exit;
+
+            when N_Package_Body =>
+               Result := Defining_Unit_Name (Result);
+               exit;
+
+            when N_Subprogram_Specification =>
+               Result := Defining_Unit_Name (Result);
+               exit;
+
+            when N_Subprogram_Declaration =>
+               Result := Defining_Unit_Name (Specification (Result));
+               exit;
+
+            when N_Subprogram_Body =>
+               Result := Defining_Unit_Name (Specification (Result));
+               exit;
+
+            --  The enclosing subprogram for a pre- or postconditions should be
+            --  the subprogram to which the pragma is attached. This is not
+            --  always the case in the AST, as the pragma may be declared after
+            --  the declaration of the subprogram. Return Empty in this case.
+
+            when N_Pragma =>
+               if Get_Pragma_Id (Result) = Pragma_Precondition
+                    or else
+                  Get_Pragma_Id (Result) = Pragma_Postcondition
+               then
+                  return Empty;
+               else
+                  Result := Parent (Result);
+               end if;
+
+            when others =>
+               Result := Parent (Result);
+         end case;
+      end loop;
+
+      if Nkind (Result) = N_Defining_Program_Unit_Name then
+         Result := Defining_Identifier (Result);
+      end if;
+
+      --  Do not return a scope without a proper location
+
+      if Present (Result)
+        and then Sloc (Result) = No_Location
+      then
+         return Empty;
+      end if;
+
+      return Result;
+   end Enclosing_Subprogram_Or_Package;
+
+   -----------------
+   -- Entity_Hash --
+   -----------------
+
+   function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range is
+   begin
+      return
+        Entity_Hashed_Range (E mod (Entity_Id (Entity_Hashed_Range'Last) + 1));
+   end Entity_Hash;
+
+   --------------------------
+   -- Generate_Dereference --
+   --------------------------
+
+   procedure Generate_Dereference
+     (N   : Node_Id;
+      Typ : Character := 'r')
+   is
+      procedure Create_Heap;
+      --  Create and decorate the special entity which denotes the heap
+
+      -----------------
+      -- Create_Heap --
+      -----------------
+
+      procedure Create_Heap is
+      begin
+         Name_Len := Name_Of_Heap_Variable'Length;
+         Name_Buffer (1 .. Name_Len) := Name_Of_Heap_Variable;
+
+         Heap := Make_Defining_Identifier (Standard_Location, Name_Enter);
+
+         Set_Ekind       (Heap, E_Variable);
+         Set_Is_Internal (Heap, True);
+         Set_Has_Fully_Qualified_Name (Heap);
+      end Create_Heap;
+
+      --  Local variables
+
+      Loc       : constant Source_Ptr := Sloc (N);
+      Index     : Nat;
+      Ref_Scope : Entity_Id;
+
+   --  Start of processing for Generate_Dereference
+
+   begin
+
+      if Loc > No_Location then
+         Drefs.Increment_Last;
+         Index := Drefs.Last;
+
+         declare
+            Deref_Entry : Xref_Entry renames Drefs.Table (Index);
+            Deref       : Xref_Key   renames Deref_Entry.Key;
+
+         begin
+            if No (Heap) then
+               Create_Heap;
+            end if;
+
+            Ref_Scope := Enclosing_Subprogram_Or_Package (N);
+
+            Deref.Ent := Heap;
+            Deref.Loc := Loc;
+            Deref.Typ := Typ;
+
+            --  It is as if the special "Heap" was defined in every scope where
+            --  it is referenced.
+
+            Deref.Eun := Get_Code_Unit (Loc);
+            Deref.Lun := Get_Code_Unit (Loc);
+
+            Deref.Ref_Scope := Ref_Scope;
+            Deref.Ent_Scope := Ref_Scope;
+
+            Deref_Entry.Def := No_Location;
+
+            Deref_Entry.Ent_Scope_File := Get_Code_Unit (N);
+         end;
+      end if;
+   end Generate_Dereference;
+
+   ------------------------------------
+   -- Traverse_All_Compilation_Units --
+   ------------------------------------
+
+   procedure Traverse_All_Compilation_Units (Process : Node_Processing) is
+   begin
+      for U in Units.First .. Last_Unit loop
+         Traverse_Compilation_Unit (Cunit (U), Process, Inside_Stubs => False);
+      end loop;
+   end Traverse_All_Compilation_Units;
+
+   -------------------------------
+   -- Traverse_Compilation_Unit --
+   -------------------------------
+
+   procedure Traverse_Compilation_Unit
+     (CU           : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean)
+   is
+      Lu : Node_Id;
+
+   begin
+      --  Get Unit (checking case of subunit)
+
+      Lu := Unit (CU);
+
+      if Nkind (Lu) = N_Subunit then
+         Lu := Proper_Body (Lu);
+      end if;
+
+      --  Do not add scopes for generic units
+
+      if Nkind (Lu) = N_Package_Body
+        and then Ekind (Corresponding_Spec (Lu)) in Generic_Unit_Kind
+      then
+         return;
+      end if;
+
+      --  Call Process on all declarations
+
+      if Nkind (Lu) in N_Declaration
+        or else Nkind (Lu) in N_Later_Decl_Item
+      then
+         Process (Lu);
+      end if;
+
+      --  Traverse the unit
+
+      if Nkind (Lu) = N_Subprogram_Body then
+         Traverse_Subprogram_Body (Lu, Process, Inside_Stubs);
+
+      elsif Nkind (Lu) = N_Subprogram_Declaration then
+         null;
+
+      elsif Nkind (Lu) = N_Package_Declaration then
+         Traverse_Package_Declaration (Lu, Process, Inside_Stubs);
+
+      elsif Nkind (Lu) = N_Package_Body then
+         Traverse_Package_Body (Lu, Process, Inside_Stubs);
+
+      --  All other cases of compilation units (e.g. renamings), are not
+      --  declarations, or else generic declarations which are ignored.
+
+      else
+         null;
+      end if;
+   end Traverse_Compilation_Unit;
+
+   -----------------------------------------
+   -- Traverse_Declarations_Or_Statements --
+   -----------------------------------------
+
+   procedure Traverse_Declarations_Or_Statements
+     (L            : List_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean)
+   is
+      N : Node_Id;
+
+   begin
+      --  Loop through statements or declarations
+
+      N := First (L);
+      while Present (N) loop
+         --  Call Process on all declarations
+
+         if Nkind (N) in N_Declaration
+              or else
+            Nkind (N) in N_Later_Decl_Item
+         then
+            Process (N);
+         end if;
+
+         case Nkind (N) is
+
+            --  Package declaration
+
+            when N_Package_Declaration =>
+               Traverse_Package_Declaration (N, Process, Inside_Stubs);
+
+            --  Package body
+
+            when N_Package_Body =>
+               if Ekind (Defining_Entity (N)) /= E_Generic_Package then
+                  Traverse_Package_Body (N, Process, Inside_Stubs);
+               end if;
+
+            when N_Package_Body_Stub =>
+               if Present (Library_Unit (N)) then
+                  declare
+                     Body_N : constant Node_Id := Get_Body_From_Stub (N);
+                  begin
+                     if Inside_Stubs
+                       and then
+                         Ekind (Defining_Entity (Body_N)) /= E_Generic_Package
+                     then
+                        Traverse_Package_Body (Body_N, Process, Inside_Stubs);
+                     end if;
+                  end;
+               end if;
+
+            --  Subprogram declaration
+
+            when N_Subprogram_Declaration =>
+               null;
+
+            --  Subprogram body
+
+            when N_Subprogram_Body =>
+               if not Is_Generic_Subprogram (Defining_Entity (N)) then
+                  Traverse_Subprogram_Body (N, Process, Inside_Stubs);
+               end if;
+
+            when N_Subprogram_Body_Stub =>
+               if Present (Library_Unit (N)) then
+                  declare
+                     Body_N : constant Node_Id := Get_Body_From_Stub (N);
+                  begin
+                     if Inside_Stubs
+                       and then
+                         not Is_Generic_Subprogram (Defining_Entity (Body_N))
+                     then
+                        Traverse_Subprogram_Body
+                          (Body_N, Process, Inside_Stubs);
+                     end if;
+                  end;
+               end if;
+
+            --  Block statement
+
+            when N_Block_Statement =>
+               Traverse_Declarations_Or_Statements
+                 (Declarations (N), Process, Inside_Stubs);
+               Traverse_Handled_Statement_Sequence
+                 (Handled_Statement_Sequence (N), Process, Inside_Stubs);
+
+            when N_If_Statement =>
+
+               --  Traverse the statements in the THEN part
+
+               Traverse_Declarations_Or_Statements
+                 (Then_Statements (N), Process, Inside_Stubs);
+
+               --  Loop through ELSIF parts if present
+
+               if Present (Elsif_Parts (N)) then
+                  declare
+                     Elif : Node_Id := First (Elsif_Parts (N));
+
+                  begin
+                     while Present (Elif) loop
+                        Traverse_Declarations_Or_Statements
+                          (Then_Statements (Elif), Process, Inside_Stubs);
+                        Next (Elif);
+                     end loop;
+                  end;
+               end if;
+
+               --  Finally traverse the ELSE statements if present
+
+               Traverse_Declarations_Or_Statements
+                 (Else_Statements (N), Process, Inside_Stubs);
+
+            --  Case statement
+
+            when N_Case_Statement =>
+
+               --  Process case branches
+
+               declare
+                  Alt : Node_Id;
+               begin
+                  Alt := First (Alternatives (N));
+                  while Present (Alt) loop
+                     Traverse_Declarations_Or_Statements
+                       (Statements (Alt), Process, Inside_Stubs);
+                     Next (Alt);
+                  end loop;
+               end;
+
+            --  Extended return statement
+
+            when N_Extended_Return_Statement =>
+               Traverse_Handled_Statement_Sequence
+                 (Handled_Statement_Sequence (N), Process, Inside_Stubs);
+
+            --  Loop
+
+            when N_Loop_Statement =>
+               Traverse_Declarations_Or_Statements
+                 (Statements (N), Process, Inside_Stubs);
+
+            --  Generic declarations are ignored
+
+            when others =>
+               null;
+         end case;
+
+         Next (N);
+      end loop;
+   end Traverse_Declarations_Or_Statements;
+
+   -----------------------------------------
+   -- Traverse_Handled_Statement_Sequence --
+   -----------------------------------------
+
+   procedure Traverse_Handled_Statement_Sequence
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean)
+   is
+      Handler : Node_Id;
+
+   begin
+      if Present (N) then
+         Traverse_Declarations_Or_Statements
+           (Statements (N), Process, Inside_Stubs);
+
+         if Present (Exception_Handlers (N)) then
+            Handler := First (Exception_Handlers (N));
+            while Present (Handler) loop
+               Traverse_Declarations_Or_Statements
+                 (Statements (Handler), Process, Inside_Stubs);
+               Next (Handler);
+            end loop;
+         end if;
+      end if;
+   end Traverse_Handled_Statement_Sequence;
+
+   ---------------------------
+   -- Traverse_Package_Body --
+   ---------------------------
+
+   procedure Traverse_Package_Body
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean) is
+   begin
+      Traverse_Declarations_Or_Statements
+        (Declarations (N), Process, Inside_Stubs);
+      Traverse_Handled_Statement_Sequence
+        (Handled_Statement_Sequence (N), Process, Inside_Stubs);
+   end Traverse_Package_Body;
+
+   ----------------------------------
+   -- Traverse_Package_Declaration --
+   ----------------------------------
+
+   procedure Traverse_Package_Declaration
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean)
+   is
+      Spec : constant Node_Id := Specification (N);
+   begin
+      Traverse_Declarations_Or_Statements
+        (Visible_Declarations (Spec), Process, Inside_Stubs);
+      Traverse_Declarations_Or_Statements
+        (Private_Declarations (Spec), Process, Inside_Stubs);
+   end Traverse_Package_Declaration;
+
+   ------------------------------
+   -- Traverse_Subprogram_Body --
+   ------------------------------
+
+   procedure Traverse_Subprogram_Body
+     (N            : Node_Id;
+      Process      : Node_Processing;
+      Inside_Stubs : Boolean)
+   is
+   begin
+      Traverse_Declarations_Or_Statements
+        (Declarations (N), Process, Inside_Stubs);
+      Traverse_Handled_Statement_Sequence
+        (Handled_Statement_Sequence (N), Process, Inside_Stubs);
+   end Traverse_Subprogram_Body;
+
+end SPARK_Specific;
index ba9221b2bd4cbb27548c509958f3a474a4efb604..8825f066f4ec59ba079a037de7fff3b1069730c1 100644 (file)
@@ -79,7 +79,7 @@ package body Lib.Xref is
       --  Unit number corresponding to Loc. Value is undefined and not
       --  referenced if Loc is set to No_Location.
 
-      --  The following components are only used for Alfa cross-references
+      --  The following components are only used for SPARK cross-references
 
       Ref_Scope : Entity_Id;
       --  Entity of the closest subprogram or package enclosing the reference
@@ -151,11 +151,11 @@ package body Lib.Xref is
      Hash       => Hash,
      Equal      => Equal);
 
-   ----------------------
-   -- Alfa Information --
-   ----------------------
+   -----------------------------
+   -- SPARK Xrefs Information --
+   -----------------------------
 
-   package body Alfa is separate;
+   package body SPARK_Specific is separate;
 
    ------------------------
    --  Local Subprograms --
@@ -632,10 +632,10 @@ package body Lib.Xref is
            or else (Typ = 'b' and then Is_Generic_Instance (E))
 
             --  Allow the generation of references to reads, writes and calls
-            --  in Alfa mode when the related context comes from an instance.
+            --  in SPARK mode when the related context comes from an instance.
 
            or else
-             (Alfa_Mode
+             (SPARK_Mode
                 and then In_Extended_Main_Code_Unit (N)
                 and then (Typ = 'm' or else Typ = 'r' or else Typ = 's'))
          then
@@ -885,12 +885,12 @@ package body Lib.Xref is
 
          --  Ignore references from within an instance. The only exceptions to
          --  this are default subprograms, for which we generate an implicit
-         --  reference and compilations in Alfa_Mode.
+         --  reference and compilations in SPARK mode.
 
          and then
            (Instantiation_Location (Sloc (N)) = No_Location
              or else Typ = 'i'
-             or else Alfa_Mode)
+             or else SPARK_Mode)
 
         --  Ignore dummy references
 
@@ -973,11 +973,11 @@ package body Lib.Xref is
             return;
          end if;
 
-         --  In Alfa mode, consider the underlying entity renamed instead of
+         --  In SPARK mode, consider the underlying entity renamed instead of
          --  the renaming, which is needed to compute a valid set of effects
          --  (reads, writes) for the enclosing subprogram.
 
-         if Alfa_Mode then
+         if SPARK_Mode then
             Ent := Get_Through_Renamings (Ent);
 
             --  If no enclosing object, then it could be a reference to any
@@ -987,10 +987,10 @@ package body Lib.Xref is
 
             if No (Ent) then
                if Actual_Typ = 'w' then
-                  Alfa.Generate_Dereference (Nod, 'r');
-                  Alfa.Generate_Dereference (Nod, 'w');
+                  SPARK_Specific.Generate_Dereference (Nod, 'r');
+                  SPARK_Specific.Generate_Dereference (Nod, 'w');
                else
-                  Alfa.Generate_Dereference (Nod, 'r');
+                  SPARK_Specific.Generate_Dereference (Nod, 'r');
                end if;
 
                return;
@@ -1006,14 +1006,14 @@ package body Lib.Xref is
             Actual_Typ := 'P';
          end if;
 
-         if Alfa_Mode then
+         if SPARK_Mode then
             Ref := Sloc (Nod);
             Def := Sloc (Ent);
 
-            Ref_Scope := Alfa.Enclosing_Subprogram_Or_Package (Nod);
-            Ent_Scope := Alfa.Enclosing_Subprogram_Or_Package (Ent);
+            Ref_Scope := SPARK_Specific.Enclosing_Subprogram_Or_Package (Nod);
+            Ent_Scope := SPARK_Specific.Enclosing_Subprogram_Or_Package (Ent);
 
-            --  Since we are reaching through renamings in Alfa mode, we may
+            --  Since we are reaching through renamings in SPARK mode, we may
             --  end up with standard constants. Ignore those.
 
             if Sloc (Ent_Scope) <= Standard_Location
index 00d72c12a050dbe3177237bb6087952a24098e36..cfb43d8b1dc59fb5a7e6d1b39ac6346ad8d07d5a 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1998-2012, Free Software Foundation, Inc.         --
+--          Copyright (C) 1998-2013, 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- --
@@ -26,9 +26,9 @@
 --  This package contains for collecting and outputting cross-reference
 --  information.
 
-with Einfo;    use Einfo;
-with Lib.Util; use Lib.Util;
-with Put_Alfa;
+with Einfo;           use Einfo;
+with Lib.Util;        use Lib.Util;
+with Put_SPARK_Xrefs;
 
 package Lib.Xref is
 
@@ -599,14 +599,14 @@ package Lib.Xref is
    --  Export at line 4, that its body is exported to C, and that the link name
    --  as given in the pragma is "here".
 
-   ----------------------
-   -- Alfa Information --
-   ----------------------
+   -----------------------------
+   -- SPARK Xrefs Information --
+   -----------------------------
 
-   --  This package defines procedures for collecting Alfa information and
-   --  printing in ALI files.
+   --  This package defines procedures for collecting SPARK cross-reference
+   --  information and printing in ALI files.
 
-   package Alfa is
+   package SPARK_Specific is
 
       function Enclosing_Subprogram_Or_Package (N : Node_Id) return Entity_Id;
       --  Return the closest enclosing subprogram of package
@@ -631,17 +631,19 @@ package Lib.Xref is
       --  Call Process on all declarations through all compilation units.
       --  Generic declarations are ignored.
 
-      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 Collect_SPARK_Xrefs
+        (Sdep_Table : Unit_Ref_Table;
+         Num_Sdep   : Nat);
+      --  Collect SPARK cross-reference information from library units (for
+      --  files and scopes) and from shared cross-references. Fill in the
+      --  tables in library package called SPARK_Xrefs.
 
-      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.
+      procedure Output_SPARK_Xrefs is new Put_SPARK_Xrefs;
+      --  Output SPARK cross-reference information to the ALI files, based on
+      --  the information collected in the tables in library package called
+      --  SPARK_Xrefs, and using routines in Lib.Util.
 
-   end Alfa;
+   end SPARK_Specific;
 
    -----------------
    -- Subprograms --
index 136fb5f2d7b882755347371964e276a97a7af8ab..1fc43cc203e299e4d79ed9611b60d46da1d4527a 100644 (file)
@@ -44,7 +44,7 @@ package body Opt is
 
    function Full_Expander_Active return Boolean is
    begin
-      return Expander_Active and not Alfa_Mode;
+      return Expander_Active and not SPARK_Mode;
    end Full_Expander_Active;
 
    ----------------------------------
index 90bc1c9f74fc7084194da40257cc4e4adaab9c99..06853648fd6a97a2be556ffc883dbd784ba749d9 100644 (file)
@@ -1929,7 +1929,7 @@ package Opt is
    --  really seems wrong for Errout to depend on Expander.
    --
    --  Note: for many purposes, it is more appropriate to test the flag
-   --  Full_Expander_Active, which also checks that Alfa mode is not active.
+   --  Full_Expander_Active, which also checks that SPARK mode is not active.
 
    Static_Dispatch_Tables : Boolean := True;
    --  This flag indicates if the backend supports generation of statically
@@ -1983,19 +1983,21 @@ package Opt is
    -- Modes for Formal Verification --
    -----------------------------------
 
-   Alfa_Mode : Boolean := False;
+   SPARK_Mode : Boolean := False;
    --  Specific compiling mode targeting formal verification through the
    --  generation of Why code for those parts of the input code that belong to
-   --  the Alfa subset of Ada. Set True by the gnat2why executable or by use
-   --  of the -gnatd.F debug switch.
+   --  the SPARK 2014 subset of Ada. Set True by the gnat2why executable or by
+   --  use of the -gnatd.F debug switch. Note that this is completely separate
+   --  from the SPARK restriction defined in GNAT to detect violations of a
+   --  subset of SPARK 2005 rules.
 
    Frame_Condition_Mode : Boolean := False;
-   --  Specific mode to be used in combination with Alfa_Mode. If set to
+   --  Specific mode to be used in combination with SPARK_Mode. If set to
    --  true, ALI files containing the frame conditions (global effects) are
    --  generated, and Why files are *not* generated. If not true, Why files
    --  are generated. Set by debug flag -gnatd.G.
 
-   Strict_Alfa_Mode : Boolean := False;
+   SPARK_Strict_Mode : Boolean := False;
    --  Interpret compiler permissions as strictly as possible. E.g. base ranges
    --  for integers are limited to the strict minimum with this option. Set by
    --  debug flag -gnatd.D.
@@ -2007,12 +2009,12 @@ package Opt is
 
    function Full_Expander_Active return Boolean;
    pragma Inline (Full_Expander_Active);
-   --  Returns the value of (Expander_Active and not Alfa_Mode). This "flag"
+   --  Returns the value of (Expander_Active and not SPARK_Mode). This "flag"
    --  indicates that expansion is fully active, that is, not in the reduced
-   --  mode for Alfa (True) or that expansion is either deactivated, or active
-   --  in the reduced mode for Alfa (False). For more information on full
+   --  mode for SPARK (True) or that expansion is either deactivated, or active
+   --  in the reduced mode for SPARK (False). For more information on full
    --  expansion, see package Expander. For more information on reduced
-   --  Alfa expansion, see package Exp_Alfa.
+   --  SPARK expansion, see package Exp_SPARK.
 
 private
 
diff --git a/gcc/ada/put_alfa.adb b/gcc/ada/put_alfa.adb
deleted file mode 100644 (file)
index f4715bf..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                             P U T _ A L F A                              --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---          Copyright (C) 2011-2012, 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
-with Alfa; use Alfa;
-
-procedure Put_Alfa is
-begin
-   --  Loop through entries in Alfa_File_Table
-
-   for J in 1 .. Alfa_File_Table.Last loop
-      declare
-         F     : Alfa_File_Record renames Alfa_File_Table.Table (J);
-         Start : Scope_Index;
-         Stop  : Scope_Index;
-
-      begin
-         Start := F.From_Scope;
-         Stop  := F.To_Scope;
-
-         Write_Info_Initiate ('F');
-         Write_Info_Char ('D');
-         Write_Info_Char (' ');
-         Write_Info_Nat (F.File_Num);
-         Write_Info_Char (' ');
-
-         for N in F.File_Name'Range loop
-            Write_Info_Char (F.File_Name (N));
-         end loop;
-
-         --  If file is a subunit, print the file name for the unit
-
-         if F.Unit_File_Name /= null then
-            Write_Info_Char (' ');
-            Write_Info_Char ('-');
-            Write_Info_Char ('>');
-            Write_Info_Char (' ');
-
-            for N in F.Unit_File_Name'Range loop
-               Write_Info_Char (F.Unit_File_Name (N));
-            end loop;
-         end if;
-
-         Write_Info_Terminate;
-
-         --  Loop through scope entries for this file
-
-         loop
-            exit when Start = Stop + 1;
-            pragma Assert (Start <= Stop);
-
-            declare
-               S : Alfa_Scope_Record renames Alfa_Scope_Table.Table (Start);
-
-            begin
-               Write_Info_Initiate ('F');
-               Write_Info_Char ('S');
-               Write_Info_Char (' ');
-               Write_Info_Char ('.');
-               Write_Info_Nat (S.Scope_Num);
-               Write_Info_Char (' ');
-               Write_Info_Nat (S.Line);
-               Write_Info_Char (S.Stype);
-               Write_Info_Nat (S.Col);
-               Write_Info_Char (' ');
-
-               pragma Assert (S.Scope_Name.all /= "");
-
-               for N in S.Scope_Name'Range loop
-                  Write_Info_Char (S.Scope_Name (N));
-               end loop;
-
-               if S.Spec_File_Num /= 0 then
-                  Write_Info_Char (' ');
-                  Write_Info_Char ('-');
-                  Write_Info_Char ('>');
-                  Write_Info_Char (' ');
-                  Write_Info_Nat (S.Spec_File_Num);
-                  Write_Info_Char ('.');
-                  Write_Info_Nat (S.Spec_Scope_Num);
-               end if;
-
-               Write_Info_Terminate;
-            end;
-
-            Start := Start + 1;
-         end loop;
-      end;
-   end loop;
-
-   --  Loop through entries in Alfa_File_Table
-
-   for J in 1 .. Alfa_File_Table.Last loop
-      declare
-         F           : Alfa_File_Record renames Alfa_File_Table.Table (J);
-         Start       : Scope_Index;
-         Stop        : Scope_Index;
-         File        : Nat;
-         Scope       : Nat;
-         Entity_Line : Nat;
-         Entity_Col  : Nat;
-
-      begin
-         Start := F.From_Scope;
-         Stop  := F.To_Scope;
-
-         --  Loop through scope entries for this file
-
-         loop
-            exit when Start = Stop + 1;
-            pragma Assert (Start <= Stop);
-
-            Output_One_Scope : declare
-               S : Alfa_Scope_Record renames Alfa_Scope_Table.Table (Start);
-
-               XStart : Xref_Index;
-               XStop  : Xref_Index;
-
-            begin
-               XStart := S.From_Xref;
-               XStop  := S.To_Xref;
-
-               if XStart > XStop then
-                  goto Continue;
-               end if;
-
-               Write_Info_Initiate ('F');
-               Write_Info_Char ('X');
-               Write_Info_Char (' ');
-               Write_Info_Nat (F.File_Num);
-               Write_Info_Char (' ');
-
-               for N in F.File_Name'Range loop
-                  Write_Info_Char (F.File_Name (N));
-               end loop;
-
-               Write_Info_Char (' ');
-               Write_Info_Char ('.');
-               Write_Info_Nat (S.Scope_Num);
-               Write_Info_Char (' ');
-
-               for N in S.Scope_Name'Range loop
-                  Write_Info_Char (S.Scope_Name (N));
-               end loop;
-
-               --  Default value of (0,0) is used for the special __HEAP
-               --  variable so use another default value.
-
-               Entity_Line := 0;
-               Entity_Col  := 1;
-
-               --  Loop through cross reference entries for this scope
-
-               loop
-                  exit when XStart = XStop + 1;
-                  pragma Assert (XStart <= XStop);
-
-                  Output_One_Xref : declare
-                     R : Alfa_Xref_Record renames
-                           Alfa_Xref_Table.Table (XStart);
-
-                  begin
-                     if R.Entity_Line /= Entity_Line
-                       or else R.Entity_Col /= Entity_Col
-                     then
-                        Write_Info_Terminate;
-
-                        Write_Info_Initiate ('F');
-                        Write_Info_Char (' ');
-                        Write_Info_Nat (R.Entity_Line);
-                        Write_Info_Char (R.Etype);
-                        Write_Info_Nat (R.Entity_Col);
-                        Write_Info_Char (' ');
-
-                        for N in R.Entity_Name'Range loop
-                           Write_Info_Char (R.Entity_Name (N));
-                        end loop;
-
-                        Entity_Line := R.Entity_Line;
-                        Entity_Col  := R.Entity_Col;
-                        File        := F.File_Num;
-                        Scope       := S.Scope_Num;
-                     end if;
-
-                     if Write_Info_Col > 72 then
-                        Write_Info_Terminate;
-                        Write_Info_Initiate ('.');
-                     end if;
-
-                     Write_Info_Char (' ');
-
-                     if R.File_Num /= File then
-                        Write_Info_Nat (R.File_Num);
-                        Write_Info_Char ('|');
-                        File  := R.File_Num;
-                        Scope := 0;
-                     end if;
-
-                     if R.Scope_Num /= Scope then
-                        Write_Info_Char ('.');
-                        Write_Info_Nat (R.Scope_Num);
-                        Write_Info_Char (':');
-                        Scope := R.Scope_Num;
-                     end if;
-
-                     Write_Info_Nat (R.Line);
-                     Write_Info_Char (R.Rtype);
-                     Write_Info_Nat (R.Col);
-                  end Output_One_Xref;
-
-                  XStart := XStart + 1;
-               end loop;
-
-               Write_Info_Terminate;
-            end Output_One_Scope;
-
-         <<Continue>>
-            Start := Start + 1;
-         end loop;
-      end;
-   end loop;
-end Put_Alfa;
diff --git a/gcc/ada/put_alfa.ads b/gcc/ada/put_alfa.ads
deleted file mode 100644 (file)
index aee4ec3..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT COMPILER COMPONENTS                         --
---                                                                          --
---                             P U T _ A L F A                              --
---                                                                          --
---                                 S p e c                                  --
---                                                                          --
---             Copyright (C) 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- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license.          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
---  This package contains the function used to read Alfa information from the
---  internal tables defined in package Alfa, and output text information for
---  the ALI file. The interface allows control over the destination of the
---  output, so that this routine can also be used for debugging purposes.
-
-with Types; use Types;
-
-generic
-   --  The following procedures are used to output text information. The
-   --  destination of the text information is thus under control of the
-   --  particular instantiation. In particular, this procedure is used to
-   --  write output to the ALI file, and also for debugging output.
-
-   with function Write_Info_Col return Positive is <>;
-   --  Return the column in which the next character will be written
-
-   with procedure Write_Info_Char (C : Character) is <>;
-   --  Output one character
-
-   with procedure Write_Info_Initiate (Key : Character) is <>;
-   --  Initiate write of new line to output file, the parameter is the
-   --  keyword character for the line.
-
-   with procedure Write_Info_Nat (N : Nat) is <>;
-   --  Write image of N to output file with no leading or trailing blanks
-
-   with procedure Write_Info_Terminate is <>;
-   --  Terminate current info line and output lines built in Info_Buffer
-
-procedure Put_Alfa;
---  Read information from Alfa tables (Alfa.Alfa_Xref_Table,
---  Alfa.Alfa_Scope_Table and Alfa.Alfa_File_Table) and output corresponding
---  information in ALI format using the Write_Info procedures.
diff --git a/gcc/ada/put_spark_xrefs.adb b/gcc/ada/put_spark_xrefs.adb
new file mode 100644 (file)
index 0000000..f200e21
--- /dev/null
@@ -0,0 +1,243 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                       P U T _ S P A R K _ X R E F S                      --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with SPARK_Xrefs; use SPARK_Xrefs;
+
+procedure Put_SPARK_Xrefs is
+begin
+   --  Loop through entries in SPARK_File_Table
+
+   for J in 1 .. SPARK_File_Table.Last loop
+      declare
+         F     : SPARK_File_Record renames SPARK_File_Table.Table (J);
+         Start : Scope_Index;
+         Stop  : Scope_Index;
+
+      begin
+         Start := F.From_Scope;
+         Stop  := F.To_Scope;
+
+         Write_Info_Initiate ('F');
+         Write_Info_Char ('D');
+         Write_Info_Char (' ');
+         Write_Info_Nat (F.File_Num);
+         Write_Info_Char (' ');
+
+         for N in F.File_Name'Range loop
+            Write_Info_Char (F.File_Name (N));
+         end loop;
+
+         --  If file is a subunit, print the file name for the unit
+
+         if F.Unit_File_Name /= null then
+            Write_Info_Char (' ');
+            Write_Info_Char ('-');
+            Write_Info_Char ('>');
+            Write_Info_Char (' ');
+
+            for N in F.Unit_File_Name'Range loop
+               Write_Info_Char (F.Unit_File_Name (N));
+            end loop;
+         end if;
+
+         Write_Info_Terminate;
+
+         --  Loop through scope entries for this file
+
+         loop
+            exit when Start = Stop + 1;
+            pragma Assert (Start <= Stop);
+
+            declare
+               S : SPARK_Scope_Record renames SPARK_Scope_Table.Table (Start);
+
+            begin
+               Write_Info_Initiate ('F');
+               Write_Info_Char ('S');
+               Write_Info_Char (' ');
+               Write_Info_Char ('.');
+               Write_Info_Nat (S.Scope_Num);
+               Write_Info_Char (' ');
+               Write_Info_Nat (S.Line);
+               Write_Info_Char (S.Stype);
+               Write_Info_Nat (S.Col);
+               Write_Info_Char (' ');
+
+               pragma Assert (S.Scope_Name.all /= "");
+
+               for N in S.Scope_Name'Range loop
+                  Write_Info_Char (S.Scope_Name (N));
+               end loop;
+
+               if S.Spec_File_Num /= 0 then
+                  Write_Info_Char (' ');
+                  Write_Info_Char ('-');
+                  Write_Info_Char ('>');
+                  Write_Info_Char (' ');
+                  Write_Info_Nat (S.Spec_File_Num);
+                  Write_Info_Char ('.');
+                  Write_Info_Nat (S.Spec_Scope_Num);
+               end if;
+
+               Write_Info_Terminate;
+            end;
+
+            Start := Start + 1;
+         end loop;
+      end;
+   end loop;
+
+   --  Loop through entries in SPARK_File_Table
+
+   for J in 1 .. SPARK_File_Table.Last loop
+      declare
+         F           : SPARK_File_Record renames SPARK_File_Table.Table (J);
+         Start       : Scope_Index;
+         Stop        : Scope_Index;
+         File        : Nat;
+         Scope       : Nat;
+         Entity_Line : Nat;
+         Entity_Col  : Nat;
+
+      begin
+         Start := F.From_Scope;
+         Stop  := F.To_Scope;
+
+         --  Loop through scope entries for this file
+
+         loop
+            exit when Start = Stop + 1;
+            pragma Assert (Start <= Stop);
+
+            Output_One_Scope : declare
+               S : SPARK_Scope_Record renames SPARK_Scope_Table.Table (Start);
+
+               XStart : Xref_Index;
+               XStop  : Xref_Index;
+
+            begin
+               XStart := S.From_Xref;
+               XStop  := S.To_Xref;
+
+               if XStart > XStop then
+                  goto Continue;
+               end if;
+
+               Write_Info_Initiate ('F');
+               Write_Info_Char ('X');
+               Write_Info_Char (' ');
+               Write_Info_Nat (F.File_Num);
+               Write_Info_Char (' ');
+
+               for N in F.File_Name'Range loop
+                  Write_Info_Char (F.File_Name (N));
+               end loop;
+
+               Write_Info_Char (' ');
+               Write_Info_Char ('.');
+               Write_Info_Nat (S.Scope_Num);
+               Write_Info_Char (' ');
+
+               for N in S.Scope_Name'Range loop
+                  Write_Info_Char (S.Scope_Name (N));
+               end loop;
+
+               --  Default value of (0,0) is used for the special __HEAP
+               --  variable so use another default value.
+
+               Entity_Line := 0;
+               Entity_Col  := 1;
+
+               --  Loop through cross reference entries for this scope
+
+               loop
+                  exit when XStart = XStop + 1;
+                  pragma Assert (XStart <= XStop);
+
+                  Output_One_Xref : declare
+                     R : SPARK_Xref_Record renames
+                           SPARK_Xref_Table.Table (XStart);
+
+                  begin
+                     if R.Entity_Line /= Entity_Line
+                       or else R.Entity_Col /= Entity_Col
+                     then
+                        Write_Info_Terminate;
+
+                        Write_Info_Initiate ('F');
+                        Write_Info_Char (' ');
+                        Write_Info_Nat (R.Entity_Line);
+                        Write_Info_Char (R.Etype);
+                        Write_Info_Nat (R.Entity_Col);
+                        Write_Info_Char (' ');
+
+                        for N in R.Entity_Name'Range loop
+                           Write_Info_Char (R.Entity_Name (N));
+                        end loop;
+
+                        Entity_Line := R.Entity_Line;
+                        Entity_Col  := R.Entity_Col;
+                        File        := F.File_Num;
+                        Scope       := S.Scope_Num;
+                     end if;
+
+                     if Write_Info_Col > 72 then
+                        Write_Info_Terminate;
+                        Write_Info_Initiate ('.');
+                     end if;
+
+                     Write_Info_Char (' ');
+
+                     if R.File_Num /= File then
+                        Write_Info_Nat (R.File_Num);
+                        Write_Info_Char ('|');
+                        File  := R.File_Num;
+                        Scope := 0;
+                     end if;
+
+                     if R.Scope_Num /= Scope then
+                        Write_Info_Char ('.');
+                        Write_Info_Nat (R.Scope_Num);
+                        Write_Info_Char (':');
+                        Scope := R.Scope_Num;
+                     end if;
+
+                     Write_Info_Nat (R.Line);
+                     Write_Info_Char (R.Rtype);
+                     Write_Info_Nat (R.Col);
+                  end Output_One_Xref;
+
+                  XStart := XStart + 1;
+               end loop;
+
+               Write_Info_Terminate;
+            end Output_One_Scope;
+
+         <<Continue>>
+            Start := Start + 1;
+         end loop;
+      end;
+   end loop;
+end Put_SPARK_Xrefs;
diff --git a/gcc/ada/put_spark_xrefs.ads b/gcc/ada/put_spark_xrefs.ads
new file mode 100644 (file)
index 0000000..fa0b81c
--- /dev/null
@@ -0,0 +1,59 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                       P U T _ S P A R K _ X R E F S                      --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This package contains the function used to read SPARK cross-reference
+--  information from the internal tables defined in package SPARK_Xrefs, and
+--  output text information for the ALI file. The interface allows control over
+--  the destination of the output, so that this routine can also be used for
+--  debugging purposes.
+
+with Types; use Types;
+
+generic
+   --  The following procedures are used to output text information. The
+   --  destination of the text information is thus under control of the
+   --  particular instantiation. In particular, this procedure is used to
+   --  write output to the ALI file, and also for debugging output.
+
+   with function Write_Info_Col return Positive is <>;
+   --  Return the column in which the next character will be written
+
+   with procedure Write_Info_Char (C : Character) is <>;
+   --  Output one character
+
+   with procedure Write_Info_Initiate (Key : Character) is <>;
+   --  Initiate write of new line to output file, the parameter is the
+   --  keyword character for the line.
+
+   with procedure Write_Info_Nat (N : Nat) is <>;
+   --  Write image of N to output file with no leading or trailing blanks
+
+   with procedure Write_Info_Terminate is <>;
+   --  Terminate current info line and output lines built in Info_Buffer
+
+procedure Put_SPARK_Xrefs;
+--  Read information from SPARK tables (SPARK_Xrefs.SPARK_Xref_Table,
+--  SPARK_Xrefs.SPARK_Scope_Table and SPARK_Xrefs.SPARK_File_Table) and output
+--  corresponding information in ALI format using the Write_Info procedures.
index 6502bb1df7a76b23f95ca7b663174d6e61700e36..2e5d2beb753985ed08999d3692f3903e88de05ed 100644 (file)
@@ -564,12 +564,12 @@ package body Restrict is
    begin
       Msg_Issued := False;
 
-      --  In CodePeer and Alfa mode, we do not want to check for any
+      --  In CodePeer and SPARK mode, we do not want to check for any
       --  restriction, or set additional restrictions other than those already
       --  set in gnat1drv.adb so that we have consistency between each
       --  compilation.
 
-      if CodePeer_Mode or Alfa_Mode then
+      if CodePeer_Mode or SPARK_Mode then
          return;
       end if;
 
index 58f98f5ab9a8d4ed4b4143dcbeafa92010bf4303..9d7d7b7e4b1e1fde770a04e3551462c530f8c6cd 100644 (file)
@@ -1678,9 +1678,10 @@ package body Sem_Aggr is
             --  unless the expression covers a single component, or the
             --  expander is inactive.
 
-            --  In Alfa mode, expressions that can perform side-effects will be
-            --  recognized by the gnat2why back-end, and the whole subprogram
-            --  will be ignored. So semantic analysis can be performed safely.
+            --  In SPARK mode, expressions that can perform side-effects will
+            --  be recognized by the gnat2why back-end, and the whole
+            --  subprogram will be ignored. So semantic analysis can be
+            --  performed safely.
 
             if Single_Elmt
               or else not Full_Expander_Active
index f7fccfb031b7bc7b2bfc7359b2eca8ab8b746c97..e5a5b05118aea8233b2f2e62ff66ab34db576e15 100644 (file)
@@ -4379,13 +4379,13 @@ package body Sem_Attr is
          --  enclosing subprogram. This is properly an expansion activity
          --  but it has to be performed now to prevent out-of-order issues.
 
-         --  This expansion is both harmful and not needed in Alfa mode, since
+         --  This expansion is both harmful and not needed in SPARK mode, since
          --  the formal verification backend relies on the types of nodes
          --  (hence is not robust w.r.t. a change to base type here), and does
          --  not suffer from the out-of-order issue described above. Thus, this
-         --  expansion is skipped in Alfa mode.
+         --  expansion is skipped in SPARK mode.
 
-         if not Is_Entity_Name (P) and then not Alfa_Mode then
+         if not Is_Entity_Name (P) and then not SPARK_Mode then
             P_Type := Base_Type (P_Type);
             Set_Etype (N, P_Type);
             Set_Etype (P, P_Type);
index ac53a767b0e3fe8dbc95d97e74173290ecab7045..da964c06672ffce4d1479707eedca4495df22e2a 100644 (file)
@@ -9833,10 +9833,10 @@ package body Sem_Ch3 is
 
                --  The side effect removal machinery may generate illegal Ada
                --  code to avoid the usage of access types and 'reference in
-               --  Alfa mode. Since this is legal code with respect to theorem
+               --  SPARK mode. Since this is legal code with respect to theorem
                --  proving, do not emit the error.
 
-               if Alfa_Mode
+               if SPARK_Mode
                  and then Nkind (Exp) = N_Function_Call
                  and then Nkind (Parent (Exp)) = N_Object_Declaration
                  and then not Comes_From_Source
@@ -11974,7 +11974,7 @@ package body Sem_Ch3 is
          --  which must not be reevaluated.
 
          --  The forced evaluation removes side effects from expressions,
-         --  which should occur also in Alfa mode. Otherwise, we end up with
+         --  which should occur also in SPARK mode. Otherwise, we end up with
          --  unexpected insertions of actions at places where this is not
          --  supposed to occur, e.g. on default parameters of a call.
 
@@ -18610,9 +18610,9 @@ package body Sem_Ch3 is
             --  duplication of the expression without forcing evaluation.
 
             --  The forced evaluation removes side effects from expressions,
-            --  which should occur also in Alfa mode. Otherwise, we end up with
-            --  unexpected insertions of actions at places where this is not
-            --  supposed to occur, e.g. on default parameters of a call.
+            --  which should occur also in SPARK mode. Otherwise, we end up
+            --  with unexpected insertions of actions at places where this is
+            --  not supposed to occur, e.g. on default parameters of a call.
 
             if Expander_Active then
                Force_Evaluation (Lo);
@@ -18725,7 +18725,7 @@ package body Sem_Ch3 is
       --  Case of other than an explicit N_Range node
 
       --  The forced evaluation removes side effects from expressions, which
-      --  should occur also in Alfa mode. Otherwise, we end up with unexpected
+      --  should occur also in SPARK mode. Otherwise, we end up with unexpected
       --  insertions of actions at places where this is not supposed to occur,
       --  e.g. on default parameters of a call.
 
@@ -20169,7 +20169,7 @@ package body Sem_Ch3 is
       --  subtype range. Keep Size, RM_Size and First_Rep_Item info, which
       --  should not be relied upon in formal verification.
 
-      if Strict_Alfa_Mode then
+      if SPARK_Strict_Mode then
          declare
             Sym_Hi_Val : Uint;
             Sym_Lo_Val : Uint;
index abdbf15891f6148e64ae072270cc334b1d84c887..e78ce33bff1b7c1a7b8b54348f375e35de1f5224 100644 (file)
@@ -1801,8 +1801,8 @@ package body Sem_Ch4 is
       --  In formal verification mode, keep track of all reads and writes
       --  through explicit dereferences.
 
-      if Alfa_Mode then
-         Alfa.Generate_Dereference (N);
+      if SPARK_Mode then
+         SPARK_Specific.Generate_Dereference (N);
       end if;
 
       Analyze (P);
@@ -4484,10 +4484,10 @@ package body Sem_Ch4 is
                      --  Emit appropriate message. Gigi will replace the
                      --  node subsequently with the appropriate Raise.
 
-                     --  In Alfa mode, this is made into an error to simplify
+                     --  In SPARK mode, this is made into an error to simplify
                      --  the processing of the formal verification backend.
 
-                     if Alfa_Mode then
+                     if SPARK_Mode then
                         Apply_Compile_Time_Constraint_Error
                           (N, "component not present in }",
                            CE_Discriminant_Check_Failed,
index 6f57730e1513f6590bd50bb8d2c91f4b523103c3..fbeffd84f787b8e468949fb0dbe1aadf2c5a6628 100644 (file)
@@ -1664,10 +1664,10 @@ package body Sem_Ch5 is
         and then (Nkind (Parent (N)) /= N_Quantified_Expression
                    or else Operating_Mode = Check_Semantics)
 
-        --  Do not perform this expansion in Alfa mode, since the formal
+        --  Do not perform this expansion in SPARK mode, since the formal
         --  verification directly deals with the source form of the iterator.
 
-        and then not Alfa_Mode
+        and then not SPARK_Mode
       then
          declare
             Id   : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name);
@@ -2682,7 +2682,7 @@ package body Sem_Ch5 is
       --  types the actual subtype of the components will only be determined
       --  when the cursor declaration is analyzed.
 
-      --  If the expander is not active, or in Alfa mode, then we want to
+      --  If the expander is not active, or in SPARK mode, then we want to
       --  analyze the loop body now even in the Ada 2012 iterator case, since
       --  the rewriting will not be done. Insert the loop variable in the
       --  current scope, if not done when analysing the iteration scheme.
index 385076b5693bc368152fd32dc60088fc489fc561..ce865bb5927b5573dd710b481c301a262421b2d4 100644 (file)
@@ -1147,7 +1147,7 @@ package body Sem_Ch6 is
          --  than inserted in the code, in order to facilitate a distinct
          --  treatment for them.
 
-         if not Alfa_Mode then
+         if not SPARK_Mode then
             Process_PPCs (N, Gen_Id, Body_Id);
          end if;
 
@@ -3090,7 +3090,7 @@ package body Sem_Ch6 is
       --  than inserted in the code, in order to facilitate a distinct
       --  treatment for them.
 
-      if not Alfa_Mode then
+      if not SPARK_Mode then
          Process_PPCs (N, Spec_Id, Body_Id);
       end if;
 
index 0f3d55db3da028f35c82571e225bf79ad05fac80..94ce100a7c5a2aa4bfbb6a3dbb4cc2474a79f902 100644 (file)
@@ -1353,13 +1353,13 @@ package body Sem_Eval is
             if Ekind (E) = E_Enumeration_Literal then
                return True;
 
-            --  In Alfa mode, the value of deferred constants should be ignored
-            --  outside the scope of their full view. This allows parameterized
-            --  formal verification, in which a deferred constant value if not
-            --  known from client units.
+            --  In SPARK mode, the value of deferred constants should be
+            --  ignored outside the scope of their full view. This allows
+            --  parameterized formal verification, in which a deferred constant
+            --  value if not known from client units.
 
             elsif Ekind (E) = E_Constant
-              and then not (Alfa_Mode
+              and then not (SPARK_Mode
                              and then Present (Full_View (E))
                              and then not In_Open_Scopes (Scope (E)))
             then
index c89ca848743c9b4902e1fb2de8011bd3e6481f5e..f6ee33219e47c51b83bca6e2ebcd6f6a56df7107 100644 (file)
@@ -3664,7 +3664,7 @@ package body Sem_Prag is
             --  In formal verification mode, analyze pragma expression for
             --  correctness, as it is not expanded later.
 
-            if Alfa_Mode then
+            if SPARK_Mode then
                Analyze_PPC_In_Decl_Part
                  (N, Defining_Entity (Unit (Parent (Parent (N)))));
             end if;
@@ -7389,11 +7389,11 @@ package body Sem_Prag is
       --  Start of processing for Process_Suppress_Unsuppress
 
       begin
-         --  Ignore pragma Suppress/Unsuppress in CodePeer and Alfa modes on
+         --  Ignore pragma Suppress/Unsuppress in CodePeer and SPARK modes on
          --  user code: we want to generate checks for analysis purposes, as
          --  set respectively by -gnatC and -gnatd.F
 
-         if (CodePeer_Mode or Alfa_Mode) and then Comes_From_Source (N) then
+         if (CodePeer_Mode or SPARK_Mode) and then Comes_From_Source (N) then
             return;
          end if;
 
@@ -12602,11 +12602,11 @@ package body Sem_Prag is
             Check_Restriction (No_Initialize_Scalars, N);
 
             --  Initialize_Scalars creates false positives in CodePeer, and
-            --  incorrect negative results in Alfa mode, so ignore this pragma
+            --  incorrect negative results in SPARK mode, so ignore this pragma
             --  in these modes.
 
             if not Restriction_Active (No_Initialize_Scalars)
-              and then not (CodePeer_Mode or Alfa_Mode)
+              and then not (CodePeer_Mode or SPARK_Mode)
             then
                Init_Or_Norm_Scalars := True;
                Initialize_Scalars := True;
@@ -12637,10 +12637,10 @@ package body Sem_Prag is
          when Pragma_Inline_Always =>
             GNAT_Pragma;
 
-            --  Pragma always active unless in CodePeer or Alfa mode, since
+            --  Pragma always active unless in CodePeer or SPARK mode, since
             --  this causes walk order issues.
 
-            if not (CodePeer_Mode or Alfa_Mode) then
+            if not (CodePeer_Mode or SPARK_Mode) then
                Process_Inline (Enabled);
             end if;
 
@@ -14305,10 +14305,10 @@ package body Sem_Prag is
             Check_Valid_Configuration_Pragma;
 
             --  Normalize_Scalars creates false positives in CodePeer, and
-            --  incorrect negative results in Alfa mode, so ignore this pragma
+            --  incorrect negative results in SPARK mode, so ignore this pragma
             --  in these modes.
 
-            if not (CodePeer_Mode or Alfa_Mode) then
+            if not (CodePeer_Mode or SPARK_Mode) then
                Normalize_Scalars := True;
                Init_Or_Norm_Scalars := True;
             end if;
@@ -14760,7 +14760,7 @@ package body Sem_Prag is
                   --  complex front-end expansions related to pragma Pack,
                   --  so disable handling of pragma Pack in these cases.
 
-                  if CodePeer_Mode or Alfa_Mode then
+                  if CodePeer_Mode or SPARK_Mode then
                      null;
 
                   --  Don't attempt any packing for VM targets. We possibly
index 6a0f666e2802849515e6075bdee61161bd8f4aa1..6674d1fd8498dc7bbca0332fbc09969f5fb51355 100644 (file)
@@ -1666,16 +1666,16 @@ package body Sem_Res is
       --  and reexpanded later on. We will also have more information at that
       --  point for possible suppression of individual checks.
 
-      --  However, in Alfa mode, most expansion is suppressed, and this
-      --  later reanalysis and reexpansion may not occur. Alfa mode does
+      --  However, in SPARK mode, most expansion is suppressed, and this
+      --  later reanalysis and reexpansion may not occur. SPARK mode does
       --  require the setting of checking flags for proof purposes, so we
-      --  do the Alfa preanalysis without suppressing checks.
+      --  do the SPARK preanalysis without suppressing checks.
 
-      --  This special handling for Alfa mode is required for example in the
+      --  This special handling for SPARK mode is required for example in the
       --  case of Ada 2012 constructs such as quantified expressions, which are
       --  expanded in two separate steps.
 
-      if Alfa_Mode then
+      if SPARK_Mode then
          Analyze_And_Resolve (N, T);
       else
          Analyze_And_Resolve (N, T, Suppress => All_Checks);
@@ -4162,12 +4162,12 @@ package body Sem_Res is
 
             --  If it is a named association, treat the selector_name as a
             --  proper identifier, and mark the corresponding entity. Ignore
-            --  this reference in Alfa mode, as it refers to an entity not in
+            --  this reference in SPARK mode, as it refers to an entity not in
             --  scope at the point of reference, so the reference should be
             --  ignored for computing effects of subprograms.
 
             if Nkind (Parent (A)) = N_Parameter_Association
-              and then not Alfa_Mode
+              and then not SPARK_Mode
             then
                Set_Entity (Selector_Name (Parent (A)), F);
                Generate_Reference (F, Selector_Name (Parent (A)));
index 51c63debc614bb0ed4a07092482264961373cf4c..aca6ac2ede9fc9c884cfa2de7156f230bffe68fe 100644 (file)
@@ -12030,8 +12030,8 @@ package body Sem_Util is
                --  In formal verification mode, keep track of all reads and
                --  writes through explicit dereferences.
 
-               if Alfa_Mode then
-                  Alfa.Generate_Dereference (N, 'm');
+               if SPARK_Mode then
+                  SPARK_Specific.Generate_Dereference (N, 'm');
                end if;
 
                if Nkind (P) = N_Selected_Component
@@ -12127,7 +12127,7 @@ package body Sem_Util is
                --  source. This excludes, for example, calls to a dispatching
                --  assignment operation when the left-hand side is tagged.
 
-               if Modification_Comes_From_Source or else Alfa_Mode then
+               if Modification_Comes_From_Source or else SPARK_Mode then
                   Generate_Reference (Ent, Exp, 'm');
 
                   --  If the target of the assignment is the bound variable
diff --git a/gcc/ada/spark_xrefs.adb b/gcc/ada/spark_xrefs.adb
new file mode 100644 (file)
index 0000000..8049c7e
--- /dev/null
@@ -0,0 +1,203 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                           S P A R K _ X R E F S                          --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Output;          use Output;
+with Put_SPARK_Xrefs;
+
+package body SPARK_Xrefs is
+
+   ------------
+   -- dspark --
+   ------------
+
+   procedure dspark is
+   begin
+      --  Dump SPARK cross-reference file table
+
+      Write_Line ("SPARK Xrefs File Table");
+      Write_Line ("----------------------");
+
+      for Index in 1 .. SPARK_File_Table.Last loop
+         declare
+            AFR : SPARK_File_Record renames SPARK_File_Table.Table (Index);
+
+         begin
+            Write_Str ("  ");
+            Write_Int (Int (Index));
+            Write_Str (".  File_Num = ");
+            Write_Int (Int (AFR.File_Num));
+            Write_Str ("  File_Name = """);
+
+            if AFR.File_Name /= null then
+               Write_Str (AFR.File_Name.all);
+            end if;
+
+            Write_Char ('"');
+            Write_Str ("  From = ");
+            Write_Int (Int (AFR.From_Scope));
+            Write_Str ("  To = ");
+            Write_Int (Int (AFR.To_Scope));
+            Write_Eol;
+         end;
+      end loop;
+
+      --  Dump SPARK cross-reference scope table
+
+      Write_Eol;
+      Write_Line ("SPARK Xrefs Scope Table");
+      Write_Line ("-----------------------");
+
+      for Index in 1 .. SPARK_Scope_Table.Last loop
+         declare
+            ASR : SPARK_Scope_Record renames SPARK_Scope_Table.Table (Index);
+
+         begin
+            Write_Str ("  ");
+            Write_Int (Int (Index));
+            Write_Str (".  File_Num = ");
+            Write_Int (Int (ASR.File_Num));
+            Write_Str ("  Scope_Num = ");
+            Write_Int (Int (ASR.Scope_Num));
+            Write_Str ("  Scope_Name = """);
+
+            if ASR.Scope_Name /= null then
+               Write_Str (ASR.Scope_Name.all);
+            end if;
+
+            Write_Char ('"');
+            Write_Str  ("  Line = ");
+            Write_Int  (Int (ASR.Line));
+            Write_Str  ("  Col = ");
+            Write_Int  (Int (ASR.Col));
+            Write_Str  ("  Type = ");
+            Write_Char (ASR.Stype);
+            Write_Str  ("  From = ");
+            Write_Int  (Int (ASR.From_Xref));
+            Write_Str  ("  To = ");
+            Write_Int  (Int (ASR.To_Xref));
+            Write_Str  ("  Scope_Entity = ");
+            Write_Int  (Int (ASR.Scope_Entity));
+            Write_Eol;
+         end;
+      end loop;
+
+      --  Dump SPARK cross-reference table
+
+      Write_Eol;
+      Write_Line ("SPARK Xref Table");
+      Write_Line ("----------------");
+
+      for Index in 1 .. SPARK_Xref_Table.Last loop
+         declare
+            AXR : SPARK_Xref_Record renames SPARK_Xref_Table.Table (Index);
+
+         begin
+            Write_Str  ("  ");
+            Write_Int  (Int (Index));
+            Write_Str (".  Entity_Name = """);
+
+            if AXR.Entity_Name /= null then
+               Write_Str (AXR.Entity_Name.all);
+            end if;
+
+            Write_Char ('"');
+            Write_Str ("  Entity_Line = ");
+            Write_Int (Int (AXR.Entity_Line));
+            Write_Str ("  Entity_Col = ");
+            Write_Int (Int (AXR.Entity_Col));
+            Write_Str ("  File_Num = ");
+            Write_Int (Int (AXR.File_Num));
+            Write_Str ("  Scope_Num = ");
+            Write_Int (Int (AXR.Scope_Num));
+            Write_Str ("  Line = ");
+            Write_Int (Int (AXR.Line));
+            Write_Str ("  Col = ");
+            Write_Int (Int (AXR.Col));
+            Write_Str ("  Type = ");
+            Write_Char (AXR.Rtype);
+            Write_Eol;
+         end;
+      end loop;
+   end dspark;
+
+   ----------------
+   -- Initialize --
+   ----------------
+
+   procedure Initialize_SPARK_Tables is
+   begin
+      SPARK_File_Table.Init;
+      SPARK_Scope_Table.Init;
+      SPARK_Xref_Table.Init;
+   end Initialize_SPARK_Tables;
+
+   ------------
+   -- pspark --
+   ------------
+
+   procedure pspark is
+
+      procedure Write_Info_Char (C : Character) renames Write_Char;
+      --  Write one character;
+
+      function Write_Info_Col return Positive;
+      --  Return next column for writing
+
+      procedure Write_Info_Initiate (Key : Character) renames Write_Char;
+      --  Start new one and write one character;
+
+      procedure Write_Info_Nat (N : Nat);
+      --  Write value of N
+
+      procedure Write_Info_Terminate renames Write_Eol;
+      --  Terminate current line
+
+      --------------------
+      -- Write_Info_Col --
+      --------------------
+
+      function Write_Info_Col return Positive is
+      begin
+         return Positive (Column);
+      end Write_Info_Col;
+
+      --------------------
+      -- Write_Info_Nat --
+      --------------------
+
+      procedure Write_Info_Nat (N : Nat) is
+      begin
+         Write_Int (N);
+      end Write_Info_Nat;
+
+      procedure Debug_Put_SPARK_Xrefs is new Put_SPARK_Xrefs;
+
+   --  Start of processing for pspark
+
+   begin
+      Debug_Put_SPARK_Xrefs;
+   end pspark;
+
+end SPARK_Xrefs;
diff --git a/gcc/ada/spark_xrefs.ads b/gcc/ada/spark_xrefs.ads
new file mode 100644 (file)
index 0000000..2b0a708
--- /dev/null
@@ -0,0 +1,367 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                           S P A R K _ X R E F S                          --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This package defines tables used to store information needed for the SPARK
+--  mode. It is used by procedures in Lib.Xref.SPARK_Specific to build the
+--  SPARK specific cross-references information before writing it out to the
+--  ALI file, and by Get_SPARK_Xrefs/Put_SPARK_Xrefs to read and write the text
+--  form that is used in the ALI file.
+
+with Types;      use Types;
+with GNAT.Table;
+
+package SPARK_Xrefs is
+
+   --  SPARK cross-reference information can exist in one of two forms. In the
+   --  ALI file, it is represented using a text format that is described in
+   --  this specification.  Internally it is stored using three tables
+   --  SPARK_Xref_Table, SPARK_Scope_Table and SPARK_File_Table, which are also
+   --  defined in this unit.
+
+   --  Lib.Xref.SPARK_Specific is part of the compiler. It extracts SPARK
+   --  cross-reference information from the complete set of cross-references
+   --  generated during compilation.
+
+   --  Get_SPARK_Xrefs reads the text lines in ALI format and populates the
+   --  internal tables with corresponding information.
+
+   --  Put_SPARK_Xrefs reads the internal tables and generates text lines in
+   --  the ALI format.
+
+   ----------------------------
+   -- SPARK Xrefs ALI Format --
+   ----------------------------
+
+   --  SPARK cross-reference information is generated on a unit-by-unit basis
+   --  in the ALI file, using lines that start with the identifying character F
+   --  ("Formal").  These lines are generated if -gnatd.E or -gnatd.F (Why
+   --  generation mode) switches are set.
+
+   --  The SPARK cross-reference information comes after the shared
+   --  cross-reference information, so it needs not be read by tools like
+   --  gnatbind, gnatmake etc.
+
+   --  -------------------
+   --  -- Scope Section --
+   --  -------------------
+
+   --  A first section defines the scopes in which entities are defined and
+   --  referenced. A scope is a package/subprogram declaration/body. Note that
+   --  a package declaration and body define two different scopes. Similarly, a
+   --  subprogram declaration and body, when both present, define two different
+   --  scopes.
+
+   --    FD dependency-number filename (-> unit-filename)?
+
+   --      This header precedes scope information for the unit identified by
+   --      dependency number and file name. The dependency number is the index
+   --      into the generated D lines and is ones-origin (e.g. 2 = reference to
+   --      second generated D line).
+
+   --      The list of FD lines should match the list of D lines defined in the
+   --      ALI file, in the same order.
+
+   --      Note that the filename here will reflect the original name if a
+   --      Source_Reference pragma was encountered (since all line number
+   --      references will be with respect to the original file).
+
+   --      Note: the filename is redundant in that it could be deduced from the
+   --      corresponding D line, but it is convenient at least for human
+   --      reading of the SPARK cross-reference information, and means that
+   --      the SPARK cross-reference information can stand on its own without
+   --      needing other parts of the ALI file.
+
+   --      The optional unit filename is given only for subunits.
+
+   --    FS . scope line type col entity (-> spec-file . spec-scope)?
+
+   --      (The ? mark stands for an optional entry in the syntax)
+
+   --      scope is the ones-origin scope number for the current file (e.g. 2 =
+   --      reference to the second FS line in this FD block).
+
+   --      line is the line number of the scope entity. The name of the entity
+   --      starts in column col. Columns are numbered from one, and if
+   --      horizontal tab characters are present, the column number is computed
+   --      assuming standard 1,9,17,.. tab stops. For example, if the entity is
+   --      the first token on the line, and is preceded by space-HT-space, then
+   --      the column would be column 10.
+
+   --      type is a single letter identifying the type of the entity, using
+   --      the same code as in cross-references:
+
+   --        K = package
+   --        V = function
+   --        U = procedure
+
+   --      col is the column number of the scope entity
+
+   --      entity is the name of the scope entity, with casing in the canonical
+   --      casing for the source file where it is defined.
+
+   --      spec-file and spec-scope are respectively the file and scope for the
+   --      spec corresponding to the current body scope, when they differ.
+
+   --  ------------------
+   --  -- Xref Section --
+   --  ------------------
+
+   --  A second section defines cross-references useful for computing the set
+   --  of global variables read/written in each subprogram/package.
+
+   --    FX dependency-number filename . entity-number entity
+
+   --      dependency-number and filename identity a file in FD lines
+
+   --      entity-number and identity identify a scope entity in FS lines for
+   --      the file previously identified.
+
+   --    line typ col entity ref*
+
+   --      line is the line number of the referenced entity
+
+   --      typ is the type of the referenced entity, using a code similar to
+   --      the one used for cross-references:
+
+   --        > = IN parameter
+   --        < = OUT parameter
+   --        = = IN OUT parameter
+   --        * = all other cases
+
+   --      col is the column number of the referenced entity
+
+   --      entity is the name of the referenced entity as written in the source
+   --      file where it is defined.
+
+   --  There may be zero or more ref entries on each line
+
+   --    (file |)? ((. scope :)? line type col)*
+
+   --      file is the dependency number of the file with the reference. It and
+   --      the following vertical bar are omitted if the file is the same as
+   --      the previous ref, and the refs for the current file are first (and
+   --      do not need a bar).
+
+   --      scope is the scope number of the scope with the reference. It and
+   --      the following colon are omitted if the scope is the same as the
+   --      previous ref, and the refs for the current scope are first (and do
+   --      not need a colon).
+
+   --      line is the line number of the reference
+
+   --      col is the column number of the reference
+
+   --      type is one of the following, using the same code as in
+   --      cross-references:
+
+   --        m = modification
+   --        r = reference
+   --        s = subprogram reference in a static call
+
+   --  Special entries for reads and writes to memory reference a special
+   --  variable called "__HEAP". These special entries are present in every
+   --  scope where reads and writes to memory are present. Line and column for
+   --  this special variable are always 0.
+
+   --    Examples: ??? add examples here
+
+   ----------------
+   -- Xref Table --
+   ----------------
+
+   --  The following table records SPARK cross-references
+
+   type Xref_Index is new Int;
+   --  Used to index values in this table. Values start at 1 and are assigned
+   --  sequentially as entries are constructed.
+
+   type SPARK_Xref_Record is record
+      Entity_Name : String_Ptr;
+      --  Pointer to entity name in ALI file
+
+      Entity_Line : Nat;
+      --  Line number for the entity referenced
+
+      Etype : Character;
+      --  Indicates type of entity, using code used in ALI file:
+      --    > = IN parameter
+      --    < = OUT parameter
+      --    = = IN OUT parameter
+      --    * = all other cases
+
+      Entity_Col : Nat;
+      --  Column number for the entity referenced
+
+      File_Num : Nat;
+      --  Set to the file dependency number for the cross-reference. Note
+      --  that if no file entry is present explicitly, this is just a copy
+      --  of the reference for the current cross-reference section.
+
+      Scope_Num : Nat;
+      --  Set to the scope number for the cross-reference. Note that if no
+      --  scope entry is present explicitly, this is just a copy of the
+      --  reference for the current cross-reference section.
+
+      Line : Nat;
+      --  Line number for the reference
+
+      Rtype : Character;
+      --  Indicates type of reference, using code used in ALI file:
+      --    r = reference
+      --    m = modification
+      --    s = call
+
+      Col : Nat;
+      --  Column number for the reference
+   end record;
+
+   package SPARK_Xref_Table is new GNAT.Table (
+     Table_Component_Type => SPARK_Xref_Record,
+     Table_Index_Type     => Xref_Index,
+     Table_Low_Bound      => 1,
+     Table_Initial        => 2000,
+     Table_Increment      => 300);
+
+   -----------------
+   -- Scope Table --
+   -----------------
+
+   --  This table keeps track of the scopes and the corresponding starting and
+   --  ending indexes (From, To) in the Xref table.
+
+   type Scope_Index is new Int;
+   --  Used to index values in this table. Values start at 1 and are assigned
+   --  sequentially as entries are constructed.
+
+   type SPARK_Scope_Record is record
+      Scope_Name : String_Ptr;
+      --  Pointer to scope name in ALI file
+
+      File_Num : Nat;
+      --  Set to the file dependency number for the scope
+
+      Scope_Num : Nat;
+      --  Set to the scope number for the scope
+
+      Spec_File_Num : Nat;
+      --  Set to the file dependency number for the scope corresponding to the
+      --  spec of the current scope entity, if different, or else 0.
+
+      Spec_Scope_Num : Nat;
+      --  Set to the scope number for the scope corresponding to the spec of
+      --  the current scope entity, if different, or else 0.
+
+      Line : Nat;
+      --  Line number for the scope
+
+      Stype : Character;
+      --  Indicates type of scope, using code used in ALI file:
+      --    K = package
+      --    V = function
+      --    U = procedure
+
+      Col : Nat;
+      --  Column number for the scope
+
+      From_Xref : Xref_Index;
+      --  Starting index in Xref table for this scope
+
+      To_Xref : Xref_Index;
+      --  Ending index in Xref table for this scope
+
+      --  The following component is only used in-memory, not printed out in
+      --  ALI file.
+
+      Scope_Entity : Entity_Id := Empty;
+      --  Entity (subprogram or package) for the scope
+   end record;
+
+   package SPARK_Scope_Table is new GNAT.Table (
+     Table_Component_Type => SPARK_Scope_Record,
+     Table_Index_Type     => Scope_Index,
+     Table_Low_Bound      => 1,
+     Table_Initial        => 200,
+     Table_Increment      => 300);
+
+   ----------------
+   -- File Table --
+   ----------------
+
+   --  This table keeps track of the units and the corresponding starting and
+   --  ending indexes (From, To) in the Scope table.
+
+   type File_Index is new Int;
+   --  Used to index values in this table. Values start at 1 and are assigned
+   --  sequentially as entries are constructed.
+
+   type SPARK_File_Record is record
+      File_Name : String_Ptr;
+      --  Pointer to file name in ALI file
+
+      Unit_File_Name : String_Ptr;
+      --  Pointer to file name for unit in ALI file, when File_Name refers to a
+      --  subunit. Otherwise null.
+
+      File_Num : Nat;
+      --  Dependency number in ALI file
+
+      From_Scope : Scope_Index;
+      --  Starting index in Scope table for this unit
+
+      To_Scope : Scope_Index;
+      --  Ending index in Scope table for this unit
+   end record;
+
+   package SPARK_File_Table is new GNAT.Table (
+     Table_Component_Type => SPARK_File_Record,
+     Table_Index_Type     => File_Index,
+     Table_Low_Bound      => 1,
+     Table_Initial        => 20,
+     Table_Increment      => 200);
+
+   ---------------
+   -- Constants --
+   ---------------
+
+   Name_Of_Heap_Variable : constant String := "__HEAP";
+   --  Name of special variable used in effects to denote reads and writes
+   --  through explicit dereference.
+
+   -----------------
+   -- Subprograms --
+   -----------------
+
+   procedure Initialize_SPARK_Tables;
+   --  Reset tables for a new compilation
+
+   procedure dspark;
+   --  Debug routine to dump internal SPARK cross-reference tables. This is a
+   --  raw format dump showing exactly what the tables contain.
+
+   procedure pspark;
+   --  Debugging procedure to output contents of SPARK cross-reference binary
+   --  tables in the format in which they appear in an ALI file.
+
+end SPARK_Xrefs;
diff --git a/gcc/ada/spark_xrefs_test.adb b/gcc/ada/spark_xrefs_test.adb
new file mode 100644 (file)
index 0000000..6ad4de2
--- /dev/null
@@ -0,0 +1,321 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                          GNAT SYSTEM UTILITIES                           --
+--                                                                          --
+--                     S P A R K _ X R E F S _ T E S T                      --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 2011-2013, 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- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This utility program is used to test proper operation of the
+--  Get_SPARK_Xrefs and Put_SPARK_Xrefs units. To run it, compile any source
+--  file with switch -gnatd.E or -gnatd.F to get an ALI file file.ALI
+--  containing SPARK information. Then run this utility using:
+
+--     spark_xrefs_test file.ali
+
+--  This test will read the SPARK cross-reference information from the ALI
+--  file, and use Get_SPARK_Xrefs to store this in binary form in the internal
+--  tables in SPARK_Xrefs. Then Put_SPARK_Xrefs is used to write the
+--  information from these tables back into text form. This output is compared
+--  with the original SPARK cross-reference information in the ALI file and the
+--  two should be identical. If not an error message is output.
+
+with Get_SPARK_Xrefs;
+with Put_SPARK_Xrefs;
+
+with SPARK_Xrefs;           use SPARK_Xrefs;
+with Types;                 use Types;
+
+with Ada.Command_Line;      use Ada.Command_Line;
+with Ada.Streams;           use Ada.Streams;
+with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
+with Ada.Text_IO;
+
+with GNAT.OS_Lib;           use GNAT.OS_Lib;
+
+procedure SPARK_Xrefs_Test is
+   Infile    : File_Type;
+   Name1     : String_Access;
+   Outfile_1 : File_Type;
+   Name2     : String_Access;
+   Outfile_2 : File_Type;
+   C         : Character;
+
+   Stop : exception;
+   --  Terminate execution
+
+   Diff_Exec   : constant String_Access := Locate_Exec_On_Path ("diff");
+   Diff_Result : Integer;
+
+   use ASCII;
+
+begin
+   if Argument_Count /= 1 then
+      Ada.Text_IO.Put_Line ("Usage: spark_xrefs_test FILE.ali");
+      raise Stop;
+   end if;
+
+   Name1 := new String'(Argument (1) & ".1");
+   Name2 := new String'(Argument (1) & ".2");
+
+   Open   (Infile,    In_File,  Argument (1));
+   Create (Outfile_1, Out_File, Name1.all);
+   Create (Outfile_2, Out_File, Name2.all);
+
+   --  Read input file till we get to first 'F' line
+
+   Process : declare
+      Output_Col : Positive := 1;
+
+      function Get_Char (F : File_Type) return Character;
+      --  Read one character from specified  file
+
+      procedure Put_Char (F : File_Type; C : Character);
+      --  Write one character to specified file
+
+      function Get_Output_Col return Positive;
+      --  Return current column in output file, where each line starts at
+      --  column 1 and terminate with LF, and HT is at columns 1, 9, etc.
+      --  All output is supposed to be carried through Put_Char.
+
+      --------------
+      -- Get_Char --
+      --------------
+
+      function Get_Char (F : File_Type) return Character is
+         Item : Stream_Element_Array (1 .. 1);
+         Last : Stream_Element_Offset;
+
+      begin
+         Read (F, Item, Last);
+
+         if Last /= 1 then
+            return Types.EOF;
+         else
+            return Character'Val (Item (1));
+         end if;
+      end Get_Char;
+
+      --------------------
+      -- Get_Output_Col --
+      --------------------
+
+      function Get_Output_Col return Positive is
+      begin
+         return Output_Col;
+      end Get_Output_Col;
+
+      --------------
+      -- Put_Char --
+      --------------
+
+      procedure Put_Char (F : File_Type; C : Character) is
+         Item : Stream_Element_Array (1 .. 1);
+
+      begin
+         if C /= CR and then C /= EOF then
+            if C = LF then
+               Output_Col := 1;
+            elsif C = HT then
+               Output_Col := ((Output_Col + 6) / 8) * 8 + 1;
+            else
+               Output_Col := Output_Col + 1;
+            end if;
+
+            Item (1) := Character'Pos (C);
+            Write (F, Item);
+         end if;
+      end Put_Char;
+
+      --  Subprograms used by Get_SPARK_Xrefs (these also copy the output to
+      --  Outfile_1 for later comparison with the output generated by
+      --  Put_SPARK_Xrefs).
+
+      function  Getc  return Character;
+      function  Nextc return Character;
+      procedure Skipc;
+
+      ----------
+      -- Getc --
+      ----------
+
+      function Getc  return Character is
+         C : Character;
+      begin
+         C := Get_Char (Infile);
+         Put_Char (Outfile_1, C);
+         return C;
+      end Getc;
+
+      -----------
+      -- Nextc --
+      -----------
+
+      function Nextc return Character is
+         C : Character;
+
+      begin
+         C := Get_Char (Infile);
+
+         if C /= EOF then
+            Set_Index (Infile, Index (Infile) - 1);
+         end if;
+
+         return C;
+      end Nextc;
+
+      -----------
+      -- Skipc --
+      -----------
+
+      procedure Skipc is
+         C : Character;
+         pragma Unreferenced (C);
+      begin
+         C := Getc;
+      end Skipc;
+
+      --  Subprograms used by Put_SPARK_Xrefs, which write information to
+      --  Outfile_2.
+
+      function Write_Info_Col return Positive;
+      procedure Write_Info_Char (C : Character);
+      procedure Write_Info_Initiate (Key : Character);
+      procedure Write_Info_Nat (N : Nat);
+      procedure Write_Info_Terminate;
+
+      --------------------
+      -- Write_Info_Col --
+      --------------------
+
+      function Write_Info_Col return Positive is
+      begin
+         return Get_Output_Col;
+      end Write_Info_Col;
+
+      ---------------------
+      -- Write_Info_Char --
+      ---------------------
+
+      procedure Write_Info_Char (C : Character) is
+      begin
+         Put_Char (Outfile_2, C);
+      end Write_Info_Char;
+
+      -------------------------
+      -- Write_Info_Initiate --
+      -------------------------
+
+      procedure Write_Info_Initiate (Key : Character) is
+      begin
+         Write_Info_Char (Key);
+      end Write_Info_Initiate;
+
+      --------------------
+      -- Write_Info_Nat --
+      --------------------
+
+      procedure Write_Info_Nat (N : Nat) is
+      begin
+         if N > 9 then
+            Write_Info_Nat (N / 10);
+         end if;
+
+         Write_Info_Char (Character'Val (48 + N mod 10));
+      end Write_Info_Nat;
+
+      --------------------------
+      -- Write_Info_Terminate --
+      --------------------------
+
+      procedure Write_Info_Terminate is
+      begin
+         Write_Info_Char (LF);
+      end Write_Info_Terminate;
+
+      --  Local instantiations of Put_SPARK_Xrefs and Get_SPARK_Xrefs
+
+      procedure Get_SPARK_Xrefs_Info is new Get_SPARK_Xrefs;
+      procedure Put_SPARK_Xrefs_Info is new Put_SPARK_Xrefs;
+
+   --  Start of processing for Process
+
+   begin
+      --  Loop to skip till first 'F' line
+
+      loop
+         C := Get_Char (Infile);
+
+         if C = EOF then
+            raise Stop;
+
+         elsif C = LF or else C = CR then
+            loop
+               C := Get_Char (Infile);
+               exit when C /= LF and then C /= CR;
+            end loop;
+
+            exit when C = 'F';
+         end if;
+      end loop;
+
+      --  Position back to initial 'F' of first 'F' line
+
+      Set_Index (Infile, Index (Infile) - 1);
+
+      --  Read SPARK cross-reference information to internal SPARK tables, also
+      --  copying SPARK xrefs info to Outfile_1.
+
+      Initialize_SPARK_Tables;
+      Get_SPARK_Xrefs_Info;
+
+      --  Write SPARK cross-reference information from internal SPARK tables to
+      --  Outfile_2.
+
+      Put_SPARK_Xrefs_Info;
+
+      --  Junk blank line (see comment at end of Lib.Writ)
+
+      Write_Info_Terminate;
+
+      --  Flush to disk
+
+      Close (Outfile_1);
+      Close (Outfile_2);
+
+      --  Now Outfile_1 and Outfile_2 should be identical
+
+      Diff_Result :=
+        Spawn (Diff_Exec.all,
+               Argument_String_To_List
+                 ("-u " & Name1.all & " " & Name2.all).all);
+
+      if Diff_Result /= 0 then
+         Ada.Text_IO.Put_Line ("diff(1) exit status" & Diff_Result'Img);
+      end if;
+
+      OS_Exit (Diff_Result);
+
+   end Process;
+
+exception
+   when Stop =>
+      null;
+end SPARK_Xrefs_Test;