2004-10-04 Jose Ruiz <ruiz@act-europe.fr>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 4 Oct 2004 14:51:17 +0000 (14:51 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 4 Oct 2004 14:51:17 +0000 (14:51 +0000)
* targparm.ads, targparm.adb (Targparm_Tags): Add PAS value
corresponding to the Preallocated_Stacks flags in System.
(Get_Target_Parameters): Including the processing for
Preallocated_Stacks.

* system.ads, system-vxworks-x86.ads, system-darwin-ppc.ads,
system-vms_64.ads, system-unixware.ads, system-linux-ia64.ads,
system-freebsd-x86.ads, system-lynxos-ppc.ads, system-lynxos-x86.ads,
system-linux-x86_64.ads, system-tru64.ads, system-aix.ads,
system-vxworks-sparcv9.ads, system-vxworks-xscale.ads,
system-solaris-x86.ads, system-irix-o32.ads, system-irix-n32.ads,
system-hpux.ads, system-vxworks-m68k.ads, system-linux-x86.ads,
system-vxworks-mips.ads, system-os2.ads, system-interix.ads,
system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
system-vxworks-alpha.ads: Add the flag Preallocated_Stacks, that is
used to signal whether the compiler creates the required stacks and
descriptors for the different tasks (when True) or it is done by the
underlying operating system at run time (when False).
It is initially set to False in all targets.

* exp_ch9.adb (Expand_N_Task_Type_Declaration): Create the task stack
if it is supported by the target.
(Make_Task_Create_Call): Pass the stack address if it has been
previously created. Otherwise pass a Null_Address.

* snames.adb: Add _stack.

* snames.ads: Add Name_uStack. Required to allow the expander to
statically allocated task stacks.

* s-tarest.ads, s-tarest.adb (Create_Restricted_Task): Add
Stack_Address argument.
Check that its value is equal to Null_Address because this target does
not support the static stack allocation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88488 138bc75d-0d04-0410-961f-82ee72b054a4

38 files changed:
gcc/ada/ChangeLog
gcc/ada/exp_ch9.adb
gcc/ada/s-tarest.adb
gcc/ada/s-tarest.ads
gcc/ada/snames.adb
gcc/ada/snames.ads
gcc/ada/system-aix.ads
gcc/ada/system-darwin-ppc.ads
gcc/ada/system-freebsd-x86.ads
gcc/ada/system-hpux.ads
gcc/ada/system-interix.ads
gcc/ada/system-irix-n32.ads
gcc/ada/system-irix-o32.ads
gcc/ada/system-linux-ia64.ads
gcc/ada/system-linux-x86.ads
gcc/ada/system-linux-x86_64.ads
gcc/ada/system-lynxos-ppc.ads
gcc/ada/system-lynxos-x86.ads
gcc/ada/system-mingw.ads
gcc/ada/system-os2.ads
gcc/ada/system-solaris-sparc.ads
gcc/ada/system-solaris-sparcv9.ads
gcc/ada/system-solaris-x86.ads
gcc/ada/system-tru64.ads
gcc/ada/system-unixware.ads
gcc/ada/system-vms-zcx.ads
gcc/ada/system-vms.ads
gcc/ada/system-vms_64.ads
gcc/ada/system-vxworks-alpha.ads
gcc/ada/system-vxworks-m68k.ads
gcc/ada/system-vxworks-mips.ads
gcc/ada/system-vxworks-ppc.ads
gcc/ada/system-vxworks-sparcv9.ads
gcc/ada/system-vxworks-x86.ads
gcc/ada/system-vxworks-xscale.ads
gcc/ada/system.ads
gcc/ada/targparm.adb
gcc/ada/targparm.ads

index d54f9d1..f34a3a4 100644 (file)
@@ -1,3 +1,41 @@
+2004-10-04  Jose Ruiz  <ruiz@act-europe.fr>
+
+       * targparm.ads, targparm.adb (Targparm_Tags): Add PAS value
+       corresponding to the Preallocated_Stacks flags in System.
+       (Get_Target_Parameters): Including the processing for
+       Preallocated_Stacks.
+
+       * system.ads, system-vxworks-x86.ads, system-darwin-ppc.ads, 
+       system-vms_64.ads, system-unixware.ads, system-linux-ia64.ads, 
+       system-freebsd-x86.ads, system-lynxos-ppc.ads, system-lynxos-x86.ads, 
+       system-linux-x86_64.ads, system-tru64.ads, system-aix.ads, 
+       system-vxworks-sparcv9.ads, system-vxworks-xscale.ads, 
+       system-solaris-x86.ads, system-irix-o32.ads, system-irix-n32.ads, 
+       system-hpux.ads, system-vxworks-m68k.ads, system-linux-x86.ads, 
+       system-vxworks-mips.ads, system-os2.ads, system-interix.ads, 
+       system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads, 
+       system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads, 
+       system-vxworks-alpha.ads: Add the flag Preallocated_Stacks, that is
+       used to signal whether the compiler creates the required stacks and
+       descriptors for the different tasks (when True) or it is done by the
+       underlying operating system at run time (when False).
+       It is initially set to False in all targets.
+
+       * exp_ch9.adb (Expand_N_Task_Type_Declaration): Create the task stack
+       if it is supported by the target.
+       (Make_Task_Create_Call): Pass the stack address if it has been
+       previously created. Otherwise pass a Null_Address.
+
+       * snames.adb: Add _stack.
+
+       * snames.ads: Add Name_uStack. Required to allow the expander to
+       statically allocated task stacks.
+
+       * s-tarest.ads, s-tarest.adb (Create_Restricted_Task): Add
+       Stack_Address argument.
+       Check that its value is equal to Null_Address because this target does
+       not support the static stack allocation.
+
 2004-10-04  Thomas Quinot  <quinot@act-europe.fr>
 
        * usage.adb: Change "pragma inline" to "pragma Inline" in information
index 1b07efa..133bf55 100644 (file)
@@ -55,10 +55,10 @@ with Sem_Util; use Sem_Util;
 with Sinfo;    use Sinfo;
 with Snames;   use Snames;
 with Stand;    use Stand;
+with Targparm; use Targparm;
 with Tbuild;   use Tbuild;
 with Types;    use Types;
 with Uintp;    use Uintp;
-with Opt;
 
 package body Exp_Ch9 is
 
@@ -7141,13 +7141,16 @@ package body Exp_Ch9 is
       Tasknm    : constant Name_Id    := Chars (Tasktyp);
       Taskdef   : constant Node_Id    := Task_Definition (N);
 
-      Proc_Spec : Node_Id;
-      Rec_Decl  : Node_Id;
-      Rec_Ent   : Entity_Id;
-      Cdecls    : List_Id;
-      Elab_Decl : Node_Id;
-      Size_Decl : Node_Id;
-      Body_Decl : Node_Id;
+      Proc_Spec  : Node_Id;
+      Rec_Decl   : Node_Id;
+      Rec_Ent    : Entity_Id;
+      Cdecls     : List_Id;
+      Elab_Decl  : Node_Id;
+      Size_Decl  : Node_Id;
+      Body_Decl  : Node_Id;
+      Task_Size  : Node_Id;
+      Ent_Stack  : Entity_Id;
+      Decl_Stack : Node_Id;
 
    begin
       --  If already expanded, nothing to do
@@ -7249,6 +7252,51 @@ package body Exp_Ch9 is
 
       end if;
 
+      --  Declare static stack (that is, created by the expander) if we
+      --  are using the Restricted run time on a bare board configuration.
+
+      if Restricted_Profile
+        and then Preallocated_Stacks_On_Target
+      then
+         --  First we need to extract the appropriate stack size
+
+         Ent_Stack := Make_Defining_Identifier (Loc, Name_uStack);
+
+         if Present (Taskdef) and then Has_Storage_Size_Pragma (Taskdef) then
+            Task_Size := Relocate_Node (
+              Expression (First (
+                Pragma_Argument_Associations (
+                  Find_Task_Or_Protected_Pragma
+                    (Taskdef, Name_Storage_Size)))));
+         else
+            Task_Size :=
+              New_Reference_To (RTE (RE_Default_Stack_Size), Loc);
+         end if;
+
+         Decl_Stack := Make_Component_Declaration (Loc,
+           Defining_Identifier  => Ent_Stack,
+
+           Component_Definition =>
+             Make_Component_Definition (Loc,
+               Aliased_Present     => True,
+               Subtype_Indication  => Make_Subtype_Indication (Loc,
+                 Subtype_Mark =>
+                   New_Occurrence_Of (RTE (RE_Storage_Array), Loc),
+
+                 Constraint   =>
+                   Make_Index_Or_Discriminant_Constraint (Loc,
+                     Constraints  => New_List (Make_Range (Loc,
+                       Low_Bound  => Make_Integer_Literal (Loc, 1),
+                       High_Bound => Convert_To (RTE (RE_Storage_Offset),
+                         Task_Size)))))));
+
+         Append_To (Cdecls, Decl_Stack);
+
+         --  The appropriate alignment for the stack is ensured by the
+         --  run-time code in charge of task creation.
+
+      end if;
+
       --  Add components for entry families
 
       Collect_Entry_Families (Loc, Cdecls, Size_Decl, Tasktyp);
@@ -8381,19 +8429,38 @@ package body Exp_Ch9 is
       --  Priority parameter. Set to Unspecified_Priority unless there is a
       --  priority pragma, in which case we take the value from the pragma.
 
-      if Present (Tdef)
-        and then Has_Priority_Pragma (Tdef)
-      then
+      if Present (Tdef) and then Has_Priority_Pragma (Tdef) then
          Append_To (Args,
            Make_Selected_Component (Loc,
              Prefix => Make_Identifier (Loc, Name_uInit),
              Selector_Name => Make_Identifier (Loc, Name_uPriority)));
-
       else
          Append_To (Args,
            New_Reference_To (RTE (RE_Unspecified_Priority), Loc));
       end if;
 
+      --  Optional Stack parameter
+
+      if Restricted_Profile then
+
+         --  If the stack has been preallocated by the expander then
+         --  pass its address. Otherwise, pass a null address.
+
+         if Preallocated_Stacks_On_Target then
+            Append_To (Args,
+              Make_Attribute_Reference (Loc,
+                Prefix         => Make_Selected_Component (Loc,
+                  Prefix        => Make_Identifier (Loc, Name_uInit),
+                  Selector_Name =>
+                    Make_Identifier (Loc, Name_uStack)),
+                Attribute_Name => Name_Address));
+
+         else
+            Append_To (Args,
+              New_Reference_To (RTE (RE_Null_Address), Loc));
+         end if;
+      end if;
+
       --  Size parameter. If no Storage_Size pragma is present, then
       --  the size is taken from the taskZ variable for the type, which
       --  is either Unspecified_Size, or has been reset by the use of
index 17c3ba6..93126f0 100644 (file)
@@ -376,6 +376,7 @@ package body System.Tasking.Restricted.Stages is
 
    procedure Create_Restricted_Task
      (Priority      : Integer;
+      Stack_Address : System.Address;
       Size          : System.Parameters.Size_Type;
       Task_Info     : System.Task_Info.Task_Info_Type;
       State         : Task_Procedure_Access;
@@ -390,6 +391,11 @@ package body System.Tasking.Restricted.Stages is
       Success       : Boolean;
 
    begin
+      --  Stack is not preallocated on this target, so that
+      --  Stack_Address must be null.
+
+      pragma Assert (Stack_Address = Null_Address);
+
       if Priority = Unspecified_Priority then
          Base_Priority := Self_ID.Common.Base_Priority;
       else
index b8ec7c7..f4aee5c 100644 (file)
@@ -129,6 +129,7 @@ package System.Tasking.Restricted.Stages is
 
    procedure Create_Restricted_Task
      (Priority      : Integer;
+      Stack_Address : System.Address;
       Size          : System.Parameters.Size_Type;
       Task_Info     : System.Task_Info.Task_Info_Type;
       State         : Task_Procedure_Access;
@@ -141,26 +142,39 @@ package System.Tasking.Restricted.Stages is
    --  This must be called to create a new task.
    --
    --  Priority is the task's priority (assumed to be in the
-   --   System.Any_Priority'Range)
+   --  System.Any_Priority'Range)
+   --
+   --  Stack_Address is the start address of the stack associated to the
+   --  task, in case it has been preallocated by the compiler; it is equal
+   --  to Null_Address when the stack needs to be allocated by the
+   --  underlying operating system.
+   --
    --  Size is the stack size of the task to create
+   --
    --  Task_Info is the task info associated with the created task, or
-   --   Unspecified_Task_Info if none.
+   --  Unspecified_Task_Info if none.
+   --
    --  State is the compiler generated task's procedure body
+   --
    --  Discriminants is a pointer to a limited record whose discriminants
-   --   are those of the task to create. This parameter should be passed as
-   --   the single argument to State.
+   --  are those of the task to create. This parameter should be passed as
+   --  the single argument to State.
+   --
    --  Elaborated is a pointer to a Boolean that must be set to true on exit
-   --   if the task could be sucessfully elaborated.
+   --  if the task could be sucessfully elaborated.
+   --
    --  Chain is a linked list of task that needs to be created. On exit,
-   --   Created_Task.Activation_Link will be Chain.T_ID, and Chain.T_ID
-   --   will be Created_Task (e.g the created task will be linked at the front
-   --   of Chain).
+   --  Created_Task.Activation_Link will be Chain.T_ID, and Chain.T_ID
+   --  will be Created_Task (e.g the created task will be linked at the front
+   --  of Chain).
+   --
    --  Task_Image is a string created by the compiler that the
-   --   run time can store to ease the debugging and the
-   --   Ada.Task_Identification facility.
+   --  run time can store to ease the debugging and the
+   --  Ada.Task_Identification facility.
+   --
    --  Created_Task is the resulting task.
    --
-   --  This procedure can raise Storage_Error if the task creation failed.
+   --  This procedure can raise Storage_Error if the task creation fails
 
    procedure Activate_Restricted_Tasks
      (Chain_Access : Activation_Chain_Access);
index 864c2de..1c9644c 100644 (file)
@@ -82,6 +82,7 @@ package body Snames is
      "_secondary_stack#" &
      "_service#" &
      "_size#" &
+     "_stack#" &
      "_tags#" &
      "_task#" &
      "_task_id#" &
index cb3b9d7..bd1f1ea 100644 (file)
@@ -165,133 +165,134 @@ package Snames is
    Name_uSecondary_Stack               : constant Name_Id := N + 022;
    Name_uService                       : constant Name_Id := N + 023;
    Name_uSize                          : constant Name_Id := N + 024;
-   Name_uTags                          : constant Name_Id := N + 025;
-   Name_uTask                          : constant Name_Id := N + 026;
-   Name_uTask_Id                       : constant Name_Id := N + 027;
-   Name_uTask_Info                     : constant Name_Id := N + 028;
-   Name_uTask_Name                     : constant Name_Id := N + 029;
-   Name_uTrace_Sp                      : constant Name_Id := N + 030;
+   Name_uStack                         : constant Name_Id := N + 025;
+   Name_uTags                          : constant Name_Id := N + 026;
+   Name_uTask                          : constant Name_Id := N + 027;
+   Name_uTask_Id                       : constant Name_Id := N + 028;
+   Name_uTask_Info                     : constant Name_Id := N + 029;
+   Name_uTask_Name                     : constant Name_Id := N + 030;
+   Name_uTrace_Sp                      : constant Name_Id := N + 031;
 
    --  Names of routines in Ada.Finalization, needed by expander
 
-   Name_Initialize                     : constant Name_Id := N + 031;
-   Name_Adjust                         : constant Name_Id := N + 032;
-   Name_Finalize                       : constant Name_Id := N + 033;
+   Name_Initialize                     : constant Name_Id := N + 032;
+   Name_Adjust                         : constant Name_Id := N + 033;
+   Name_Finalize                       : constant Name_Id := N + 034;
 
    --  Names of fields declared in System.Finalization_Implementation,
    --  needed by the expander when generating code for finalization.
 
-   Name_Next                           : constant Name_Id := N + 034;
-   Name_Prev                           : constant Name_Id := N + 035;
+   Name_Next                           : constant Name_Id := N + 035;
+   Name_Prev                           : constant Name_Id := N + 036;
 
    --  Names of TSS routines for implementation of DSA over PolyORB
 
-   Name_uTypeCode                      : constant Name_Id := N + 036;
-   Name_uFrom_Any                      : constant Name_Id := N + 037;
-   Name_uTo_Any                        : constant Name_Id := N + 038;
+   Name_uTypeCode                      : constant Name_Id := N + 037;
+   Name_uFrom_Any                      : constant Name_Id := N + 038;
+   Name_uTo_Any                        : constant Name_Id := N + 039;
 
    --  Names of allocation routines, also needed by expander
 
-   Name_Allocate                       : constant Name_Id := N + 039;
-   Name_Deallocate                     : constant Name_Id := N + 040;
-   Name_Dereference                    : constant Name_Id := N + 041;
+   Name_Allocate                       : constant Name_Id := N + 040;
+   Name_Deallocate                     : constant Name_Id := N + 041;
+   Name_Dereference                    : constant Name_Id := N + 042;
 
    --  Names of Text_IO generic subpackages (see Rtsfind.Text_IO_Kludge)
 
-   First_Text_IO_Package               : constant Name_Id := N + 042;
-   Name_Decimal_IO                     : constant Name_Id := N + 042;
-   Name_Enumeration_IO                 : constant Name_Id := N + 043;
-   Name_Fixed_IO                       : constant Name_Id := N + 044;
-   Name_Float_IO                       : constant Name_Id := N + 045;
-   Name_Integer_IO                     : constant Name_Id := N + 046;
-   Name_Modular_IO                     : constant Name_Id := N + 047;
-   Last_Text_IO_Package                : constant Name_Id := N + 047;
+   First_Text_IO_Package               : constant Name_Id := N + 043;
+   Name_Decimal_IO                     : constant Name_Id := N + 043;
+   Name_Enumeration_IO                 : constant Name_Id := N + 044;
+   Name_Fixed_IO                       : constant Name_Id := N + 045;
+   Name_Float_IO                       : constant Name_Id := N + 046;
+   Name_Integer_IO                     : constant Name_Id := N + 047;
+   Name_Modular_IO                     : constant Name_Id := N + 048;
+   Last_Text_IO_Package                : constant Name_Id := N + 048;
 
    subtype Text_IO_Package_Name is Name_Id
      range First_Text_IO_Package .. Last_Text_IO_Package;
 
    --  Names of files in library for Ada.Text_IO and Ada.Wide_Text_IO
 
-   Name_a_textio                       : constant Name_Id := N + 048;
-   Name_a_witeio                       : constant Name_Id := N + 049;
+   Name_a_textio                       : constant Name_Id := N + 049;
+   Name_a_witeio                       : constant Name_Id := N + 050;
 
    --  Some miscellaneous names used for error detection/recovery
 
-   Name_Const                          : constant Name_Id := N + 050;
-   Name_Error                          : constant Name_Id := N + 051;
-   Name_Go                             : constant Name_Id := N + 052;
-   Name_Put                            : constant Name_Id := N + 053;
-   Name_Put_Line                       : constant Name_Id := N + 054;
-   Name_To                             : constant Name_Id := N + 055;
+   Name_Const                          : constant Name_Id := N + 051;
+   Name_Error                          : constant Name_Id := N + 052;
+   Name_Go                             : constant Name_Id := N + 053;
+   Name_Put                            : constant Name_Id := N + 054;
+   Name_Put_Line                       : constant Name_Id := N + 055;
+   Name_To                             : constant Name_Id := N + 056;
 
    --  Names for packages that are treated specially by the compiler
 
-   Name_Finalization                   : constant Name_Id := N + 056;
-   Name_Finalization_Root              : constant Name_Id := N + 057;
-   Name_Interfaces                     : constant Name_Id := N + 058;
-   Name_Standard                       : constant Name_Id := N + 059;
-   Name_System                         : constant Name_Id := N + 060;
-   Name_Text_IO                        : constant Name_Id := N + 061;
-   Name_Wide_Text_IO                   : constant Name_Id := N + 062;
+   Name_Finalization                   : constant Name_Id := N + 057;
+   Name_Finalization_Root              : constant Name_Id := N + 058;
+   Name_Interfaces                     : constant Name_Id := N + 059;
+   Name_Standard                       : constant Name_Id := N + 060;
+   Name_System                         : constant Name_Id := N + 061;
+   Name_Text_IO                        : constant Name_Id := N + 062;
+   Name_Wide_Text_IO                   : constant Name_Id := N + 063;
 
    --  Names of implementations of the distributed systems annex
 
-   Name_No_DSA                         : constant Name_Id := N + 063;
-   Name_GLADE_DSA                      : constant Name_Id := N + 064;
-   Name_PolyORB_DSA                    : constant Name_Id := N + 065;
+   Name_No_DSA                         : constant Name_Id := N + 064;
+   Name_GLADE_DSA                      : constant Name_Id := N + 065;
+   Name_PolyORB_DSA                    : constant Name_Id := N + 066;
 
    --  Names of identifiers used in expanding distribution stubs
 
-   Name_Addr                           : constant Name_Id := N + 066;
-   Name_Async                          : constant Name_Id := N + 067;
-   Name_Get_Active_Partition_ID        : constant Name_Id := N + 068;
-   Name_Get_RCI_Package_Receiver       : constant Name_Id := N + 069;
-   Name_Get_RCI_Package_Ref            : constant Name_Id := N + 070;
-   Name_Origin                         : constant Name_Id := N + 071;
-   Name_Params                         : constant Name_Id := N + 072;
-   Name_Partition                      : constant Name_Id := N + 073;
-   Name_Partition_Interface            : constant Name_Id := N + 074;
-   Name_Ras                            : constant Name_Id := N + 075;
-   Name_Call                           : constant Name_Id := N + 076;
-   Name_RCI_Name                       : constant Name_Id := N + 077;
-   Name_Receiver                       : constant Name_Id := N + 078;
-   Name_Result                         : constant Name_Id := N + 079;
-   Name_Rpc                            : constant Name_Id := N + 080;
-   Name_Subp_Id                        : constant Name_Id := N + 081;
-   Name_Operation                      : constant Name_Id := N + 082;
-   Name_Argument                       : constant Name_Id := N + 083;
-   Name_Arg_Modes                      : constant Name_Id := N + 084;
-   Name_Handler                        : constant Name_Id := N + 085;
-   Name_Target                         : constant Name_Id := N + 086;
-   Name_Req                            : constant Name_Id := N + 087;
-   Name_Obj_TypeCode                   : constant Name_Id := N + 088;
-   Name_Stub                           : constant Name_Id := N + 089;
+   Name_Addr                           : constant Name_Id := N + 067;
+   Name_Async                          : constant Name_Id := N + 068;
+   Name_Get_Active_Partition_ID        : constant Name_Id := N + 069;
+   Name_Get_RCI_Package_Receiver       : constant Name_Id := N + 070;
+   Name_Get_RCI_Package_Ref            : constant Name_Id := N + 071;
+   Name_Origin                         : constant Name_Id := N + 072;
+   Name_Params                         : constant Name_Id := N + 073;
+   Name_Partition                      : constant Name_Id := N + 074;
+   Name_Partition_Interface            : constant Name_Id := N + 075;
+   Name_Ras                            : constant Name_Id := N + 076;
+   Name_Call                           : constant Name_Id := N + 077;
+   Name_RCI_Name                       : constant Name_Id := N + 078;
+   Name_Receiver                       : constant Name_Id := N + 079;
+   Name_Result                         : constant Name_Id := N + 080;
+   Name_Rpc                            : constant Name_Id := N + 081;
+   Name_Subp_Id                        : constant Name_Id := N + 082;
+   Name_Operation                      : constant Name_Id := N + 083;
+   Name_Argument                       : constant Name_Id := N + 084;
+   Name_Arg_Modes                      : constant Name_Id := N + 085;
+   Name_Handler                        : constant Name_Id := N + 086;
+   Name_Target                         : constant Name_Id := N + 087;
+   Name_Req                            : constant Name_Id := N + 088;
+   Name_Obj_TypeCode                   : constant Name_Id := N + 089;
+   Name_Stub                           : constant Name_Id := N + 090;
 
    --  Operator Symbol entries. The actual names have an upper case O at
    --  the start in place of the Op_ prefix (e.g. the actual name that
    --  corresponds to Name_Op_Abs is "Oabs".
 
-   First_Operator_Name                 : constant Name_Id := N + 090;
-   Name_Op_Abs                         : constant Name_Id := N + 090; -- "abs"
-   Name_Op_And                         : constant Name_Id := N + 091; -- "and"
-   Name_Op_Mod                         : constant Name_Id := N + 092; -- "mod"
-   Name_Op_Not                         : constant Name_Id := N + 093; -- "not"
-   Name_Op_Or                          : constant Name_Id := N + 094; -- "or"
-   Name_Op_Rem                         : constant Name_Id := N + 095; -- "rem"
-   Name_Op_Xor                         : constant Name_Id := N + 096; -- "xor"
-   Name_Op_Eq                          : constant Name_Id := N + 097; -- "="
-   Name_Op_Ne                          : constant Name_Id := N + 098; -- "/="
-   Name_Op_Lt                          : constant Name_Id := N + 099; -- "<"
-   Name_Op_Le                          : constant Name_Id := N + 100; -- "<="
-   Name_Op_Gt                          : constant Name_Id := N + 101; -- ">"
-   Name_Op_Ge                          : constant Name_Id := N + 102; -- ">="
-   Name_Op_Add                         : constant Name_Id := N + 103; -- "+"
-   Name_Op_Subtract                    : constant Name_Id := N + 104; -- "-"
-   Name_Op_Concat                      : constant Name_Id := N + 105; -- "&"
-   Name_Op_Multiply                    : constant Name_Id := N + 106; -- "*"
-   Name_Op_Divide                      : constant Name_Id := N + 107; -- "/"
-   Name_Op_Expon                       : constant Name_Id := N + 108; -- "**"
-   Last_Operator_Name                  : constant Name_Id := N + 108;
+   First_Operator_Name                 : constant Name_Id := N + 091;
+   Name_Op_Abs                         : constant Name_Id := N + 091; -- "abs"
+   Name_Op_And                         : constant Name_Id := N + 092; -- "and"
+   Name_Op_Mod                         : constant Name_Id := N + 093; -- "mod"
+   Name_Op_Not                         : constant Name_Id := N + 094; -- "not"
+   Name_Op_Or                          : constant Name_Id := N + 095; -- "or"
+   Name_Op_Rem                         : constant Name_Id := N + 096; -- "rem"
+   Name_Op_Xor                         : constant Name_Id := N + 097; -- "xor"
+   Name_Op_Eq                          : constant Name_Id := N + 098; -- "="
+   Name_Op_Ne                          : constant Name_Id := N + 099; -- "/="
+   Name_Op_Lt                          : constant Name_Id := N + 100; -- "<"
+   Name_Op_Le                          : constant Name_Id := N + 101; -- "<="
+   Name_Op_Gt                          : constant Name_Id := N + 102; -- ">"
+   Name_Op_Ge                          : constant Name_Id := N + 103; -- ">="
+   Name_Op_Add                         : constant Name_Id := N + 104; -- "+"
+   Name_Op_Subtract                    : constant Name_Id := N + 105; -- "-"
+   Name_Op_Concat                      : constant Name_Id := N + 106; -- "&"
+   Name_Op_Multiply                    : constant Name_Id := N + 107; -- "*"
+   Name_Op_Divide                      : constant Name_Id := N + 108; -- "/"
+   Name_Op_Expon                       : constant Name_Id := N + 109; -- "**"
+   Last_Operator_Name                  : constant Name_Id := N + 109;
 
    --  Names for all pragmas recognized by GNAT. The entries with the comment
    --  "Ada 83" are pragmas that are defined in Ada 83, but not in Ada 95.
@@ -314,64 +315,64 @@ package Snames is
    --  only in GNAT for the AAMP. They are ignored in other versions with
    --  appropriate warnings.
 
-   First_Pragma_Name                   : constant Name_Id := N + 109;
+   First_Pragma_Name                   : constant Name_Id := N + 110;
 
    --  Configuration pragmas are grouped at start
 
-   Name_Ada_83                         : constant Name_Id := N + 109; -- GNAT
-   Name_Ada_95                         : constant Name_Id := N + 110; -- GNAT
-   Name_Ada_05                         : constant Name_Id := N + 111; -- GNAT
-   Name_C_Pass_By_Copy                 : constant Name_Id := N + 112; -- GNAT
-   Name_Compile_Time_Warning           : constant Name_Id := N + 113; -- GNAT
-   Name_Component_Alignment            : constant Name_Id := N + 114; -- GNAT
-   Name_Convention_Identifier          : constant Name_Id := N + 115; -- GNAT
-   Name_Detect_Blocking                : constant Name_Id := N + 116; -- Ada05
-   Name_Discard_Names                  : constant Name_Id := N + 117;
-   Name_Elaboration_Checks             : constant Name_Id := N + 118; -- GNAT
-   Name_Eliminate                      : constant Name_Id := N + 119; -- GNAT
-   Name_Explicit_Overriding            : constant Name_Id := N + 120;
-   Name_Extend_System                  : constant Name_Id := N + 121; -- GNAT
-   Name_Extensions_Allowed             : constant Name_Id := N + 122; -- GNAT
-   Name_External_Name_Casing           : constant Name_Id := N + 123; -- GNAT
-   Name_Float_Representation           : constant Name_Id := N + 124; -- GNAT
-   Name_Initialize_Scalars             : constant Name_Id := N + 125; -- GNAT
-   Name_Interrupt_State                : constant Name_Id := N + 126; -- GNAT
-   Name_License                        : constant Name_Id := N + 127; -- GNAT
-   Name_Locking_Policy                 : constant Name_Id := N + 128;
-   Name_Long_Float                     : constant Name_Id := N + 129; -- VMS
-   Name_No_Run_Time                    : constant Name_Id := N + 130; -- GNAT
-   Name_No_Strict_Aliasing             : constant Name_Id := N + 131; -- GNAT
-   Name_Normalize_Scalars              : constant Name_Id := N + 132;
-   Name_Polling                        : constant Name_Id := N + 133; -- GNAT
-   Name_Persistent_Data                : constant Name_Id := N + 134; -- GNAT
-   Name_Persistent_Object              : constant Name_Id := N + 135; -- GNAT
-   Name_Profile                        : constant Name_Id := N + 136; -- Ada05
-   Name_Profile_Warnings               : constant Name_Id := N + 137; -- GNAT
-   Name_Propagate_Exceptions           : constant Name_Id := N + 138; -- GNAT
-   Name_Queuing_Policy                 : constant Name_Id := N + 139;
-   Name_Ravenscar                      : constant Name_Id := N + 140;
-   Name_Restricted_Run_Time            : constant Name_Id := N + 141;
-   Name_Restrictions                   : constant Name_Id := N + 142;
-   Name_Restriction_Warnings           : constant Name_Id := N + 143; -- GNAT
-   Name_Reviewable                     : constant Name_Id := N + 144;
-   Name_Source_File_Name               : constant Name_Id := N + 145; -- GNAT
-   Name_Source_File_Name_Project       : constant Name_Id := N + 146; -- GNAT
-   Name_Style_Checks                   : constant Name_Id := N + 147; -- GNAT
-   Name_Suppress                       : constant Name_Id := N + 148;
-   Name_Suppress_Exception_Locations   : constant Name_Id := N + 149; -- GNAT
-   Name_Task_Dispatching_Policy        : constant Name_Id := N + 150;
-   Name_Universal_Data                 : constant Name_Id := N + 151; -- AAMP
-   Name_Unsuppress                     : constant Name_Id := N + 152; -- GNAT
-   Name_Use_VADS_Size                  : constant Name_Id := N + 153; -- GNAT
-   Name_Validity_Checks                : constant Name_Id := N + 154; -- GNAT
-   Name_Warnings                       : constant Name_Id := N + 155; -- GNAT
-   Last_Configuration_Pragma_Name      : constant Name_Id := N + 155;
+   Name_Ada_83                         : constant Name_Id := N + 110; -- GNAT
+   Name_Ada_95                         : constant Name_Id := N + 111; -- GNAT
+   Name_Ada_05                         : constant Name_Id := N + 112; -- GNAT
+   Name_C_Pass_By_Copy                 : constant Name_Id := N + 113; -- GNAT
+   Name_Compile_Time_Warning           : constant Name_Id := N + 114; -- GNAT
+   Name_Component_Alignment            : constant Name_Id := N + 115; -- GNAT
+   Name_Convention_Identifier          : constant Name_Id := N + 116; -- GNAT
+   Name_Detect_Blocking                : constant Name_Id := N + 117; -- Ada05
+   Name_Discard_Names                  : constant Name_Id := N + 118;
+   Name_Elaboration_Checks             : constant Name_Id := N + 119; -- GNAT
+   Name_Eliminate                      : constant Name_Id := N + 120; -- GNAT
+   Name_Explicit_Overriding            : constant Name_Id := N + 121;
+   Name_Extend_System                  : constant Name_Id := N + 122; -- GNAT
+   Name_Extensions_Allowed             : constant Name_Id := N + 123; -- GNAT
+   Name_External_Name_Casing           : constant Name_Id := N + 124; -- GNAT
+   Name_Float_Representation           : constant Name_Id := N + 125; -- GNAT
+   Name_Initialize_Scalars             : constant Name_Id := N + 126; -- GNAT
+   Name_Interrupt_State                : constant Name_Id := N + 127; -- GNAT
+   Name_License                        : constant Name_Id := N + 128; -- GNAT
+   Name_Locking_Policy                 : constant Name_Id := N + 129;
+   Name_Long_Float                     : constant Name_Id := N + 130; -- VMS
+   Name_No_Run_Time                    : constant Name_Id := N + 131; -- GNAT
+   Name_No_Strict_Aliasing             : constant Name_Id := N + 132; -- GNAT
+   Name_Normalize_Scalars              : constant Name_Id := N + 133;
+   Name_Polling                        : constant Name_Id := N + 134; -- GNAT
+   Name_Persistent_Data                : constant Name_Id := N + 135; -- GNAT
+   Name_Persistent_Object              : constant Name_Id := N + 136; -- GNAT
+   Name_Profile                        : constant Name_Id := N + 137; -- Ada05
+   Name_Profile_Warnings               : constant Name_Id := N + 138; -- GNAT
+   Name_Propagate_Exceptions           : constant Name_Id := N + 139; -- GNAT
+   Name_Queuing_Policy                 : constant Name_Id := N + 140;
+   Name_Ravenscar                      : constant Name_Id := N + 141;
+   Name_Restricted_Run_Time            : constant Name_Id := N + 142;
+   Name_Restrictions                   : constant Name_Id := N + 143;
+   Name_Restriction_Warnings           : constant Name_Id := N + 144; -- GNAT
+   Name_Reviewable                     : constant Name_Id := N + 145;
+   Name_Source_File_Name               : constant Name_Id := N + 146; -- GNAT
+   Name_Source_File_Name_Project       : constant Name_Id := N + 147; -- GNAT
+   Name_Style_Checks                   : constant Name_Id := N + 148; -- GNAT
+   Name_Suppress                       : constant Name_Id := N + 149;
+   Name_Suppress_Exception_Locations   : constant Name_Id := N + 150; -- GNAT
+   Name_Task_Dispatching_Policy        : constant Name_Id := N + 151;
+   Name_Universal_Data                 : constant Name_Id := N + 152; -- AAMP
+   Name_Unsuppress                     : constant Name_Id := N + 153; -- GNAT
+   Name_Use_VADS_Size                  : constant Name_Id := N + 154; -- GNAT
+   Name_Validity_Checks                : constant Name_Id := N + 155; -- GNAT
+   Name_Warnings                       : constant Name_Id := N + 156; -- GNAT
+   Last_Configuration_Pragma_Name      : constant Name_Id := N + 156;
 
    --  Remaining pragma names
 
-   Name_Abort_Defer                    : constant Name_Id := N + 156; -- GNAT
-   Name_All_Calls_Remote               : constant Name_Id := N + 157;
-   Name_Annotate                       : constant Name_Id := N + 158; -- GNAT
+   Name_Abort_Defer                    : constant Name_Id := N + 157; -- GNAT
+   Name_All_Calls_Remote               : constant Name_Id := N + 158;
+   Name_Annotate                       : constant Name_Id := N + 159; -- GNAT
 
    --  Note: AST_Entry is not in this list because its name matches the
    --  name of the corresponding attribute. However, it is included in the
@@ -379,78 +380,78 @@ package Snames is
    --  and Check_Pragma_Id correctly recognize and process Name_AST_Entry.
    --  AST_Entry is a VMS specific pragma.
 
-   Name_Assert                         : constant Name_Id := N + 159; -- GNAT
-   Name_Asynchronous                   : constant Name_Id := N + 160;
-   Name_Atomic                         : constant Name_Id := N + 161;
-   Name_Atomic_Components              : constant Name_Id := N + 162;
-   Name_Attach_Handler                 : constant Name_Id := N + 163;
-   Name_Comment                        : constant Name_Id := N + 164; -- GNAT
-   Name_Common_Object                  : constant Name_Id := N + 165; -- GNAT
-   Name_Complex_Representation         : constant Name_Id := N + 166; -- GNAT
-   Name_Controlled                     : constant Name_Id := N + 167;
-   Name_Convention                     : constant Name_Id := N + 168;
-   Name_CPP_Class                      : constant Name_Id := N + 169; -- GNAT
-   Name_CPP_Constructor                : constant Name_Id := N + 170; -- GNAT
-   Name_CPP_Virtual                    : constant Name_Id := N + 171; -- GNAT
-   Name_CPP_Vtable                     : constant Name_Id := N + 172; -- GNAT
-   Name_Debug                          : constant Name_Id := N + 173; -- GNAT
-   Name_Elaborate                      : constant Name_Id := N + 174; -- Ada 83
-   Name_Elaborate_All                  : constant Name_Id := N + 175;
-   Name_Elaborate_Body                 : constant Name_Id := N + 176;
-   Name_Export                         : constant Name_Id := N + 177;
-   Name_Export_Exception               : constant Name_Id := N + 178; -- VMS
-   Name_Export_Function                : constant Name_Id := N + 179; -- GNAT
-   Name_Export_Object                  : constant Name_Id := N + 180; -- GNAT
-   Name_Export_Procedure               : constant Name_Id := N + 181; -- GNAT
-   Name_Export_Value                   : constant Name_Id := N + 182; -- GNAT
-   Name_Export_Valued_Procedure        : constant Name_Id := N + 183; -- GNAT
-   Name_External                       : constant Name_Id := N + 184; -- GNAT
-   Name_Finalize_Storage_Only          : constant Name_Id := N + 185; -- GNAT
-   Name_Ident                          : constant Name_Id := N + 186; -- VMS
-   Name_Import                         : constant Name_Id := N + 187;
-   Name_Import_Exception               : constant Name_Id := N + 188; -- VMS
-   Name_Import_Function                : constant Name_Id := N + 189; -- GNAT
-   Name_Import_Object                  : constant Name_Id := N + 190; -- GNAT
-   Name_Import_Procedure               : constant Name_Id := N + 191; -- GNAT
-   Name_Import_Valued_Procedure        : constant Name_Id := N + 192; -- GNAT
-   Name_Inline                         : constant Name_Id := N + 193;
-   Name_Inline_Always                  : constant Name_Id := N + 194; -- GNAT
-   Name_Inline_Generic                 : constant Name_Id := N + 195; -- GNAT
-   Name_Inspection_Point               : constant Name_Id := N + 196;
-   Name_Interface                      : constant Name_Id := N + 197; -- Ada 83
-   Name_Interface_Name                 : constant Name_Id := N + 198; -- GNAT
-   Name_Interrupt_Handler              : constant Name_Id := N + 199;
-   Name_Interrupt_Priority             : constant Name_Id := N + 200;
-   Name_Java_Constructor               : constant Name_Id := N + 201; -- GNAT
-   Name_Java_Interface                 : constant Name_Id := N + 202; -- GNAT
-   Name_Keep_Names                     : constant Name_Id := N + 203; -- GNAT
-   Name_Link_With                      : constant Name_Id := N + 204; -- GNAT
-   Name_Linker_Alias                   : constant Name_Id := N + 205; -- GNAT
-   Name_Linker_Options                 : constant Name_Id := N + 206;
-   Name_Linker_Section                 : constant Name_Id := N + 207; -- GNAT
-   Name_List                           : constant Name_Id := N + 208;
-   Name_Machine_Attribute              : constant Name_Id := N + 209; -- GNAT
-   Name_Main                           : constant Name_Id := N + 210; -- GNAT
-   Name_Main_Storage                   : constant Name_Id := N + 211; -- GNAT
-   Name_Memory_Size                    : constant Name_Id := N + 212; -- Ada 83
-   Name_No_Return                      : constant Name_Id := N + 213; -- GNAT
-   Name_Obsolescent                    : constant Name_Id := N + 214; -- GNAT
-   Name_Optimize                       : constant Name_Id := N + 215;
-   Name_Optional_Overriding            : constant Name_Id := N + 216;
-   Name_Overriding                     : constant Name_Id := N + 217;
-   Name_Pack                           : constant Name_Id := N + 218;
-   Name_Page                           : constant Name_Id := N + 219;
-   Name_Passive                        : constant Name_Id := N + 220; -- GNAT
-   Name_Preelaborate                   : constant Name_Id := N + 221;
-   Name_Priority                       : constant Name_Id := N + 222;
-   Name_Psect_Object                   : constant Name_Id := N + 223; -- VMS
-   Name_Pure                           : constant Name_Id := N + 224;
-   Name_Pure_Function                  : constant Name_Id := N + 225; -- GNAT
-   Name_Remote_Call_Interface          : constant Name_Id := N + 226;
-   Name_Remote_Types                   : constant Name_Id := N + 227;
-   Name_Share_Generic                  : constant Name_Id := N + 228; -- GNAT
-   Name_Shared                         : constant Name_Id := N + 229; -- Ada 83
-   Name_Shared_Passive                 : constant Name_Id := N + 230;
+   Name_Assert                         : constant Name_Id := N + 160; -- GNAT
+   Name_Asynchronous                   : constant Name_Id := N + 161;
+   Name_Atomic                         : constant Name_Id := N + 162;
+   Name_Atomic_Components              : constant Name_Id := N + 163;
+   Name_Attach_Handler                 : constant Name_Id := N + 164;
+   Name_Comment                        : constant Name_Id := N + 165; -- GNAT
+   Name_Common_Object                  : constant Name_Id := N + 166; -- GNAT
+   Name_Complex_Representation         : constant Name_Id := N + 167; -- GNAT
+   Name_Controlled                     : constant Name_Id := N + 168;
+   Name_Convention                     : constant Name_Id := N + 169;
+   Name_CPP_Class                      : constant Name_Id := N + 170; -- GNAT
+   Name_CPP_Constructor                : constant Name_Id := N + 171; -- GNAT
+   Name_CPP_Virtual                    : constant Name_Id := N + 172; -- GNAT
+   Name_CPP_Vtable                     : constant Name_Id := N + 173; -- GNAT
+   Name_Debug                          : constant Name_Id := N + 174; -- GNAT
+   Name_Elaborate                      : constant Name_Id := N + 175; -- Ada 83
+   Name_Elaborate_All                  : constant Name_Id := N + 176;
+   Name_Elaborate_Body                 : constant Name_Id := N + 177;
+   Name_Export                         : constant Name_Id := N + 178;
+   Name_Export_Exception               : constant Name_Id := N + 179; -- VMS
+   Name_Export_Function                : constant Name_Id := N + 180; -- GNAT
+   Name_Export_Object                  : constant Name_Id := N + 181; -- GNAT
+   Name_Export_Procedure               : constant Name_Id := N + 182; -- GNAT
+   Name_Export_Value                   : constant Name_Id := N + 183; -- GNAT
+   Name_Export_Valued_Procedure        : constant Name_Id := N + 184; -- GNAT
+   Name_External                       : constant Name_Id := N + 185; -- GNAT
+   Name_Finalize_Storage_Only          : constant Name_Id := N + 186; -- GNAT
+   Name_Ident                          : constant Name_Id := N + 187; -- VMS
+   Name_Import                         : constant Name_Id := N + 188;
+   Name_Import_Exception               : constant Name_Id := N + 189; -- VMS
+   Name_Import_Function                : constant Name_Id := N + 190; -- GNAT
+   Name_Import_Object                  : constant Name_Id := N + 191; -- GNAT
+   Name_Import_Procedure               : constant Name_Id := N + 192; -- GNAT
+   Name_Import_Valued_Procedure        : constant Name_Id := N + 193; -- GNAT
+   Name_Inline                         : constant Name_Id := N + 194;
+   Name_Inline_Always                  : constant Name_Id := N + 195; -- GNAT
+   Name_Inline_Generic                 : constant Name_Id := N + 196; -- GNAT
+   Name_Inspection_Point               : constant Name_Id := N + 197;
+   Name_Interface                      : constant Name_Id := N + 198; -- Ada 83
+   Name_Interface_Name                 : constant Name_Id := N + 199; -- GNAT
+   Name_Interrupt_Handler              : constant Name_Id := N + 200;
+   Name_Interrupt_Priority             : constant Name_Id := N + 201;
+   Name_Java_Constructor               : constant Name_Id := N + 202; -- GNAT
+   Name_Java_Interface                 : constant Name_Id := N + 203; -- GNAT
+   Name_Keep_Names                     : constant Name_Id := N + 204; -- GNAT
+   Name_Link_With                      : constant Name_Id := N + 205; -- GNAT
+   Name_Linker_Alias                   : constant Name_Id := N + 206; -- GNAT
+   Name_Linker_Options                 : constant Name_Id := N + 207;
+   Name_Linker_Section                 : constant Name_Id := N + 208; -- GNAT
+   Name_List                           : constant Name_Id := N + 209;
+   Name_Machine_Attribute              : constant Name_Id := N + 210; -- GNAT
+   Name_Main                           : constant Name_Id := N + 211; -- GNAT
+   Name_Main_Storage                   : constant Name_Id := N + 212; -- GNAT
+   Name_Memory_Size                    : constant Name_Id := N + 213; -- Ada 83
+   Name_No_Return                      : constant Name_Id := N + 214; -- GNAT
+   Name_Obsolescent                    : constant Name_Id := N + 215; -- GNAT
+   Name_Optimize                       : constant Name_Id := N + 216;
+   Name_Optional_Overriding            : constant Name_Id := N + 217;
+   Name_Overriding                     : constant Name_Id := N + 218;
+   Name_Pack                           : constant Name_Id := N + 219;
+   Name_Page                           : constant Name_Id := N + 220;
+   Name_Passive                        : constant Name_Id := N + 221; -- GNAT
+   Name_Preelaborate                   : constant Name_Id := N + 222;
+   Name_Priority                       : constant Name_Id := N + 223;
+   Name_Psect_Object                   : constant Name_Id := N + 224; -- VMS
+   Name_Pure                           : constant Name_Id := N + 225;
+   Name_Pure_Function                  : constant Name_Id := N + 226; -- GNAT
+   Name_Remote_Call_Interface          : constant Name_Id := N + 227;
+   Name_Remote_Types                   : constant Name_Id := N + 228;
+   Name_Share_Generic                  : constant Name_Id := N + 229; -- GNAT
+   Name_Shared                         : constant Name_Id := N + 230; -- Ada 83
+   Name_Shared_Passive                 : constant Name_Id := N + 231;
 
    --  Note: Storage_Size is not in this list because its name matches the
    --  name of the corresponding attribute. However, it is included in the
@@ -460,27 +461,27 @@ package Snames is
    --  Note: Storage_Unit is also omitted from the list because of a clash
    --  with an attribute name, and is treated similarly.
 
-   Name_Source_Reference               : constant Name_Id := N + 231; -- GNAT
-   Name_Stream_Convert                 : constant Name_Id := N + 232; -- GNAT
-   Name_Subtitle                       : constant Name_Id := N + 233; -- GNAT
-   Name_Suppress_All                   : constant Name_Id := N + 234; -- GNAT
-   Name_Suppress_Debug_Info            : constant Name_Id := N + 235; -- GNAT
-   Name_Suppress_Initialization        : constant Name_Id := N + 236; -- GNAT
-   Name_System_Name                    : constant Name_Id := N + 237; -- Ada 83
-   Name_Task_Info                      : constant Name_Id := N + 238; -- GNAT
-   Name_Task_Name                      : constant Name_Id := N + 239; -- GNAT
-   Name_Task_Storage                   : constant Name_Id := N + 240; -- VMS
-   Name_Thread_Body                    : constant Name_Id := N + 241; -- GNAT
-   Name_Time_Slice                     : constant Name_Id := N + 242; -- GNAT
-   Name_Title                          : constant Name_Id := N + 243; -- GNAT
-   Name_Unchecked_Union                : constant Name_Id := N + 244; -- GNAT
-   Name_Unimplemented_Unit             : constant Name_Id := N + 245; -- GNAT
-   Name_Unreferenced                   : constant Name_Id := N + 246; -- GNAT
-   Name_Unreserve_All_Interrupts       : constant Name_Id := N + 247; -- GNAT
-   Name_Volatile                       : constant Name_Id := N + 248;
-   Name_Volatile_Components            : constant Name_Id := N + 249;
-   Name_Weak_External                  : constant Name_Id := N + 250; -- GNAT
-   Last_Pragma_Name                    : constant Name_Id := N + 250;
+   Name_Source_Reference               : constant Name_Id := N + 232; -- GNAT
+   Name_Stream_Convert                 : constant Name_Id := N + 233; -- GNAT
+   Name_Subtitle                       : constant Name_Id := N + 234; -- GNAT
+   Name_Suppress_All                   : constant Name_Id := N + 235; -- GNAT
+   Name_Suppress_Debug_Info            : constant Name_Id := N + 236; -- GNAT
+   Name_Suppress_Initialization        : constant Name_Id := N + 237; -- GNAT
+   Name_System_Name                    : constant Name_Id := N + 238; -- Ada 83
+   Name_Task_Info                      : constant Name_Id := N + 239; -- GNAT
+   Name_Task_Name                      : constant Name_Id := N + 240; -- GNAT
+   Name_Task_Storage                   : constant Name_Id := N + 241; -- VMS
+   Name_Thread_Body                    : constant Name_Id := N + 242; -- GNAT
+   Name_Time_Slice                     : constant Name_Id := N + 243; -- GNAT
+   Name_Title                          : constant Name_Id := N + 244; -- GNAT
+   Name_Unchecked_Union                : constant Name_Id := N + 245; -- GNAT
+   Name_Unimplemented_Unit             : constant Name_Id := N + 246; -- GNAT
+   Name_Unreferenced                   : constant Name_Id := N + 247; -- GNAT
+   Name_Unreserve_All_Interrupts       : constant Name_Id := N + 248; -- GNAT
+   Name_Volatile                       : constant Name_Id := N + 249;
+   Name_Volatile_Components            : constant Name_Id := N + 250;
+   Name_Weak_External                  : constant Name_Id := N + 251; -- GNAT
+   Last_Pragma_Name                    : constant Name_Id := N + 251;
 
    --  Language convention names for pragma Convention/Export/Import/Interface
    --  Note that Name_C is not included in this list, since it was already
@@ -491,105 +492,105 @@ package Snames is
    --  Entry and Protected, this is because these conventions cannot be
    --  specified by a pragma.
 
-   First_Convention_Name               : constant Name_Id := N + 251;
-   Name_Ada                            : constant Name_Id := N + 251;
-   Name_Assembler                      : constant Name_Id := N + 252;
-   Name_COBOL                          : constant Name_Id := N + 253;
-   Name_CPP                            : constant Name_Id := N + 254;
-   Name_Fortran                        : constant Name_Id := N + 255;
-   Name_Intrinsic                      : constant Name_Id := N + 256;
-   Name_Java                           : constant Name_Id := N + 257;
-   Name_Stdcall                        : constant Name_Id := N + 258;
-   Name_Stubbed                        : constant Name_Id := N + 259;
-   Last_Convention_Name                : constant Name_Id := N + 259;
+   First_Convention_Name               : constant Name_Id := N + 252;
+   Name_Ada                            : constant Name_Id := N + 252;
+   Name_Assembler                      : constant Name_Id := N + 253;
+   Name_COBOL                          : constant Name_Id := N + 254;
+   Name_CPP                            : constant Name_Id := N + 255;
+   Name_Fortran                        : constant Name_Id := N + 256;
+   Name_Intrinsic                      : constant Name_Id := N + 257;
+   Name_Java                           : constant Name_Id := N + 258;
+   Name_Stdcall                        : constant Name_Id := N + 259;
+   Name_Stubbed                        : constant Name_Id := N + 260;
+   Last_Convention_Name                : constant Name_Id := N + 260;
 
    --  The following names are preset as synonyms for Assembler
 
-   Name_Asm                            : constant Name_Id := N + 260;
-   Name_Assembly                       : constant Name_Id := N + 261;
+   Name_Asm                            : constant Name_Id := N + 261;
+   Name_Assembly                       : constant Name_Id := N + 262;
 
    --  The following names are preset as synonyms for C
 
-   Name_Default                        : constant Name_Id := N + 262;
+   Name_Default                        : constant Name_Id := N + 263;
    --  Name_Exernal (previously defined as pragma)
 
    --  The following names are present as synonyms for Stdcall
 
-   Name_DLL                            : constant Name_Id := N + 263;
-   Name_Win32                          : constant Name_Id := N + 264;
+   Name_DLL                            : constant Name_Id := N + 264;
+   Name_Win32                          : constant Name_Id := N + 265;
 
    --  Other special names used in processing pragmas
 
-   Name_As_Is                          : constant Name_Id := N + 265;
-   Name_Body_File_Name                 : constant Name_Id := N + 266;
-   Name_Boolean_Entry_Barriers         : constant Name_Id := N + 267;
-   Name_Casing                         : constant Name_Id := N + 268;
-   Name_Code                           : constant Name_Id := N + 269;
-   Name_Component                      : constant Name_Id := N + 270;
-   Name_Component_Size_4               : constant Name_Id := N + 271;
-   Name_Copy                           : constant Name_Id := N + 272;
-   Name_D_Float                        : constant Name_Id := N + 273;
-   Name_Descriptor                     : constant Name_Id := N + 274;
-   Name_Dot_Replacement                : constant Name_Id := N + 275;
-   Name_Dynamic                        : constant Name_Id := N + 276;
-   Name_Entity                         : constant Name_Id := N + 277;
-   Name_External_Name                  : constant Name_Id := N + 278;
-   Name_First_Optional_Parameter       : constant Name_Id := N + 279;
-   Name_Form                           : constant Name_Id := N + 280;
-   Name_G_Float                        : constant Name_Id := N + 281;
-   Name_Gcc                            : constant Name_Id := N + 282;
-   Name_Gnat                           : constant Name_Id := N + 283;
-   Name_GPL                            : constant Name_Id := N + 284;
-   Name_IEEE_Float                     : constant Name_Id := N + 285;
-   Name_Internal                       : constant Name_Id := N + 286;
-   Name_Link_Name                      : constant Name_Id := N + 287;
-   Name_Lowercase                      : constant Name_Id := N + 288;
-   Name_Max_Entry_Queue_Depth          : constant Name_Id := N + 289;
-   Name_Max_Entry_Queue_Length         : constant Name_Id := N + 290;
-   Name_Max_Size                       : constant Name_Id := N + 291;
-   Name_Mechanism                      : constant Name_Id := N + 292;
-   Name_Mixedcase                      : constant Name_Id := N + 293;
-   Name_Modified_GPL                   : constant Name_Id := N + 294;
-   Name_Name                           : constant Name_Id := N + 295;
-   Name_NCA                            : constant Name_Id := N + 296;
-   Name_No                             : constant Name_Id := N + 297;
-   Name_On                             : constant Name_Id := N + 298;
-   Name_Parameter_Types                : constant Name_Id := N + 299;
-   Name_Reference                      : constant Name_Id := N + 300;
-   Name_No_Dynamic_Attachment          : constant Name_Id := N + 301;
-   Name_No_Dynamic_Interrupts          : constant Name_Id := N + 302;
-   Name_No_Requeue                     : constant Name_Id := N + 303;
-   Name_No_Requeue_Statements          : constant Name_Id := N + 304;
-   Name_No_Task_Attributes             : constant Name_Id := N + 305;
-   Name_No_Task_Attributes_Package     : constant Name_Id := N + 306;
-   Name_Restricted                     : constant Name_Id := N + 307;
-   Name_Result_Mechanism               : constant Name_Id := N + 308;
-   Name_Result_Type                    : constant Name_Id := N + 309;
-   Name_Runtime                        : constant Name_Id := N + 310;
-   Name_SB                             : constant Name_Id := N + 311;
-   Name_Secondary_Stack_Size           : constant Name_Id := N + 312;
-   Name_Section                        : constant Name_Id := N + 313;
-   Name_Semaphore                      : constant Name_Id := N + 314;
-   Name_Simple_Barriers                : constant Name_Id := N + 315;
-   Name_Spec_File_Name                 : constant Name_Id := N + 316;
-   Name_Static                         : constant Name_Id := N + 317;
-   Name_Stack_Size                     : constant Name_Id := N + 318;
-   Name_Subunit_File_Name              : constant Name_Id := N + 319;
-   Name_Task_Stack_Size_Default        : constant Name_Id := N + 320;
-   Name_Task_Type                      : constant Name_Id := N + 321;
-   Name_Time_Slicing_Enabled           : constant Name_Id := N + 322;
-   Name_Top_Guard                      : constant Name_Id := N + 323;
-   Name_UBA                            : constant Name_Id := N + 324;
-   Name_UBS                            : constant Name_Id := N + 325;
-   Name_UBSB                           : constant Name_Id := N + 326;
-   Name_Unit_Name                      : constant Name_Id := N + 327;
-   Name_Unknown                        : constant Name_Id := N + 328;
-   Name_Unrestricted                   : constant Name_Id := N + 329;
-   Name_Uppercase                      : constant Name_Id := N + 330;
-   Name_User                           : constant Name_Id := N + 331;
-   Name_VAX_Float                      : constant Name_Id := N + 332;
-   Name_VMS                            : constant Name_Id := N + 333;
-   Name_Working_Storage                : constant Name_Id := N + 334;
+   Name_As_Is                          : constant Name_Id := N + 266;
+   Name_Body_File_Name                 : constant Name_Id := N + 267;
+   Name_Boolean_Entry_Barriers         : constant Name_Id := N + 268;
+   Name_Casing                         : constant Name_Id := N + 269;
+   Name_Code                           : constant Name_Id := N + 270;
+   Name_Component                      : constant Name_Id := N + 271;
+   Name_Component_Size_4               : constant Name_Id := N + 272;
+   Name_Copy                           : constant Name_Id := N + 273;
+   Name_D_Float                        : constant Name_Id := N + 274;
+   Name_Descriptor                     : constant Name_Id := N + 275;
+   Name_Dot_Replacement                : constant Name_Id := N + 276;
+   Name_Dynamic                        : constant Name_Id := N + 277;
+   Name_Entity                         : constant Name_Id := N + 278;
+   Name_External_Name                  : constant Name_Id := N + 279;
+   Name_First_Optional_Parameter       : constant Name_Id := N + 280;
+   Name_Form                           : constant Name_Id := N + 281;
+   Name_G_Float                        : constant Name_Id := N + 282;
+   Name_Gcc                            : constant Name_Id := N + 283;
+   Name_Gnat                           : constant Name_Id := N + 284;
+   Name_GPL                            : constant Name_Id := N + 285;
+   Name_IEEE_Float                     : constant Name_Id := N + 286;
+   Name_Internal                       : constant Name_Id := N + 287;
+   Name_Link_Name                      : constant Name_Id := N + 288;
+   Name_Lowercase                      : constant Name_Id := N + 289;
+   Name_Max_Entry_Queue_Depth          : constant Name_Id := N + 290;
+   Name_Max_Entry_Queue_Length         : constant Name_Id := N + 291;
+   Name_Max_Size                       : constant Name_Id := N + 292;
+   Name_Mechanism                      : constant Name_Id := N + 293;
+   Name_Mixedcase                      : constant Name_Id := N + 294;
+   Name_Modified_GPL                   : constant Name_Id := N + 295;
+   Name_Name                           : constant Name_Id := N + 296;
+   Name_NCA                            : constant Name_Id := N + 297;
+   Name_No                             : constant Name_Id := N + 298;
+   Name_On                             : constant Name_Id := N + 299;
+   Name_Parameter_Types                : constant Name_Id := N + 300;
+   Name_Reference                      : constant Name_Id := N + 301;
+   Name_No_Dynamic_Attachment          : constant Name_Id := N + 302;
+   Name_No_Dynamic_Interrupts          : constant Name_Id := N + 303;
+   Name_No_Requeue                     : constant Name_Id := N + 304;
+   Name_No_Requeue_Statements          : constant Name_Id := N + 305;
+   Name_No_Task_Attributes             : constant Name_Id := N + 306;
+   Name_No_Task_Attributes_Package     : constant Name_Id := N + 307;
+   Name_Restricted                     : constant Name_Id := N + 308;
+   Name_Result_Mechanism               : constant Name_Id := N + 309;
+   Name_Result_Type                    : constant Name_Id := N + 310;
+   Name_Runtime                        : constant Name_Id := N + 311;
+   Name_SB                             : constant Name_Id := N + 312;
+   Name_Secondary_Stack_Size           : constant Name_Id := N + 313;
+   Name_Section                        : constant Name_Id := N + 314;
+   Name_Semaphore                      : constant Name_Id := N + 315;
+   Name_Simple_Barriers                : constant Name_Id := N + 316;
+   Name_Spec_File_Name                 : constant Name_Id := N + 317;
+   Name_Static                         : constant Name_Id := N + 318;
+   Name_Stack_Size                     : constant Name_Id := N + 319;
+   Name_Subunit_File_Name              : constant Name_Id := N + 320;
+   Name_Task_Stack_Size_Default        : constant Name_Id := N + 321;
+   Name_Task_Type                      : constant Name_Id := N + 322;
+   Name_Time_Slicing_Enabled           : constant Name_Id := N + 323;
+   Name_Top_Guard                      : constant Name_Id := N + 324;
+   Name_UBA                            : constant Name_Id := N + 325;
+   Name_UBS                            : constant Name_Id := N + 326;
+   Name_UBSB                           : constant Name_Id := N + 327;
+   Name_Unit_Name                      : constant Name_Id := N + 328;
+   Name_Unknown                        : constant Name_Id := N + 329;
+   Name_Unrestricted                   : constant Name_Id := N + 330;
+   Name_Uppercase                      : constant Name_Id := N + 331;
+   Name_User                           : constant Name_Id := N + 332;
+   Name_VAX_Float                      : constant Name_Id := N + 333;
+   Name_VMS                            : constant Name_Id := N + 334;
+   Name_Working_Storage                : constant Name_Id := N + 335;
 
    --  Names of recognized attributes. The entries with the comment "Ada 83"
    --  are attributes that are defined in Ada 83, but not in Ada 95. These
@@ -603,159 +604,159 @@ package Snames is
    --  The entries marked VMS are recognized only in OpenVMS implementations
    --  of GNAT, and are treated as illegal in all other contexts.
 
-   First_Attribute_Name                : constant Name_Id := N + 335;
-   Name_Abort_Signal                   : constant Name_Id := N + 335;  -- GNAT
-   Name_Access                         : constant Name_Id := N + 336;
-   Name_Address                        : constant Name_Id := N + 337;
-   Name_Address_Size                   : constant Name_Id := N + 338;  -- GNAT
-   Name_Aft                            : constant Name_Id := N + 339;
-   Name_Alignment                      : constant Name_Id := N + 340;
-   Name_Asm_Input                      : constant Name_Id := N + 341;  -- GNAT
-   Name_Asm_Output                     : constant Name_Id := N + 342;  -- GNAT
-   Name_AST_Entry                      : constant Name_Id := N + 343;  -- VMS
-   Name_Bit                            : constant Name_Id := N + 344;  -- GNAT
-   Name_Bit_Order                      : constant Name_Id := N + 345;
-   Name_Bit_Position                   : constant Name_Id := N + 346;  -- GNAT
-   Name_Body_Version                   : constant Name_Id := N + 347;
-   Name_Callable                       : constant Name_Id := N + 348;
-   Name_Caller                         : constant Name_Id := N + 349;
-   Name_Code_Address                   : constant Name_Id := N + 350;  -- GNAT
-   Name_Component_Size                 : constant Name_Id := N + 351;
-   Name_Compose                        : constant Name_Id := N + 352;
-   Name_Constrained                    : constant Name_Id := N + 353;
-   Name_Count                          : constant Name_Id := N + 354;
-   Name_Default_Bit_Order              : constant Name_Id := N + 355; -- GNAT
-   Name_Definite                       : constant Name_Id := N + 356;
-   Name_Delta                          : constant Name_Id := N + 357;
-   Name_Denorm                         : constant Name_Id := N + 358;
-   Name_Digits                         : constant Name_Id := N + 359;
-   Name_Elaborated                     : constant Name_Id := N + 360; -- GNAT
-   Name_Emax                           : constant Name_Id := N + 361; -- Ada 83
-   Name_Enum_Rep                       : constant Name_Id := N + 362; -- GNAT
-   Name_Epsilon                        : constant Name_Id := N + 363; -- Ada 83
-   Name_Exponent                       : constant Name_Id := N + 364;
-   Name_External_Tag                   : constant Name_Id := N + 365;
-   Name_First                          : constant Name_Id := N + 366;
-   Name_First_Bit                      : constant Name_Id := N + 367;
-   Name_Fixed_Value                    : constant Name_Id := N + 368; -- GNAT
-   Name_Fore                           : constant Name_Id := N + 369;
-   Name_Has_Access_Values              : constant Name_Id := N + 370; -- GNAT
-   Name_Has_Discriminants              : constant Name_Id := N + 371; -- GNAT
-   Name_Identity                       : constant Name_Id := N + 372;
-   Name_Img                            : constant Name_Id := N + 373; -- GNAT
-   Name_Integer_Value                  : constant Name_Id := N + 374; -- GNAT
-   Name_Large                          : constant Name_Id := N + 375; -- Ada 83
-   Name_Last                           : constant Name_Id := N + 376;
-   Name_Last_Bit                       : constant Name_Id := N + 377;
-   Name_Leading_Part                   : constant Name_Id := N + 378;
-   Name_Length                         : constant Name_Id := N + 379;
-   Name_Machine_Emax                   : constant Name_Id := N + 380;
-   Name_Machine_Emin                   : constant Name_Id := N + 381;
-   Name_Machine_Mantissa               : constant Name_Id := N + 382;
-   Name_Machine_Overflows              : constant Name_Id := N + 383;
-   Name_Machine_Radix                  : constant Name_Id := N + 384;
-   Name_Machine_Rounds                 : constant Name_Id := N + 385;
-   Name_Machine_Size                   : constant Name_Id := N + 386; -- GNAT
-   Name_Mantissa                       : constant Name_Id := N + 387; -- Ada 83
-   Name_Max_Size_In_Storage_Elements   : constant Name_Id := N + 388;
-   Name_Maximum_Alignment              : constant Name_Id := N + 389; -- GNAT
-   Name_Mechanism_Code                 : constant Name_Id := N + 390; -- GNAT
-   Name_Model_Emin                     : constant Name_Id := N + 391;
-   Name_Model_Epsilon                  : constant Name_Id := N + 392;
-   Name_Model_Mantissa                 : constant Name_Id := N + 393;
-   Name_Model_Small                    : constant Name_Id := N + 394;
-   Name_Modulus                        : constant Name_Id := N + 395;
-   Name_Null_Parameter                 : constant Name_Id := N + 396; -- GNAT
-   Name_Object_Size                    : constant Name_Id := N + 397; -- GNAT
-   Name_Partition_ID                   : constant Name_Id := N + 398;
-   Name_Passed_By_Reference            : constant Name_Id := N + 399; -- GNAT
-   Name_Pool_Address                   : constant Name_Id := N + 400;
-   Name_Pos                            : constant Name_Id := N + 401;
-   Name_Position                       : constant Name_Id := N + 402;
-   Name_Range                          : constant Name_Id := N + 403;
-   Name_Range_Length                   : constant Name_Id := N + 404; -- GNAT
-   Name_Round                          : constant Name_Id := N + 405;
-   Name_Safe_Emax                      : constant Name_Id := N + 406; -- Ada 83
-   Name_Safe_First                     : constant Name_Id := N + 407;
-   Name_Safe_Large                     : constant Name_Id := N + 408; -- Ada 83
-   Name_Safe_Last                      : constant Name_Id := N + 409;
-   Name_Safe_Small                     : constant Name_Id := N + 410; -- Ada 83
-   Name_Scale                          : constant Name_Id := N + 411;
-   Name_Scaling                        : constant Name_Id := N + 412;
-   Name_Signed_Zeros                   : constant Name_Id := N + 413;
-   Name_Size                           : constant Name_Id := N + 414;
-   Name_Small                          : constant Name_Id := N + 415;
-   Name_Storage_Size                   : constant Name_Id := N + 416;
-   Name_Storage_Unit                   : constant Name_Id := N + 417; -- GNAT
-   Name_Tag                            : constant Name_Id := N + 418;
-   Name_Target_Name                    : constant Name_Id := N + 419; -- GNAT
-   Name_Terminated                     : constant Name_Id := N + 420;
-   Name_To_Address                     : constant Name_Id := N + 421; -- GNAT
-   Name_Type_Class                     : constant Name_Id := N + 422; -- GNAT
-   Name_UET_Address                    : constant Name_Id := N + 423; -- GNAT
-   Name_Unbiased_Rounding              : constant Name_Id := N + 424;
-   Name_Unchecked_Access               : constant Name_Id := N + 425;
-   Name_Unconstrained_Array            : constant Name_Id := N + 426;
-   Name_Universal_Literal_String       : constant Name_Id := N + 427; -- GNAT
-   Name_Unrestricted_Access            : constant Name_Id := N + 428; -- GNAT
-   Name_VADS_Size                      : constant Name_Id := N + 429; -- GNAT
-   Name_Val                            : constant Name_Id := N + 430;
-   Name_Valid                          : constant Name_Id := N + 431;
-   Name_Value_Size                     : constant Name_Id := N + 432; -- GNAT
-   Name_Version                        : constant Name_Id := N + 433;
-   Name_Wchar_T_Size                   : constant Name_Id := N + 434; -- GNAT
-   Name_Wide_Width                     : constant Name_Id := N + 435;
-   Name_Width                          : constant Name_Id := N + 436;
-   Name_Word_Size                      : constant Name_Id := N + 437; -- GNAT
+   First_Attribute_Name                : constant Name_Id := N + 336;
+   Name_Abort_Signal                   : constant Name_Id := N + 336;  -- GNAT
+   Name_Access                         : constant Name_Id := N + 337;
+   Name_Address                        : constant Name_Id := N + 338;
+   Name_Address_Size                   : constant Name_Id := N + 339;  -- GNAT
+   Name_Aft                            : constant Name_Id := N + 340;
+   Name_Alignment                      : constant Name_Id := N + 341;
+   Name_Asm_Input                      : constant Name_Id := N + 342;  -- GNAT
+   Name_Asm_Output                     : constant Name_Id := N + 343;  -- GNAT
+   Name_AST_Entry                      : constant Name_Id := N + 344;  -- VMS
+   Name_Bit                            : constant Name_Id := N + 345;  -- GNAT
+   Name_Bit_Order                      : constant Name_Id := N + 346;
+   Name_Bit_Position                   : constant Name_Id := N + 347;  -- GNAT
+   Name_Body_Version                   : constant Name_Id := N + 348;
+   Name_Callable                       : constant Name_Id := N + 349;
+   Name_Caller                         : constant Name_Id := N + 350;
+   Name_Code_Address                   : constant Name_Id := N + 351;  -- GNAT
+   Name_Component_Size                 : constant Name_Id := N + 352;
+   Name_Compose                        : constant Name_Id := N + 353;
+   Name_Constrained                    : constant Name_Id := N + 354;
+   Name_Count                          : constant Name_Id := N + 355;
+   Name_Default_Bit_Order              : constant Name_Id := N + 356; -- GNAT
+   Name_Definite                       : constant Name_Id := N + 357;
+   Name_Delta                          : constant Name_Id := N + 358;
+   Name_Denorm                         : constant Name_Id := N + 359;
+   Name_Digits                         : constant Name_Id := N + 360;
+   Name_Elaborated                     : constant Name_Id := N + 361; -- GNAT
+   Name_Emax                           : constant Name_Id := N + 362; -- Ada 83
+   Name_Enum_Rep                       : constant Name_Id := N + 363; -- GNAT
+   Name_Epsilon                        : constant Name_Id := N + 364; -- Ada 83
+   Name_Exponent                       : constant Name_Id := N + 365;
+   Name_External_Tag                   : constant Name_Id := N + 366;
+   Name_First                          : constant Name_Id := N + 367;
+   Name_First_Bit                      : constant Name_Id := N + 368;
+   Name_Fixed_Value                    : constant Name_Id := N + 369; -- GNAT
+   Name_Fore                           : constant Name_Id := N + 370;
+   Name_Has_Access_Values              : constant Name_Id := N + 371; -- GNAT
+   Name_Has_Discriminants              : constant Name_Id := N + 372; -- GNAT
+   Name_Identity                       : constant Name_Id := N + 373;
+   Name_Img                            : constant Name_Id := N + 374; -- GNAT
+   Name_Integer_Value                  : constant Name_Id := N + 375; -- GNAT
+   Name_Large                          : constant Name_Id := N + 376; -- Ada 83
+   Name_Last                           : constant Name_Id := N + 377;
+   Name_Last_Bit                       : constant Name_Id := N + 378;
+   Name_Leading_Part                   : constant Name_Id := N + 379;
+   Name_Length                         : constant Name_Id := N + 380;
+   Name_Machine_Emax                   : constant Name_Id := N + 381;
+   Name_Machine_Emin                   : constant Name_Id := N + 382;
+   Name_Machine_Mantissa               : constant Name_Id := N + 383;
+   Name_Machine_Overflows              : constant Name_Id := N + 384;
+   Name_Machine_Radix                  : constant Name_Id := N + 385;
+   Name_Machine_Rounds                 : constant Name_Id := N + 386;
+   Name_Machine_Size                   : constant Name_Id := N + 387; -- GNAT
+   Name_Mantissa                       : constant Name_Id := N + 388; -- Ada 83
+   Name_Max_Size_In_Storage_Elements   : constant Name_Id := N + 389;
+   Name_Maximum_Alignment              : constant Name_Id := N + 390; -- GNAT
+   Name_Mechanism_Code                 : constant Name_Id := N + 391; -- GNAT
+   Name_Model_Emin                     : constant Name_Id := N + 392;
+   Name_Model_Epsilon                  : constant Name_Id := N + 393;
+   Name_Model_Mantissa                 : constant Name_Id := N + 394;
+   Name_Model_Small                    : constant Name_Id := N + 395;
+   Name_Modulus                        : constant Name_Id := N + 396;
+   Name_Null_Parameter                 : constant Name_Id := N + 397; -- GNAT
+   Name_Object_Size                    : constant Name_Id := N + 398; -- GNAT
+   Name_Partition_ID                   : constant Name_Id := N + 399;
+   Name_Passed_By_Reference            : constant Name_Id := N + 400; -- GNAT
+   Name_Pool_Address                   : constant Name_Id := N + 401;
+   Name_Pos                            : constant Name_Id := N + 402;
+   Name_Position                       : constant Name_Id := N + 403;
+   Name_Range                          : constant Name_Id := N + 404;
+   Name_Range_Length                   : constant Name_Id := N + 405; -- GNAT
+   Name_Round                          : constant Name_Id := N + 406;
+   Name_Safe_Emax                      : constant Name_Id := N + 407; -- Ada 83
+   Name_Safe_First                     : constant Name_Id := N + 408;
+   Name_Safe_Large                     : constant Name_Id := N + 409; -- Ada 83
+   Name_Safe_Last                      : constant Name_Id := N + 410;
+   Name_Safe_Small                     : constant Name_Id := N + 411; -- Ada 83
+   Name_Scale                          : constant Name_Id := N + 412;
+   Name_Scaling                        : constant Name_Id := N + 413;
+   Name_Signed_Zeros                   : constant Name_Id := N + 414;
+   Name_Size                           : constant Name_Id := N + 415;
+   Name_Small                          : constant Name_Id := N + 416;
+   Name_Storage_Size                   : constant Name_Id := N + 417;
+   Name_Storage_Unit                   : constant Name_Id := N + 418; -- GNAT
+   Name_Tag                            : constant Name_Id := N + 419;
+   Name_Target_Name                    : constant Name_Id := N + 420; -- GNAT
+   Name_Terminated                     : constant Name_Id := N + 421;
+   Name_To_Address                     : constant Name_Id := N + 422; -- GNAT
+   Name_Type_Class                     : constant Name_Id := N + 423; -- GNAT
+   Name_UET_Address                    : constant Name_Id := N + 424; -- GNAT
+   Name_Unbiased_Rounding              : constant Name_Id := N + 425;
+   Name_Unchecked_Access               : constant Name_Id := N + 426;
+   Name_Unconstrained_Array            : constant Name_Id := N + 427;
+   Name_Universal_Literal_String       : constant Name_Id := N + 428; -- GNAT
+   Name_Unrestricted_Access            : constant Name_Id := N + 429; -- GNAT
+   Name_VADS_Size                      : constant Name_Id := N + 430; -- GNAT
+   Name_Val                            : constant Name_Id := N + 431;
+   Name_Valid                          : constant Name_Id := N + 432;
+   Name_Value_Size                     : constant Name_Id := N + 433; -- GNAT
+   Name_Version                        : constant Name_Id := N + 434;
+   Name_Wchar_T_Size                   : constant Name_Id := N + 435; -- GNAT
+   Name_Wide_Width                     : constant Name_Id := N + 436;
+   Name_Width                          : constant Name_Id := N + 437;
+   Name_Word_Size                      : constant Name_Id := N + 438; -- GNAT
 
    --  Attributes that designate attributes returning renamable functions,
    --  i.e. functions that return other than a universal value.
 
-   First_Renamable_Function_Attribute  : constant Name_Id := N + 438;
-   Name_Adjacent                       : constant Name_Id := N + 438;
-   Name_Ceiling                        : constant Name_Id := N + 439;
-   Name_Copy_Sign                      : constant Name_Id := N + 440;
-   Name_Floor                          : constant Name_Id := N + 441;
-   Name_Fraction                       : constant Name_Id := N + 442;
-   Name_Image                          : constant Name_Id := N + 443;
-   Name_Input                          : constant Name_Id := N + 444;
-   Name_Machine                        : constant Name_Id := N + 445;
-   Name_Max                            : constant Name_Id := N + 446;
-   Name_Min                            : constant Name_Id := N + 447;
-   Name_Model                          : constant Name_Id := N + 448;
-   Name_Pred                           : constant Name_Id := N + 449;
-   Name_Remainder                      : constant Name_Id := N + 450;
-   Name_Rounding                       : constant Name_Id := N + 451;
-   Name_Succ                           : constant Name_Id := N + 452;
-   Name_Truncation                     : constant Name_Id := N + 453;
-   Name_Value                          : constant Name_Id := N + 454;
-   Name_Wide_Image                     : constant Name_Id := N + 455;
-   Name_Wide_Value                     : constant Name_Id := N + 456;
-   Last_Renamable_Function_Attribute   : constant Name_Id := N + 456;
+   First_Renamable_Function_Attribute  : constant Name_Id := N + 439;
+   Name_Adjacent                       : constant Name_Id := N + 439;
+   Name_Ceiling                        : constant Name_Id := N + 440;
+   Name_Copy_Sign                      : constant Name_Id := N + 441;
+   Name_Floor                          : constant Name_Id := N + 442;
+   Name_Fraction                       : constant Name_Id := N + 443;
+   Name_Image                          : constant Name_Id := N + 444;
+   Name_Input                          : constant Name_Id := N + 445;
+   Name_Machine                        : constant Name_Id := N + 446;
+   Name_Max                            : constant Name_Id := N + 447;
+   Name_Min                            : constant Name_Id := N + 448;
+   Name_Model                          : constant Name_Id := N + 449;
+   Name_Pred                           : constant Name_Id := N + 450;
+   Name_Remainder                      : constant Name_Id := N + 451;
+   Name_Rounding                       : constant Name_Id := N + 452;
+   Name_Succ                           : constant Name_Id := N + 453;
+   Name_Truncation                     : constant Name_Id := N + 454;
+   Name_Value                          : constant Name_Id := N + 455;
+   Name_Wide_Image                     : constant Name_Id := N + 456;
+   Name_Wide_Value                     : constant Name_Id := N + 457;
+   Last_Renamable_Function_Attribute   : constant Name_Id := N + 457;
 
    --  Attributes that designate procedures
 
-   First_Procedure_Attribute           : constant Name_Id := N + 457;
-   Name_Output                         : constant Name_Id := N + 457;
-   Name_Read                           : constant Name_Id := N + 458;
-   Name_Write                          : constant Name_Id := N + 459;
-   Last_Procedure_Attribute            : constant Name_Id := N + 459;
+   First_Procedure_Attribute           : constant Name_Id := N + 458;
+   Name_Output                         : constant Name_Id := N + 458;
+   Name_Read                           : constant Name_Id := N + 459;
+   Name_Write                          : constant Name_Id := N + 460;
+   Last_Procedure_Attribute            : constant Name_Id := N + 460;
 
    --  Remaining attributes are ones that return entities
 
-   First_Entity_Attribute_Name         : constant Name_Id := N + 460;
-   Name_Elab_Body                      : constant Name_Id := N + 460; -- GNAT
-   Name_Elab_Spec                      : constant Name_Id := N + 461; -- GNAT
-   Name_Storage_Pool                   : constant Name_Id := N + 462;
+   First_Entity_Attribute_Name         : constant Name_Id := N + 461;
+   Name_Elab_Body                      : constant Name_Id := N + 461; -- GNAT
+   Name_Elab_Spec                      : constant Name_Id := N + 462; -- GNAT
+   Name_Storage_Pool                   : constant Name_Id := N + 463;
 
    --  These attributes are the ones that return types
 
-   First_Type_Attribute_Name           : constant Name_Id := N + 463;
-   Name_Base                           : constant Name_Id := N + 463;
-   Name_Class                          : constant Name_Id := N + 464;
-   Last_Type_Attribute_Name            : constant Name_Id := N + 464;
-   Last_Entity_Attribute_Name          : constant Name_Id := N + 464;
-   Last_Attribute_Name                 : constant Name_Id := N + 464;
+   First_Type_Attribute_Name           : constant Name_Id := N + 464;
+   Name_Base                           : constant Name_Id := N + 464;
+   Name_Class                          : constant Name_Id := N + 465;
+   Last_Type_Attribute_Name            : constant Name_Id := N + 465;
+   Last_Entity_Attribute_Name          : constant Name_Id := N + 465;
+   Last_Attribute_Name                 : constant Name_Id := N + 465;
 
    --  Names of recognized locking policy identifiers
 
@@ -763,10 +764,10 @@ package Snames is
    --  name (e.g. C for Ceiling_Locking). If new policy names are added,
    --  the first character must be distinct.
 
-   First_Locking_Policy_Name           : constant Name_Id := N + 465;
-   Name_Ceiling_Locking                : constant Name_Id := N + 465;
-   Name_Inheritance_Locking            : constant Name_Id := N + 466;
-   Last_Locking_Policy_Name            : constant Name_Id := N + 466;
+   First_Locking_Policy_Name           : constant Name_Id := N + 466;
+   Name_Ceiling_Locking                : constant Name_Id := N + 466;
+   Name_Inheritance_Locking            : constant Name_Id := N + 467;
+   Last_Locking_Policy_Name            : constant Name_Id := N + 467;
 
    --  Names of recognized queuing policy identifiers.
 
@@ -774,10 +775,10 @@ package Snames is
    --  name (e.g. F for FIFO_Queuing). If new policy names are added,
    --  the first character must be distinct.
 
-   First_Queuing_Policy_Name           : constant Name_Id := N + 467;
-   Name_FIFO_Queuing                   : constant Name_Id := N + 467;
-   Name_Priority_Queuing               : constant Name_Id := N + 468;
-   Last_Queuing_Policy_Name            : constant Name_Id := N + 468;
+   First_Queuing_Policy_Name           : constant Name_Id := N + 468;
+   Name_FIFO_Queuing                   : constant Name_Id := N + 468;
+   Name_Priority_Queuing               : constant Name_Id := N + 469;
+   Last_Queuing_Policy_Name            : constant Name_Id := N + 469;
 
    --  Names of recognized task dispatching policy identifiers
 
@@ -785,194 +786,194 @@ package Snames is
    --  name (e.g. F for FIFO_WIthinn_Priorities). If new policy names
    --  are added, the first character must be distinct.
 
-   First_Task_Dispatching_Policy_Name  : constant Name_Id := N + 469;
-   Name_FIFO_Within_Priorities         : constant Name_Id := N + 469;
-   Last_Task_Dispatching_Policy_Name   : constant Name_Id := N + 469;
+   First_Task_Dispatching_Policy_Name  : constant Name_Id := N + 470;
+   Name_FIFO_Within_Priorities         : constant Name_Id := N + 470;
+   Last_Task_Dispatching_Policy_Name   : constant Name_Id := N + 470;
 
    --  Names of recognized checks for pragma Suppress
 
-   First_Check_Name                    : constant Name_Id := N + 470;
-   Name_Access_Check                   : constant Name_Id := N + 470;
-   Name_Accessibility_Check            : constant Name_Id := N + 471;
-   Name_Discriminant_Check             : constant Name_Id := N + 472;
-   Name_Division_Check                 : constant Name_Id := N + 473;
-   Name_Elaboration_Check              : constant Name_Id := N + 474;
-   Name_Index_Check                    : constant Name_Id := N + 475;
-   Name_Length_Check                   : constant Name_Id := N + 476;
-   Name_Overflow_Check                 : constant Name_Id := N + 477;
-   Name_Range_Check                    : constant Name_Id := N + 478;
-   Name_Storage_Check                  : constant Name_Id := N + 479;
-   Name_Tag_Check                      : constant Name_Id := N + 480;
-   Name_All_Checks                     : constant Name_Id := N + 481;
-   Last_Check_Name                     : constant Name_Id := N + 481;
+   First_Check_Name                    : constant Name_Id := N + 471;
+   Name_Access_Check                   : constant Name_Id := N + 471;
+   Name_Accessibility_Check            : constant Name_Id := N + 472;
+   Name_Discriminant_Check             : constant Name_Id := N + 473;
+   Name_Division_Check                 : constant Name_Id := N + 474;
+   Name_Elaboration_Check              : constant Name_Id := N + 475;
+   Name_Index_Check                    : constant Name_Id := N + 476;
+   Name_Length_Check                   : constant Name_Id := N + 477;
+   Name_Overflow_Check                 : constant Name_Id := N + 478;
+   Name_Range_Check                    : constant Name_Id := N + 479;
+   Name_Storage_Check                  : constant Name_Id := N + 480;
+   Name_Tag_Check                      : constant Name_Id := N + 481;
+   Name_All_Checks                     : constant Name_Id := N + 482;
+   Last_Check_Name                     : constant Name_Id := N + 482;
 
    --  Names corresponding to reserved keywords, excluding those already
    --  declared in the attribute list (Access, Delta, Digits, Range).
 
-   Name_Abort                          : constant Name_Id := N + 482;
-   Name_Abs                            : constant Name_Id := N + 483;
-   Name_Accept                         : constant Name_Id := N + 484;
-   Name_And                            : constant Name_Id := N + 485;
-   Name_All                            : constant Name_Id := N + 486;
-   Name_Array                          : constant Name_Id := N + 487;
-   Name_At                             : constant Name_Id := N + 488;
-   Name_Begin                          : constant Name_Id := N + 489;
-   Name_Body                           : constant Name_Id := N + 490;
-   Name_Case                           : constant Name_Id := N + 491;
-   Name_Constant                       : constant Name_Id := N + 492;
-   Name_Declare                        : constant Name_Id := N + 493;
-   Name_Delay                          : constant Name_Id := N + 494;
-   Name_Do                             : constant Name_Id := N + 495;
-   Name_Else                           : constant Name_Id := N + 496;
-   Name_Elsif                          : constant Name_Id := N + 497;
-   Name_End                            : constant Name_Id := N + 498;
-   Name_Entry                          : constant Name_Id := N + 499;
-   Name_Exception                      : constant Name_Id := N + 500;
-   Name_Exit                           : constant Name_Id := N + 501;
-   Name_For                            : constant Name_Id := N + 502;
-   Name_Function                       : constant Name_Id := N + 503;
-   Name_Generic                        : constant Name_Id := N + 504;
-   Name_Goto                           : constant Name_Id := N + 505;
-   Name_If                             : constant Name_Id := N + 506;
-   Name_In                             : constant Name_Id := N + 507;
-   Name_Is                             : constant Name_Id := N + 508;
-   Name_Limited                        : constant Name_Id := N + 509;
-   Name_Loop                           : constant Name_Id := N + 510;
-   Name_Mod                            : constant Name_Id := N + 511;
-   Name_New                            : constant Name_Id := N + 512;
-   Name_Not                            : constant Name_Id := N + 513;
-   Name_Null                           : constant Name_Id := N + 514;
-   Name_Of                             : constant Name_Id := N + 515;
-   Name_Or                             : constant Name_Id := N + 516;
-   Name_Others                         : constant Name_Id := N + 517;
-   Name_Out                            : constant Name_Id := N + 518;
-   Name_Package                        : constant Name_Id := N + 519;
-   Name_Pragma                         : constant Name_Id := N + 520;
-   Name_Private                        : constant Name_Id := N + 521;
-   Name_Procedure                      : constant Name_Id := N + 522;
-   Name_Raise                          : constant Name_Id := N + 523;
-   Name_Record                         : constant Name_Id := N + 524;
-   Name_Rem                            : constant Name_Id := N + 525;
-   Name_Renames                        : constant Name_Id := N + 526;
-   Name_Return                         : constant Name_Id := N + 527;
-   Name_Reverse                        : constant Name_Id := N + 528;
-   Name_Select                         : constant Name_Id := N + 529;
-   Name_Separate                       : constant Name_Id := N + 530;
-   Name_Subtype                        : constant Name_Id := N + 531;
-   Name_Task                           : constant Name_Id := N + 532;
-   Name_Terminate                      : constant Name_Id := N + 533;
-   Name_Then                           : constant Name_Id := N + 534;
-   Name_Type                           : constant Name_Id := N + 535;
-   Name_Use                            : constant Name_Id := N + 536;
-   Name_When                           : constant Name_Id := N + 537;
-   Name_While                          : constant Name_Id := N + 538;
-   Name_With                           : constant Name_Id := N + 539;
-   Name_Xor                            : constant Name_Id := N + 540;
+   Name_Abort                          : constant Name_Id := N + 483;
+   Name_Abs                            : constant Name_Id := N + 484;
+   Name_Accept                         : constant Name_Id := N + 485;
+   Name_And                            : constant Name_Id := N + 486;
+   Name_All                            : constant Name_Id := N + 487;
+   Name_Array                          : constant Name_Id := N + 488;
+   Name_At                             : constant Name_Id := N + 489;
+   Name_Begin                          : constant Name_Id := N + 490;
+   Name_Body                           : constant Name_Id := N + 491;
+   Name_Case                           : constant Name_Id := N + 492;
+   Name_Constant                       : constant Name_Id := N + 493;
+   Name_Declare                        : constant Name_Id := N + 494;
+   Name_Delay                          : constant Name_Id := N + 495;
+   Name_Do                             : constant Name_Id := N + 496;
+   Name_Else                           : constant Name_Id := N + 497;
+   Name_Elsif                          : constant Name_Id := N + 498;
+   Name_End                            : constant Name_Id := N + 499;
+   Name_Entry                          : constant Name_Id := N + 500;
+   Name_Exception                      : constant Name_Id := N + 501;
+   Name_Exit                           : constant Name_Id := N + 502;
+   Name_For                            : constant Name_Id := N + 503;
+   Name_Function                       : constant Name_Id := N + 504;
+   Name_Generic                        : constant Name_Id := N + 505;
+   Name_Goto                           : constant Name_Id := N + 506;
+   Name_If                             : constant Name_Id := N + 507;
+   Name_In                             : constant Name_Id := N + 508;
+   Name_Is                             : constant Name_Id := N + 509;
+   Name_Limited                        : constant Name_Id := N + 510;
+   Name_Loop                           : constant Name_Id := N + 511;
+   Name_Mod                            : constant Name_Id := N + 512;
+   Name_New                            : constant Name_Id := N + 513;
+   Name_Not                            : constant Name_Id := N + 514;
+   Name_Null                           : constant Name_Id := N + 515;
+   Name_Of                             : constant Name_Id := N + 516;
+   Name_Or                             : constant Name_Id := N + 517;
+   Name_Others                         : constant Name_Id := N + 518;
+   Name_Out                            : constant Name_Id := N + 519;
+   Name_Package                        : constant Name_Id := N + 520;
+   Name_Pragma                         : constant Name_Id := N + 521;
+   Name_Private                        : constant Name_Id := N + 522;
+   Name_Procedure                      : constant Name_Id := N + 523;
+   Name_Raise                          : constant Name_Id := N + 524;
+   Name_Record                         : constant Name_Id := N + 525;
+   Name_Rem                            : constant Name_Id := N + 526;
+   Name_Renames                        : constant Name_Id := N + 527;
+   Name_Return                         : constant Name_Id := N + 528;
+   Name_Reverse                        : constant Name_Id := N + 529;
+   Name_Select                         : constant Name_Id := N + 530;
+   Name_Separate                       : constant Name_Id := N + 531;
+   Name_Subtype                        : constant Name_Id := N + 532;
+   Name_Task                           : constant Name_Id := N + 533;
+   Name_Terminate                      : constant Name_Id := N + 534;
+   Name_Then                           : constant Name_Id := N + 535;
+   Name_Type                           : constant Name_Id := N + 536;
+   Name_Use                            : constant Name_Id := N + 537;
+   Name_When                           : constant Name_Id := N + 538;
+   Name_While                          : constant Name_Id := N + 539;
+   Name_With                           : constant Name_Id := N + 540;
+   Name_Xor                            : constant Name_Id := N + 541;
 
    --  Names of intrinsic subprograms
 
    --  Note: Asm is missing from this list, since Asm is a legitimate
    --  convention name. So is To_Adress, which is a GNAT attribute.
 
-   First_Intrinsic_Name                : constant Name_Id := N + 541;
-   Name_Divide                         : constant Name_Id := N + 541;
-   Name_Enclosing_Entity               : constant Name_Id := N + 542;
-   Name_Exception_Information          : constant Name_Id := N + 543;
-   Name_Exception_Message              : constant Name_Id := N + 544;
-   Name_Exception_Name                 : constant Name_Id := N + 545;
-   Name_File                           : constant Name_Id := N + 546;
-   Name_Import_Address                 : constant Name_Id := N + 547;
-   Name_Import_Largest_Value           : constant Name_Id := N + 548;
-   Name_Import_Value                   : constant Name_Id := N + 549;
-   Name_Is_Negative                    : constant Name_Id := N + 550;
-   Name_Line                           : constant Name_Id := N + 551;
-   Name_Rotate_Left                    : constant Name_Id := N + 552;
-   Name_Rotate_Right                   : constant Name_Id := N + 553;
-   Name_Shift_Left                     : constant Name_Id := N + 554;
-   Name_Shift_Right                    : constant Name_Id := N + 555;
-   Name_Shift_Right_Arithmetic         : constant Name_Id := N + 556;
-   Name_Source_Location                : constant Name_Id := N + 557;
-   Name_Unchecked_Conversion           : constant Name_Id := N + 558;
-   Name_Unchecked_Deallocation         : constant Name_Id := N + 559;
-   Name_To_Pointer                     : constant Name_Id := N + 560;
-   Last_Intrinsic_Name                 : constant Name_Id := N + 560;
+   First_Intrinsic_Name                : constant Name_Id := N + 542;
+   Name_Divide                         : constant Name_Id := N + 542;
+   Name_Enclosing_Entity               : constant Name_Id := N + 543;
+   Name_Exception_Information          : constant Name_Id := N + 544;
+   Name_Exception_Message              : constant Name_Id := N + 545;
+   Name_Exception_Name                 : constant Name_Id := N + 546;
+   Name_File                           : constant Name_Id := N + 547;
+   Name_Import_Address                 : constant Name_Id := N + 548;
+   Name_Import_Largest_Value           : constant Name_Id := N + 549;
+   Name_Import_Value                   : constant Name_Id := N + 550;
+   Name_Is_Negative                    : constant Name_Id := N + 551;
+   Name_Line                           : constant Name_Id := N + 552;
+   Name_Rotate_Left                    : constant Name_Id := N + 553;
+   Name_Rotate_Right                   : constant Name_Id := N + 554;
+   Name_Shift_Left                     : constant Name_Id := N + 555;
+   Name_Shift_Right                    : constant Name_Id := N + 556;
+   Name_Shift_Right_Arithmetic         : constant Name_Id := N + 557;
+   Name_Source_Location                : constant Name_Id := N + 558;
+   Name_Unchecked_Conversion           : constant Name_Id := N + 559;
+   Name_Unchecked_Deallocation         : constant Name_Id := N + 560;
+   Name_To_Pointer                     : constant Name_Id := N + 561;
+   Last_Intrinsic_Name                 : constant Name_Id := N + 561;
 
    --  Reserved words used only in Ada 95
 
-   First_95_Reserved_Word              : constant Name_Id := N + 561;
-   Name_Abstract                       : constant Name_Id := N + 561;
-   Name_Aliased                        : constant Name_Id := N + 562;
-   Name_Protected                      : constant Name_Id := N + 563;
-   Name_Until                          : constant Name_Id := N + 564;
-   Name_Requeue                        : constant Name_Id := N + 565;
-   Name_Tagged                         : constant Name_Id := N + 566;
-   Last_95_Reserved_Word               : constant Name_Id := N + 566;
+   First_95_Reserved_Word              : constant Name_Id := N + 562;
+   Name_Abstract                       : constant Name_Id := N + 562;
+   Name_Aliased                        : constant Name_Id := N + 563;
+   Name_Protected                      : constant Name_Id := N + 564;
+   Name_Until                          : constant Name_Id := N + 565;
+   Name_Requeue                        : constant Name_Id := N + 566;
+   Name_Tagged                         : constant Name_Id := N + 567;
+   Last_95_Reserved_Word               : constant Name_Id := N + 567;
 
    subtype Ada_95_Reserved_Words is
      Name_Id range First_95_Reserved_Word .. Last_95_Reserved_Word;
 
    --  Miscellaneous names used in semantic checking
 
-   Name_Raise_Exception                : constant Name_Id := N + 567;
+   Name_Raise_Exception                : constant Name_Id := N + 568;
 
    --  Additional reserved words in GNAT Project Files
    --  Note that Name_External is already previously declared
 
-   Name_Binder                         : constant Name_Id := N + 568;
-   Name_Body_Suffix                    : constant Name_Id := N + 569;
-   Name_Builder                        : constant Name_Id := N + 570;
-   Name_Compiler                       : constant Name_Id := N + 571;
-   Name_Cross_Reference                : constant Name_Id := N + 572;
-   Name_Default_Switches               : constant Name_Id := N + 573;
-   Name_Exec_Dir                       : constant Name_Id := N + 574;
-   Name_Executable                     : constant Name_Id := N + 575;
-   Name_Executable_Suffix              : constant Name_Id := N + 576;
-   Name_Extends                        : constant Name_Id := N + 577;
-   Name_Finder                         : constant Name_Id := N + 578;
-   Name_Global_Configuration_Pragmas   : constant Name_Id := N + 579;
-   Name_Gnatls                         : constant Name_Id := N + 580;
-   Name_Gnatstub                       : constant Name_Id := N + 581;
-   Name_Implementation                 : constant Name_Id := N + 582;
-   Name_Implementation_Exceptions      : constant Name_Id := N + 583;
-   Name_Implementation_Suffix          : constant Name_Id := N + 584;
-   Name_Languages                      : constant Name_Id := N + 585;
-   Name_Library_Dir                    : constant Name_Id := N + 586;
-   Name_Library_Auto_Init              : constant Name_Id := N + 587;
-   Name_Library_GCC                    : constant Name_Id := N + 588;
-   Name_Library_Interface              : constant Name_Id := N + 589;
-   Name_Library_Kind                   : constant Name_Id := N + 590;
-   Name_Library_Name                   : constant Name_Id := N + 591;
-   Name_Library_Options                : constant Name_Id := N + 592;
-   Name_Library_Reference_Symbol_File  : constant Name_Id := N + 593;
-   Name_Library_Src_Dir                : constant Name_Id := N + 594;
-   Name_Library_Symbol_File            : constant Name_Id := N + 595;
-   Name_Library_Symbol_Policy          : constant Name_Id := N + 596;
-   Name_Library_Version                : constant Name_Id := N + 597;
-   Name_Linker                         : constant Name_Id := N + 598;
-   Name_Local_Configuration_Pragmas    : constant Name_Id := N + 599;
-   Name_Locally_Removed_Files          : constant Name_Id := N + 600;
-   Name_Metrics                        : constant Name_Id := N + 601;
-   Name_Naming                         : constant Name_Id := N + 602;
-   Name_Object_Dir                     : constant Name_Id := N + 603;
-   Name_Pretty_Printer                 : constant Name_Id := N + 604;
-   Name_Project                        : constant Name_Id := N + 605;
-   Name_Separate_Suffix                : constant Name_Id := N + 606;
-   Name_Source_Dirs                    : constant Name_Id := N + 607;
-   Name_Source_Files                   : constant Name_Id := N + 608;
-   Name_Source_List_File               : constant Name_Id := N + 609;
-   Name_Spec                           : constant Name_Id := N + 610;
-   Name_Spec_Suffix                    : constant Name_Id := N + 611;
-   Name_Specification                  : constant Name_Id := N + 612;
-   Name_Specification_Exceptions       : constant Name_Id := N + 613;
-   Name_Specification_Suffix           : constant Name_Id := N + 614;
-   Name_Switches                       : constant Name_Id := N + 615;
+   Name_Binder                         : constant Name_Id := N + 569;
+   Name_Body_Suffix                    : constant Name_Id := N + 570;
+   Name_Builder                        : constant Name_Id := N + 571;
+   Name_Compiler                       : constant Name_Id := N + 572;
+   Name_Cross_Reference                : constant Name_Id := N + 573;
+   Name_Default_Switches               : constant Name_Id := N + 574;
+   Name_Exec_Dir                       : constant Name_Id := N + 575;
+   Name_Executable                     : constant Name_Id := N + 576;
+   Name_Executable_Suffix              : constant Name_Id := N + 577;
+   Name_Extends                        : constant Name_Id := N + 578;
+   Name_Finder                         : constant Name_Id := N + 579;
+   Name_Global_Configuration_Pragmas   : constant Name_Id := N + 580;
+   Name_Gnatls                         : constant Name_Id := N + 581;
+   Name_Gnatstub                       : constant Name_Id := N + 582;
+   Name_Implementation                 : constant Name_Id := N + 583;
+   Name_Implementation_Exceptions      : constant Name_Id := N + 584;
+   Name_Implementation_Suffix          : constant Name_Id := N + 585;
+   Name_Languages                      : constant Name_Id := N + 586;
+   Name_Library_Dir                    : constant Name_Id := N + 587;
+   Name_Library_Auto_Init              : constant Name_Id := N + 588;
+   Name_Library_GCC                    : constant Name_Id := N + 589;
+   Name_Library_Interface              : constant Name_Id := N + 590;
+   Name_Library_Kind                   : constant Name_Id := N + 591;
+   Name_Library_Name                   : constant Name_Id := N + 592;
+   Name_Library_Options                : constant Name_Id := N + 593;
+   Name_Library_Reference_Symbol_File  : constant Name_Id := N + 594;
+   Name_Library_Src_Dir                : constant Name_Id := N + 595;
+   Name_Library_Symbol_File            : constant Name_Id := N + 596;
+   Name_Library_Symbol_Policy          : constant Name_Id := N + 597;
+   Name_Library_Version                : constant Name_Id := N + 598;
+   Name_Linker                         : constant Name_Id := N + 599;
+   Name_Local_Configuration_Pragmas    : constant Name_Id := N + 600;
+   Name_Locally_Removed_Files          : constant Name_Id := N + 601;
+   Name_Metrics                        : constant Name_Id := N + 602;
+   Name_Naming                         : constant Name_Id := N + 603;
+   Name_Object_Dir                     : constant Name_Id := N + 604;
+   Name_Pretty_Printer                 : constant Name_Id := N + 605;
+   Name_Project                        : constant Name_Id := N + 606;
+   Name_Separate_Suffix                : constant Name_Id := N + 607;
+   Name_Source_Dirs                    : constant Name_Id := N + 608;
+   Name_Source_Files                   : constant Name_Id := N + 609;
+   Name_Source_List_File               : constant Name_Id := N + 610;
+   Name_Spec                           : constant Name_Id := N + 611;
+   Name_Spec_Suffix                    : constant Name_Id := N + 612;
+   Name_Specification                  : constant Name_Id := N + 613;
+   Name_Specification_Exceptions       : constant Name_Id := N + 614;
+   Name_Specification_Suffix           : constant Name_Id := N + 615;
+   Name_Switches                       : constant Name_Id := N + 616;
    --  Other miscellaneous names used in front end
 
-   Name_Unaligned_Valid                : constant Name_Id := N + 616;
+   Name_Unaligned_Valid                : constant Name_Id := N + 617;
 
    --  Mark last defined name for consistency check in Snames body
 
-   Last_Predefined_Name                : constant Name_Id := N + 616;
+   Last_Predefined_Name                : constant Name_Id := N + 617;
 
    subtype Any_Operator_Name is Name_Id range
      First_Operator_Name .. Last_Operator_Name;
index fa28445..c80241b 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                            (AIX/PPC Version)                             --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 6b16d1f..73cbcd3 100644 (file)
@@ -154,6 +154,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index a7371a2..25b72ca 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                           (FreeBSD/x86 Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 3b971a5..e9664f0 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                             (HP-UX Version)                              --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := False;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 1105829..d8d73a1 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (OpenNT/Interix Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 0bdc08b..2403db7 100644 (file)
@@ -140,6 +140,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := True;
index 7ccbe6c..b053e01 100644 (file)
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := True;
index 72c51b0..510673e 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (GNU-Linux/ia64 Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 8bcf780..28edbfe 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (GNU-Linux/x86 Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 37a495d..99c33db 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (GNU-Linux/x86-64 Version)                      --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index caeae17..9a0bf68 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                           (LynxOS PPC Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 130b5f0..0187b38 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                           (LynxOS x86 Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 9316644..4aafd02 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                               (NT Version)                               --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 17acb5b..53d8b8c 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                             (OS/2 Version)                               --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 80621a7..397e38f 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (SUN Solaris Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := True;
index dca552e..6f77451 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (Solaris Sparcv9 Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := True;
index d48b684..c661ac0 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (x86 Solaris Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := True;
index f0067b3..3134ffe 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                           (DEC Unix Version)                             --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := True;
    Stack_Check_Probes        : constant Boolean := True;
index 01404ee..5cfd21b 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (SCO UnixWare Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 3ba5e69..1b4b7c2 100644 (file)
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := True;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := True;
    Stack_Check_Probes        : constant Boolean := True;
index fc4fb2e..82faeb3 100644 (file)
@@ -128,6 +128,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := True;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := True;
    Stack_Check_Probes        : constant Boolean := True;
index 9052e2b..aefdb05 100644 (file)
@@ -147,6 +147,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := True;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := True;
    Stack_Check_Probes        : constant Boolean := True;
index 12bbec4..9e0d847 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (VxWorks Version Alpha)                          --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -136,6 +136,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 3e1e3cf..cdf4fce 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (VxWorks version M68K)                          --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -136,6 +136,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := False;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 19c96d0..3cc13d7 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (VxWorks Version Mips)                           --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -136,6 +136,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index bcb415c..b73f808 100644 (file)
@@ -136,6 +136,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 8ddf3b0..c6a9340 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                       (VxWorks Version Sparc/64)                         --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -138,6 +138,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 1575fdf..bd1a4d3 100644 (file)
@@ -136,6 +136,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 1fa021d..d762fca 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (VxWorks Version Xscale)                         --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -136,6 +136,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index eca2dc6..ff5a57d 100644 (file)
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                            (Compiler Version)                            --
 --                                                                          --
---          Copyright (C) 1992-2003 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2004 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Machine_Overflows         : constant Boolean := False;
    Machine_Rounds            : constant Boolean := True;
    OpenVMS                   : constant Boolean := False;
+   Preallocated_Stacks       : constant Boolean := False;
    Signed_Zeros              : constant Boolean := True;
    Stack_Check_Default       : constant Boolean := False;
    Stack_Check_Probes        : constant Boolean := False;
index 7be260b..9447471 100644 (file)
@@ -53,6 +53,7 @@ package body Targparm is
       FFO,  --   Fractional_Fixed_Ops
       MOV,  --   Machine_Overflows
       MRN,  --   Machine_Rounds
+      PAS,  --   Preallocated_Stacks
       S64,  --   Support_64_Bit_Divides
       SAG,  --   Support_Aggregates
       SCA,  --   Support_Composite_Assign
@@ -94,6 +95,7 @@ package body Targparm is
    FFO_Str : aliased constant Source_Buffer := "Fractional_Fixed_Ops";
    MOV_Str : aliased constant Source_Buffer := "Machine_Overflows";
    MRN_Str : aliased constant Source_Buffer := "Machine_Rounds";
+   PAS_Str : aliased constant Source_Buffer := "Preallocated_Stacks";
    S64_Str : aliased constant Source_Buffer := "Support_64_Bit_Divides";
    SAG_Str : aliased constant Source_Buffer := "Support_Aggregates";
    SCA_Str : aliased constant Source_Buffer := "Support_Composite_Assign";
@@ -132,6 +134,7 @@ package body Targparm is
       FFO_Str'Access,
       MOV_Str'Access,
       MRN_Str'Access,
+      PAS_Str'Access,
       S64_Str'Access,
       SAG_Str'Access,
       SCA_Str'Access,
@@ -557,6 +560,7 @@ package body Targparm is
                      when FFO => Fractional_Fixed_Ops_On_Target      := Result;
                      when MOV => Machine_Overflows_On_Target         := Result;
                      when MRN => Machine_Rounds_On_Target            := Result;
+                     when PAS => Preallocated_Stacks_On_Target       := Result;
                      when S64 => Support_64_Bit_Divides_On_Target    := Result;
                      when SAG => Support_Aggregates_On_Target        := Result;
                      when SCA => Support_Composite_Assign_On_Target  := Result;
index d7a2514..48f8c32 100644 (file)
@@ -345,6 +345,13 @@ package Targparm is
    --
    --    The routine __gnat_handler_installed is not imported
 
+   Preallocated_Stacks_On_Target : Boolean;
+   --  If this flag is True, then the expander preallocates all task stacks
+   --  at compile time. If the flag is False, then task stacks are not pre-
+   --  allocated, and task stack allocation is the responsibility of the
+   --  run-time (which typically delegates the task to the underlying
+   --  operating system environment).
+
    ---------------------
    -- Duration Format --
    ---------------------