Patchwork [Ada] Add initial support for aspects

login
register
mail settings
Submitter Arnaud Charlet
Date Oct. 11, 2010, 9:04 a.m.
Message ID <20101011090447.GA7544@adacore.com>
Download mbox | patch
Permalink /patch/67394/
State New
Headers show

Comments

Arnaud Charlet - Oct. 11, 2010, 9:04 a.m.
This patch add initial support for Ada 2012 aspects, not enabled yet.
More changes will follow.

Tested on x86_64-pc-linux-gnu, committed on trunk

2010-10-11  Robert Dewar  <dewar@adacore.com>

	* snames.ads-tmpl: Add names for aspects.
	* aspects.ads, aspects.adb: New.
	* gcc-interface/Make-lang.in: Update dependencies.

Patch

Index: snames.ads-tmpl
===================================================================
--- snames.ads-tmpl	(revision 165256)
+++ snames.ads-tmpl	(working copy)
@@ -134,6 +134,14 @@  package Snames is
    Name_Space                          : constant Name_Id := N + $;
    Name_Time                           : constant Name_Id := N + $;
 
+   --  Names of aspects for which there are no matching pragmas or attributes
+   --  so that they need to be included for aspect specification use.
+
+   Name_Invariant                      : constant Name_Id := N + $;
+   Name_Post                           : constant Name_Id := N + $;
+   Name_Pre                            : constant Name_Id := N + $;
+   Name_Predicate                      : constant Name_Id := N + $;
+
    --  Some special names used by the expander. Note that the lower case u's
    --  at the start of these names get translated to extra underscores. These
    --  names are only referenced internally by expander generated code.
Index: aspects.ads
===================================================================
--- aspects.ads	(revision 0)
+++ aspects.ads	(revision 0)
@@ -0,0 +1,161 @@ 
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                              A S P E C T S                               --
+--                                                                          --
+--                                 S p e c                                  --
+--                                                                          --
+--            Copyright (C) 2010, 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.                                     --
+--                                                                          --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception,   --
+-- version 3.1, as published by the Free Software Foundation.               --
+--                                                                          --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+--  This package defines the aspects that are recognized in aspect
+--  specifications. We separate this off in its own packages to that
+--  it can be accessed by the parser without dragging in Sem_Asp
+
+with Namet; use Namet;
+
+package Aspects is
+
+   type Aspect_Id is
+     (No_Aspect,                            -- Dummy entry for no aspect
+      Aspect_Ada_2005,                      -- GNAT
+      Aspect_Ada_2012,                      -- GNAT
+      Aspect_Address,
+      Aspect_Aliased,
+      Aspect_Alignment,
+      Aspect_Atomic,
+      Aspect_Atomic_Components,
+      Aspect_Bit_Order,
+      Aspect_C_Pass_By_Copy,
+      Aspect_Component_Size,
+      Aspect_Discard_Names,
+      Aspect_External_Tag,
+      Aspect_Favor_Top_Level,               -- GNAT
+      Aspect_Inline,
+      Aspect_Inline_Always,                 -- GNAT
+      Aspect_Invariant,
+      Aspect_Machine_Radix,
+      Aspect_Object_Size,                   -- GNAT
+      Aspect_Pack,
+      Aspect_Persistent_BSS,                -- GNAT
+      Aspect_Post,
+      Aspect_Postcondition,                 -- GNAT (equivalent to Post)
+      Aspect_Pre,
+      Aspect_Precondition,                  -- GNAT (equivalent to Pre)
+      Aspect_Predicate,                     -- GNAT???
+      Aspect_Preelaborable_Initialization,
+      Aspect_Psect_Object,                  -- GNAT
+      Aspect_Pure_Function,                 -- GNAT
+      Aspect_Shared,                        -- GNAT (equivalent to Atomic)
+      Aspect_Size,
+      Aspect_Storage_Pool,
+      Aspect_Storage_Size,
+      Aspect_Stream_Size,
+      Aspect_Suppress,
+      Aspect_Suppress_Debug_Info,           -- GNAT
+      Aspect_Unchecked_Union,
+      Aspect_Universal_Aliasing,            -- GNAT
+      Aspect_Unmodified,                    -- GNAT
+      Aspect_Unreferenced,                  -- GNAT
+      Aspect_Unreferenced_Objects,          -- GNAT
+      Aspect_Unsuppress,
+      Aspect_Value_Size,                    -- GNAT
+      Aspect_Volatile,
+      Aspect_Volatile_Components,
+      Aspect_Warnings,                      -- GNAT
+      Aspect_Weak_External);                -- GNAT
+
+   --  The following array indicates aspects that accept 'Class
+
+   Class_Aspect_OK : constant array (Aspect_Id) of Boolean :=
+                       (Aspect_Invariant     => True,
+                        Aspect_Pre           => True,
+                        Aspect_Precondition  => True,
+                        Aspect_Post          => True,
+                        Aspect_Postcondition => True,
+                        others               => False);
+
+   --  The following type is used for indicating allowed expression forms
+
+   type Aspect_Expression is
+     (Optional,               -- Optional boolean expression
+      Expression,             -- Required non-boolean expression
+      Name);                  -- Required name
+
+   --  The following array indicates what argument type is required
+
+   Aspect_Argument : constant array (Aspect_Id) of Aspect_Expression :=
+                       (No_Aspect                           => Optional,
+                        Aspect_Ada_2005                     => Optional,
+                        Aspect_Ada_2012                     => Optional,
+                        Aspect_Address                      => Expression,
+                        Aspect_Aliased                      => Optional,
+                        Aspect_Alignment                    => Expression,
+                        Aspect_Atomic                       => Optional,
+                        Aspect_Atomic_Components            => Optional,
+                        Aspect_Bit_Order                    => Expression,
+                        Aspect_C_Pass_By_Copy               => Optional,
+                        Aspect_Component_Size               => Expression,
+                        Aspect_Discard_Names                => Optional,
+                        Aspect_External_Tag                 => Expression,
+                        Aspect_Favor_Top_Level              => Optional,
+                        Aspect_Inline                       => Optional,
+                        Aspect_Inline_Always                => Optional,
+                        Aspect_Invariant                    => Expression,
+                        Aspect_Machine_Radix                => Expression,
+                        Aspect_Object_Size                  => Expression,
+                        Aspect_Pack                         => Optional,
+                        Aspect_Persistent_BSS               => Optional,
+                        Aspect_Post                         => Expression,
+                        Aspect_Postcondition                => Expression,
+                        Aspect_Pre                          => Expression,
+                        Aspect_Precondition                 => Expression,
+                        Aspect_Predicate                    => Expression,
+                        Aspect_Preelaborable_Initialization => Optional,
+                        Aspect_Psect_Object                 => Optional,
+                        Aspect_Pure_Function                => Optional,
+                        Aspect_Shared                       => Optional,
+                        Aspect_Size                         => Expression,
+                        Aspect_Storage_Pool                 => Expression,
+                        Aspect_Storage_Size                 => Expression,
+                        Aspect_Stream_Size                  => Expression,
+                        Aspect_Suppress                     => Name,
+                        Aspect_Suppress_Debug_Info          => Optional,
+                        Aspect_Unchecked_Union              => Optional,
+                        Aspect_Universal_Aliasing           => Optional,
+                        Aspect_Unmodified                   => Optional,
+                        Aspect_Unreferenced                 => Optional,
+                        Aspect_Unreferenced_Objects         => Optional,
+                        Aspect_Unsuppress                   => Name,
+                        Aspect_Value_Size                   => Expression,
+                        Aspect_Volatile                     => Optional,
+                        Aspect_Volatile_Components          => Optional,
+                        Aspect_Warnings                     => Name,
+                        Aspect_Weak_External                => Optional);
+
+   function Get_Aspect_Id (Name : Name_Id) return Aspect_Id;
+   --  Given a name Nam, returns the corresponding aspect id value. If the name
+   --  does not match any aspect, then No_Aspect is returned as the result.
+
+end Aspects;

Property changes on: aspects.ads
___________________________________________________________________
Name: svn:executable
   + *

Index: aspects.adb
===================================================================
--- aspects.adb	(revision 0)
+++ aspects.adb	(revision 0)
@@ -0,0 +1,104 @@ 
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                              A S P E C T S                               --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--            Copyright (C) 2010, 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.                                     --
+--                                                                          --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception,   --
+-- version 3.1, as published by the Free Software Foundation.               --
+--                                                                          --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Snames; use Snames;
+
+package body Aspects is
+
+   type Aspect_Entry is record
+      Nam : Name_Id;
+      Asp : Aspect_Id;
+   end record;
+
+   Aspect_Names : constant array (Integer range <>) of Aspect_Entry := (
+     (Name_Ada_2005,                     Aspect_Ada_2005),
+     (Name_Ada_2012,                     Aspect_Ada_2012),
+     (Name_Address,                      Aspect_Address),
+     (Name_Aliased,                      Aspect_Aliased),
+     (Name_Alignment,                    Aspect_Alignment),
+     (Name_Atomic,                       Aspect_Atomic),
+     (Name_Atomic_Components,            Aspect_Atomic_Components),
+     (Name_Bit_Order,                    Aspect_Bit_Order),
+     (Name_C_Pass_By_Copy,               Aspect_C_Pass_By_Copy),
+     (Name_Component_Size,               Aspect_Component_Size),
+     (Name_Discard_Names,                Aspect_Discard_Names),
+     (Name_External_Tag,                 Aspect_External_Tag),
+     (Name_Favor_Top_Level,              Aspect_Favor_Top_Level),
+     (Name_Inline,                       Aspect_Inline),
+     (Name_Inline_Always,                Aspect_Inline_Always),
+     (Name_Invariant,                    Aspect_Invariant),
+     (Name_Machine_Radix,                Aspect_Machine_Radix),
+     (Name_Object_Size,                  Aspect_Object_Size),
+     (Name_Pack,                         Aspect_Pack),
+     (Name_Persistent_BSS,               Aspect_Persistent_BSS),
+     (Name_Post,                         Aspect_Post),
+     (Name_Postcondition,                Aspect_Postcondition),
+     (Name_Pre,                          Aspect_Pre),
+     (Name_Precondition,                 Aspect_Precondition),
+     (Name_Predicate,                    Aspect_Predicate),
+     (Name_Preelaborable_Initialization, Aspect_Preelaborable_Initialization),
+     (Name_Psect_Object,                 Aspect_Psect_Object),
+     (Name_Pure_Function,                Aspect_Pure_Function),
+     (Name_Shared,                       Aspect_Shared),
+     (Name_Size,                         Aspect_Size),
+     (Name_Storage_Pool,                 Aspect_Storage_Pool),
+     (Name_Storage_Size,                 Aspect_Storage_Size),
+     (Name_Stream_Size,                  Aspect_Stream_Size),
+     (Name_Suppress,                     Aspect_Suppress),
+     (Name_Suppress_Debug_Info,          Aspect_Suppress_Debug_Info),
+     (Name_Unchecked_Union,              Aspect_Unchecked_Union),
+     (Name_Universal_Aliasing,           Aspect_Universal_Aliasing),
+     (Name_Unmodified,                   Aspect_Unmodified),
+     (Name_Unreferenced,                 Aspect_Unreferenced),
+     (Name_Unreferenced_Objects,         Aspect_Unreferenced_Objects),
+     (Name_Unsuppress,                   Aspect_Unsuppress),
+     (Name_Value_Size,                   Aspect_Value_Size),
+     (Name_Volatile,                     Aspect_Volatile),
+     (Name_Volatile_Components,          Aspect_Volatile_Components),
+     (Name_Warnings,                     Aspect_Warnings),
+     (Name_Weak_External,                Aspect_Weak_External));
+
+   -------------------
+   -- Get_Aspect_Id --
+   -------------------
+
+   function Get_Aspect_Id (Name : Name_Id) return Aspect_Id is
+   begin
+      for J in Aspect_Names'Range loop
+         if Aspect_Names (J).Nam = Name then
+            return Aspect_Names (J).Asp;
+         end if;
+      end loop;
+
+      return No_Aspect;
+   end Get_Aspect_Id;
+
+end Aspects;

Property changes on: aspects.adb
___________________________________________________________________
Name: svn:executable
   + *

Index: gcc-interface/Make-lang.in
===================================================================
--- gcc-interface/Make-lang.in	(revision 165256)
+++ gcc-interface/Make-lang.in	(working copy)
@@ -126,6 +126,7 @@  GNAT_ADA_OBJS =	\
  ada/ada.o	\
  ada/ali.o	\
  ada/alloc.o	\
+ ada/aspects.o  \
  ada/atree.o	\
  ada/butil.o	\
  ada/casing.o	\
@@ -1346,15 +1347,24 @@  ada/ali.o : ada/ada.ads ada/a-except.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 \
+   ada/debug.ads ada/hostparm.ads ada/namet.ads ada/opt.ads ada/output.ads \
+   ada/snames.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/atree.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.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-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/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/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/back_end.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -1498,13 +1508,13 @@  ada/comperr.o : ada/ada.ads ada/a-except
    ada/nlists.adb 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/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/unchconv.ads \
-   ada/unchdeal.ads ada/urealp.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/treepr.ads ada/types.ads ada/uintp.ads \
+   ada/unchconv.ads ada/unchdeal.ads ada/urealp.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 \
@@ -1546,11 +1556,11 @@  ada/debug_a.o : ada/ada.ads ada/a-except
    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-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-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/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/atree.ads ada/atree.adb \
@@ -1881,32 +1891,32 @@  ada/exp_ch5.o : ada/ada.ads ada/a-except
    ada/casing.ads ada/checks.ads ada/checks.adb ada/csets.ads \
    ada/debug.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
    ada/err_vars.ads ada/errout.ads ada/erroutc.ads ada/eval_fat.ads \
-   ada/exp_aggr.ads ada/exp_atag.ads ada/exp_ch11.ads ada/exp_ch2.ads \
-   ada/exp_ch4.ads ada/exp_ch5.ads ada/exp_ch5.adb ada/exp_ch6.ads \
-   ada/exp_ch7.ads ada/exp_dbug.ads ada/exp_disp.ads ada/exp_pakd.ads \
-   ada/exp_tss.ads ada/exp_util.ads ada/exp_util.adb ada/fname.ads \
-   ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
-   ada/g-htable.ads ada/hostparm.ads ada/inline.ads ada/interfac.ads \
-   ada/itypes.ads ada/lib.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb \
-   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/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb \
-   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_res.ads \
-   ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb ada/sem_warn.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-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/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_aggr.ads ada/exp_ch11.ads ada/exp_ch2.ads ada/exp_ch4.ads \
+   ada/exp_ch5.ads ada/exp_ch5.adb ada/exp_ch6.ads ada/exp_ch7.ads \
+   ada/exp_dbug.ads ada/exp_disp.ads ada/exp_pakd.ads ada/exp_tss.ads \
+   ada/exp_util.ads ada/exp_util.adb ada/fname.ads ada/fname-uf.ads \
+   ada/freeze.ads ada/get_targ.ads ada/gnat.ads ada/g-htable.ads \
+   ada/hostparm.ads ada/inline.ads ada/interfac.ads ada/itypes.ads \
+   ada/lib.ads ada/lib-xref.ads ada/namet.ads ada/namet.adb 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/scans.ads ada/scn.ads ada/scng.ads ada/scng.adb 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_res.ads ada/sem_type.ads \
+   ada/sem_util.ads ada/sem_util.adb ada/sem_warn.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-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/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_ch6.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
    ada/a-uncdea.ads ada/alloc.ads ada/atree.ads ada/atree.adb \
@@ -2376,12 +2386,12 @@  ada/expander.o : ada/ada.ads ada/a-excep
    ada/nlists.adb ada/nmake.ads ada/opt.ads ada/output.ads ada/rtsfind.ads \
    ada/sem.ads ada/sem_ch8.ads ada/sem_util.ads ada/sinfo.ads \
    ada/sinfo.adb 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-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/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/tree_io.ads ada/types.ads ada/uintp.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 \
@@ -2811,10 +2821,10 @@  ada/nlists.o : ada/ada.ads ada/a-except.
    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-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/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/unchconv.ads ada/unchdeal.ads ada/urealp.ads 
 
 ada/nmake.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
@@ -2823,11 +2833,11 @@  ada/nmake.o : ada/ada.ads ada/a-except.a
    ada/namet.ads ada/nlists.ads ada/nlists.adb ada/nmake.ads ada/nmake.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-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-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/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 \
@@ -3190,11 +3200,11 @@  ada/scil_ll.o : ada/ada.ads ada/a-except
    ada/namet.ads ada/nlists.ads ada/nlists.adb ada/opt.ads ada/output.ads \
    ada/scil_ll.ads ada/scil_ll.adb ada/sinfo.ads ada/sinfo.adb \
    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/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/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/atree.ads ada/atree.adb ada/casing.ads ada/csets.ads \
@@ -3506,11 +3516,11 @@  ada/sem_ch2.o : ada/ada.ads ada/a-except
    ada/restrict.ads ada/rident.ads ada/sem_ch2.ads ada/sem_ch2.adb \
    ada/sem_ch8.ads ada/sinfo.ads ada/sinfo.adb ada/sinput.ads \
    ada/snames.ads ada/stand.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/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/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/atree.ads ada/atree.adb \
@@ -4126,11 +4136,11 @@  ada/sinfo.o : ada/ada.ads ada/a-except.a
    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/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/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/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/casing.ads ada/debug.ads \
@@ -4163,12 +4173,12 @@  ada/sinput-l.o : ada/ada.ads ada/a-excep
    ada/sinput-l.ads ada/sinput-l.adb ada/snames.ads ada/stringt.ads \
    ada/style.ads ada/styleg.ads ada/styleg.adb ada/stylesw.ads \
    ada/system.ads ada/s-crc32.ads ada/s-crc32.adb 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-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-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-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/atree.ads ada/atree.adb \
@@ -4176,12 +4186,12 @@  ada/sinput.o : ada/ada.ads ada/a-except.
    ada/interfac.ads ada/namet.ads ada/namet.adb ada/nlists.ads \
    ada/nlists.adb ada/opt.ads ada/output.ads ada/sinfo.ads ada/sinfo.adb \
    ada/sinput.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-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-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/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 \