[multiple changes]

2004-02-04  Robert Dewar  <dewar@gnat.com>

	* 5gtasinf.adb, 5gtasinf.ads, 5gtaprop.adb, ali.adb,
	ali.ads, gprcmd.adb: Minor reformatting

	* bindgen.adb: Output restrictions string for new style restrictions
	handling

	* impunit.adb: Add s-rident.ads (System.Rident) and
	s-restri (System.Restrictions)

	* lib-writ.adb: Fix bug in writing restrictions string (last few
	entries wrong)

	* s-restri.ads, s-restri.adb: Change name Restrictions to
	Run_Time_Restrictions to avoid conflict with package name.
	Add circuit to read and acquire run time restrictions.

2004-02-04  Jose Ruiz  <ruiz@act-europe.fr>

	* restrict.ads, restrict.adb: Use the new restriction
	No_Task_Attributes_Package instead of the old No_Task_Attributes.

	* sem_prag.adb: No_Task_Attributes is a synonym of
	No_Task_Attributes_Package.

	* snames.ads, snames.adb: New entry for proper handling of
	No_Task_Attributes.

	* s-rident.ads: Adding restriction No_Task_Attributes_Package
	(AI-00249) that supersedes the GNAT specific restriction
	No_Task_Attributes.

2004-02-04  Ed Schonberg  <schonberg@gnat.com>

	* sem_prag.adb:
	(Analyze_Pragma, case Warnings): In an inlined body, as in an instance
	 body, an identifier may be wrapped in an unchecked conversion.

2004-02-04  Vincent Celier  <celier@gnat.com>

	* lib-writ.ads: Comment update for the W lines

	* bld.adb: (Expression): An empty string list is static

	* fname-uf.adb: Minor comment update

	* fname-uf.ads: (Get_File_Name): Document new parameter May_Fail

	* gnatbind.adb: Initialize Cumulative_Restrictions with the
	restrictions on the target.

From-SVN: r77233
This commit is contained in:
Arnaud Charlet 2004-02-04 12:06:19 +01:00
parent c23796791c
commit 06effe875c
23 changed files with 685 additions and 499 deletions

View File

@ -141,7 +141,6 @@ package body System.Task_Primitives.Operations is
procedure Stack_Guard (T : ST.Task_ID; On : Boolean) is
pragma Unreferenced (T);
pragma Unreferenced (On);
begin
null;
end Stack_Guard;
@ -251,7 +250,6 @@ package body System.Task_Primitives.Operations is
procedure Finalize_Lock (L : access Lock) is
Result : Interfaces.C.int;
begin
Result := pthread_mutex_destroy (L);
pragma Assert (Result = 0);
@ -259,7 +257,6 @@ package body System.Task_Primitives.Operations is
procedure Finalize_Lock (L : access RTS_Lock) is
Result : Interfaces.C.int;
begin
Result := pthread_mutex_destroy (L);
pragma Assert (Result = 0);
@ -271,10 +268,8 @@ package body System.Task_Primitives.Operations is
procedure Write_Lock (L : access Lock; Ceiling_Violation : out Boolean) is
Result : Interfaces.C.int;
begin
Result := pthread_mutex_lock (L);
Ceiling_Violation := Result = FUNC_ERR and then errno = EINVAL;
pragma Assert (Result /= FUNC_ERR);
end Write_Lock;
@ -283,7 +278,6 @@ package body System.Task_Primitives.Operations is
(L : access RTS_Lock; Global_Lock : Boolean := False)
is
Result : Interfaces.C.int;
begin
if not Single_Lock or else Global_Lock then
Result := pthread_mutex_lock (L);
@ -293,7 +287,6 @@ package body System.Task_Primitives.Operations is
procedure Write_Lock (T : Task_ID) is
Result : Interfaces.C.int;
begin
if not Single_Lock then
Result := pthread_mutex_lock (T.Common.LL.L'Access);
@ -316,7 +309,6 @@ package body System.Task_Primitives.Operations is
procedure Unlock (L : access Lock) is
Result : Interfaces.C.int;
begin
Result := pthread_mutex_unlock (L);
pragma Assert (Result = 0);
@ -324,7 +316,6 @@ package body System.Task_Primitives.Operations is
procedure Unlock (L : access RTS_Lock; Global_Lock : Boolean := False) is
Result : Interfaces.C.int;
begin
if not Single_Lock or else Global_Lock then
Result := pthread_mutex_unlock (L);
@ -334,7 +325,6 @@ package body System.Task_Primitives.Operations is
procedure Unlock (T : Task_ID) is
Result : Interfaces.C.int;
begin
if not Single_Lock then
Result := pthread_mutex_unlock (T.Common.LL.L'Access);
@ -543,7 +533,6 @@ package body System.Task_Primitives.Operations is
Reason : System.Tasking.Task_States)
is
pragma Unreferenced (Reason);
Result : Interfaces.C.int;
begin
Result := pthread_cond_signal (T.Common.LL.CV'Access);
@ -813,10 +802,8 @@ package body System.Task_Primitives.Operations is
procedure Exit_Task is
Result : Interfaces.C.int;
begin
Result := pthread_set_ada_tcb (pthread_self, System.Null_Address);
pragma Assert (Result = 0);
end Exit_Task;
@ -826,7 +813,6 @@ package body System.Task_Primitives.Operations is
procedure Abort_Task (T : Task_ID) is
Result : Interfaces.C.int;
begin
Result :=
pthread_kill (T.Common.LL.Thread,
@ -854,7 +840,6 @@ package body System.Task_Primitives.Operations is
function Check_No_Locks (Self_ID : ST.Task_ID) return Boolean is
pragma Unreferenced (Self_ID);
begin
return True;
end Check_No_Locks;
@ -961,9 +946,10 @@ package body System.Task_Primitives.Operations is
if Result = FUNC_ERR then
raise Storage_Error; -- Insufficient resources.
end if;
end Initialize_Athread_Library;
-- Package initialization
begin
Initialize_Athread_Library;
end System.Task_Primitives.Operations;

View File

@ -77,16 +77,14 @@ package body System.Task_Info is
---------
function "+" (R : Resource_T) return Resource_Vector_T is
Result : Resource_Vector_T := NO_RESOURCES;
Result : Resource_Vector_T := NO_RESOURCES;
begin
Result (Resource_T'Pos (R)) := True;
return Result;
end "+";
function "+" (R1, R2 : Resource_T) return Resource_Vector_T is
Result : Resource_Vector_T := NO_RESOURCES;
Result : Resource_Vector_T := NO_RESOURCES;
begin
Result (Resource_T'Pos (R1)) := True;
Result (Resource_T'Pos (R2)) := True;
@ -94,44 +92,37 @@ package body System.Task_Info is
end "+";
function "+"
(R : Resource_T;
S : Resource_Vector_T)
return Resource_Vector_T
(R : Resource_T;
S : Resource_Vector_T) return Resource_Vector_T
is
Result : Resource_Vector_T := S;
Result : Resource_Vector_T := S;
begin
Result (Resource_T'Pos (R)) := True;
return Result;
end "+";
function "+"
(S : Resource_Vector_T;
R : Resource_T)
return Resource_Vector_T
(S : Resource_Vector_T;
R : Resource_T) return Resource_Vector_T
is
Result : Resource_Vector_T := S;
Result : Resource_Vector_T := S;
begin
Result (Resource_T'Pos (R)) := True;
return Result;
end "+";
function "+" (S1, S2 : Resource_Vector_T) return Resource_Vector_T is
Result : Resource_Vector_T;
Result : Resource_Vector_T;
begin
Result := S1 or S2;
return Result;
end "+";
function "-"
(S : Resource_Vector_T;
R : Resource_T)
return Resource_Vector_T
(S : Resource_Vector_T;
R : Resource_T) return Resource_Vector_T
is
Result : Resource_Vector_T := S;
Result : Resource_Vector_T := S;
begin
Result (Resource_T'Pos (R)) := False;
return Result;
@ -177,21 +168,23 @@ package body System.Task_Info is
end if;
if Attr.NDPRI /= NDP_NONE then
-- ??? why is that comment out, should it be removed ?
-- ??? why is this commented out, should it be removed ?
-- if Geteuid /= 0 then
-- raise Permission_Error;
-- end if;
Status := sproc_attr_setprio
(Sproc_Attr'Unrestricted_Access,
int (Attr.NDPRI));
Status :=
sproc_attr_setprio
(Sproc_Attr'Unrestricted_Access, int (Attr.NDPRI));
end if;
Status := sproc_create
(Sproc'Unrestricted_Access,
Sproc_Attr'Unrestricted_Access,
null,
System.Null_Address);
Status :=
sproc_create
(Sproc'Unrestricted_Access,
Sproc_Attr'Unrestricted_Access,
null,
System.Null_Address);
if Status /= 0 then
Status := sproc_attr_destroy (Sproc_Attr'Unrestricted_Access);
@ -199,7 +192,6 @@ package body System.Task_Info is
end if;
Status := sproc_attr_destroy (Sproc_Attr'Unrestricted_Access);
end if;
if Status /= 0 then
@ -217,12 +209,10 @@ package body System.Task_Info is
(Sproc_Resources : Resource_Vector_T := NO_RESOURCES;
CPU : CPU_Number := ANY_CPU;
Resident : Page_Locking := NOLOCK;
NDPRI : Non_Degrading_Priority := NDP_NONE)
return sproc_t
NDPRI : Non_Degrading_Priority := NDP_NONE) return sproc_t
is
Attr : constant Sproc_Attributes :=
(Sproc_Resources, CPU, Resident, NDPRI);
(Sproc_Resources, CPU, Resident, NDPRI);
begin
return New_Sproc (Attr);
end New_Sproc;
@ -233,8 +223,7 @@ package body System.Task_Info is
function Unbound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
Thread_Timeslice : Duration := 0.0)
return Thread_Attributes
Thread_Timeslice : Duration := 0.0) return Thread_Attributes
is
begin
return (False, Thread_Resources, Thread_Timeslice);
@ -265,11 +254,10 @@ package body System.Task_Info is
CPU : CPU_Number := ANY_CPU;
Resident : Page_Locking := NOLOCK;
NDPRI : Non_Degrading_Priority := NDP_NONE)
return Thread_Attributes
return Thread_Attributes
is
Sproc : constant sproc_t := New_Sproc
(Sproc_Resources, CPU, Resident, NDPRI);
(Sproc_Resources, CPU, Resident, NDPRI);
begin
return (True, Thread_Resources, Thread_Timeslice, Sproc);
end Bound_Thread_Attributes;
@ -280,8 +268,7 @@ package body System.Task_Info is
function New_Unbound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
Thread_Timeslice : Duration := 0.0)
return Task_Info_Type
Thread_Timeslice : Duration := 0.0) return Task_Info_Type
is
begin
return new Thread_Attributes'
@ -295,8 +282,7 @@ package body System.Task_Info is
function New_Bound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
Thread_Timeslice : Duration := 0.0;
Sproc : sproc_t)
return Task_Info_Type
Sproc : sproc_t) return Task_Info_Type
is
begin
return new Thread_Attributes'
@ -314,11 +300,10 @@ package body System.Task_Info is
CPU : CPU_Number := ANY_CPU;
Resident : Page_Locking := NOLOCK;
NDPRI : Non_Degrading_Priority := NDP_NONE)
return Task_Info_Type
return Task_Info_Type
is
Sproc : constant sproc_t := New_Sproc
(Sproc_Resources, CPU, Resident, NDPRI);
(Sproc_Resources, CPU, Resident, NDPRI);
begin
return new Thread_Attributes'
(True, Thread_Resources, Thread_Timeslice, Sproc);

View File

@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
-- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
-- Copyright (C) 1992-2004 Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -63,14 +63,14 @@ package System.Task_Info is
-- Each thread has a number of attributes that dictate it's scheduling.
-- These attributes are:
--
-- Bound_To_Sproc: whether the thread is bound to a specific sproc
-- for its entire lifetime.
--
-- Timeslice: Amount of time that a thread is allowed to execute
-- before the system yeilds control to another thread
-- of equal priority.
--
-- Resource_Vector: A bitmask used to control the binding of threads
-- to sprocs.
--
@ -113,33 +113,27 @@ package System.Task_Info is
package Resource_Vector_Functions is
function "+"
(R : Resource_T)
return Resource_Vector_T;
(R : Resource_T) return Resource_Vector_T;
function "+"
(R1 : Resource_T;
R2 : Resource_T)
return Resource_Vector_T;
(R1 : Resource_T;
R2 : Resource_T) return Resource_Vector_T;
function "+"
(R : Resource_T;
S : Resource_Vector_T)
return Resource_Vector_T;
(R : Resource_T;
S : Resource_Vector_T) return Resource_Vector_T;
function "+"
(S : Resource_Vector_T;
R : Resource_T)
return Resource_Vector_T;
(S : Resource_Vector_T;
R : Resource_T) return Resource_Vector_T;
function "+"
(S1 : Resource_Vector_T;
S2 : Resource_Vector_T)
return Resource_Vector_T;
(S1 : Resource_Vector_T;
S2 : Resource_Vector_T) return Resource_Vector_T;
function "-"
(S : Resource_Vector_T;
R : Resource_T)
return Resource_Vector_T;
(S : Resource_Vector_T;
R : Resource_T) return Resource_Vector_T;
end Resource_Vector_Functions;
----------------------
@ -208,8 +202,7 @@ package System.Task_Info is
(Sproc_Resources : Resource_Vector_T := NO_RESOURCES;
CPU : CPU_Number := ANY_CPU;
Resident : Page_Locking := NOLOCK;
NDPRI : Non_Degrading_Priority := NDP_NONE)
return sproc_t;
NDPRI : Non_Degrading_Priority := NDP_NONE) return sproc_t;
-- Allocates a sproc_t control structure and creates the
-- corresponding sproc.
@ -239,14 +232,12 @@ package System.Task_Info is
function Unbound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
Thread_Timeslice : Duration := 0.0)
return Thread_Attributes;
Thread_Timeslice : Duration := 0.0) return Thread_Attributes;
function Bound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
Thread_Timeslice : Duration := 0.0;
Sproc : sproc_t)
return Thread_Attributes;
Sproc : sproc_t) return Thread_Attributes;
function Bound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
@ -255,20 +246,19 @@ package System.Task_Info is
CPU : CPU_Number := ANY_CPU;
Resident : Page_Locking := NOLOCK;
NDPRI : Non_Degrading_Priority := NDP_NONE)
return Thread_Attributes;
return Thread_Attributes;
type Task_Info_Type is access all Thread_Attributes;
function New_Unbound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
Thread_Timeslice : Duration := 0.0)
return Task_Info_Type;
return Task_Info_Type;
function New_Bound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
Thread_Timeslice : Duration := 0.0;
Sproc : sproc_t)
return Task_Info_Type;
Sproc : sproc_t) return Task_Info_Type;
function New_Bound_Thread_Attributes
(Thread_Resources : Resource_Vector_T := NO_RESOURCES;
@ -277,7 +267,7 @@ package System.Task_Info is
CPU : CPU_Number := ANY_CPU;
Resident : Page_Locking := NOLOCK;
NDPRI : Non_Degrading_Priority := NDP_NONE)
return Task_Info_Type;
return Task_Info_Type;
Unspecified_Task_Info : constant Task_Info_Type := null;

View File

@ -1,3 +1,55 @@
2004-02-04 Robert Dewar <dewar@gnat.com>
* 5gtasinf.adb, 5gtasinf.ads, 5gtaprop.adb, ali.adb,
ali.ads, gprcmd.adb: Minor reformatting
* bindgen.adb: Output restrictions string for new style restrictions
handling
* impunit.adb: Add s-rident.ads (System.Rident) and
s-restri (System.Restrictions)
* lib-writ.adb: Fix bug in writing restrictions string (last few
entries wrong)
* s-restri.ads, s-restri.adb: Change name Restrictions to
Run_Time_Restrictions to avoid conflict with package name.
Add circuit to read and acquire run time restrictions.
2004-02-04 Jose Ruiz <ruiz@act-europe.fr>
* restrict.ads, restrict.adb: Use the new restriction
No_Task_Attributes_Package instead of the old No_Task_Attributes.
* sem_prag.adb: No_Task_Attributes is a synonym of
No_Task_Attributes_Package.
* snames.ads, snames.adb: New entry for proper handling of
No_Task_Attributes.
* s-rident.ads: Adding restriction No_Task_Attributes_Package
(AI-00249) that supersedes the GNAT specific restriction
No_Task_Attributes.
2004-02-04 Ed Schonberg <schonberg@gnat.com>
* sem_prag.adb:
(Analyze_Pragma, case Warnings): In an inlined body, as in an instance
body, an identifier may be wrapped in an unchecked conversion.
2004-02-04 Vincent Celier <celier@gnat.com>
* lib-writ.ads: Comment update for the W lines
* bld.adb: (Expression): An empty string list is static
* fname-uf.adb: Minor comment update
* fname-uf.ads: (Get_File_Name): Document new parameter May_Fail
* gnatbind.adb: Initialize Cumulative_Restrictions with the
restrictions on the target.
2004-02-03 Kazu Hirata <kazu@cs.umass.edu>
* ada/trans.c (gigi): Use gen_rtx_SYMBOL_REF instead of

View File

@ -24,13 +24,13 @@
-- --
------------------------------------------------------------------------------
with Butil; use Butil;
with Debug; use Debug;
with Fname; use Fname;
with Namet; use Namet;
with Opt; use Opt;
with Osint; use Osint;
with Output; use Output;
with Butil; use Butil;
with Debug; use Debug;
with Fname; use Fname;
with Namet; use Namet;
with Opt; use Opt;
with Osint; use Osint;
with Output; use Output;
package body ALI is
@ -105,8 +105,7 @@ package body ALI is
Err : Boolean;
Read_Xref : Boolean := False;
Read_Lines : String := "";
Ignore_Lines : String := "X")
return ALI_Id
Ignore_Lines : String := "X") return ALI_Id
is
P : Text_Ptr := T'First;
Line : Logical_Line_Number := 1;
@ -328,8 +327,10 @@ package body ALI is
-- Get_Name --
--------------
function Get_Name (Lower : Boolean := False;
Ignore_Spaces : Boolean := False) return Name_Id is
function Get_Name
(Lower : Boolean := False;
Ignore_Spaces : Boolean := False) return Name_Id
is
begin
Name_Len := 0;
Skip_Space;

View File

@ -814,8 +814,7 @@ package ALI is
Err : Boolean;
Read_Xref : Boolean := False;
Read_Lines : String := "";
Ignore_Lines : String := "X")
return ALI_Id;
Ignore_Lines : String := "X") return ALI_Id;
-- Given the text, T, of an ALI file, F, scan and store the information
-- from the file, and return the Id of the resulting entry in the ALI
-- table. Switch settings may be modified as described above in the

View File

@ -141,6 +141,16 @@ package body Bindgen is
procedure Gen_Output_File_C (Filename : String);
-- Generate output file (C code case)
procedure Gen_Restrictions_String_1;
-- Generate first restrictions string, which consists of the parameters
-- the first R line, as described in lib-writ.ads, with the restrictions
-- being those for the entire partition (from Cumulative_Restrictions).
procedure Gen_Restrictions_String_2;
-- Generate first restrictions string, which consists of the parameters
-- the second R line, as described in lib-writ.ads, with the restrictions
-- being those for the entire partition (from Cumulative_Restrictions).
procedure Gen_Versions_Ada;
-- Output series of definitions for unit versions (Ada code case)
@ -358,13 +368,15 @@ package body Bindgen is
Set_String (" Restrictions : constant String :=");
Write_Statement_Buffer;
Set_String (" """);
Gen_Restrictions_String_1;
Set_String (""" &");
Write_Statement_Buffer;
for J in All_Restrictions loop
null;
end loop;
Set_String (""";");
Set_String (" """);
Gen_Restrictions_String_2;
Set_String (""" & ASCII.Nul;");
Write_Statement_Buffer;
WBI ("");
@ -606,11 +618,8 @@ package body Bindgen is
-- Generate definition for restrictions string
Set_String (" const char *restrictions = """);
for J in All_Restrictions loop
null;
end loop;
Gen_Restrictions_String_1;
Gen_Restrictions_String_2;
Set_String (""";");
Write_Statement_Buffer;
@ -2453,6 +2462,52 @@ package body Bindgen is
Close_Binder_Output;
end Gen_Output_File_C;
-------------------------------
-- Gen_Restrictions_String_1 --
-------------------------------
procedure Gen_Restrictions_String_1 is
begin
for R in All_Boolean_Restrictions loop
if Cumulative_Restrictions.Set (R) then
Set_Char ('r');
elsif Cumulative_Restrictions.Violated (R) then
Set_Char ('v');
else
Set_Char ('n');
end if;
end loop;
end Gen_Restrictions_String_1;
-------------------------------
-- Gen_Restrictions_String_2 --
-------------------------------
procedure Gen_Restrictions_String_2 is
begin
for RP in All_Parameter_Restrictions loop
if Cumulative_Restrictions.Set (RP) then
Set_Char ('r');
Set_Int (Int (Cumulative_Restrictions.Value (RP)));
else
Set_Char ('n');
end if;
if not Cumulative_Restrictions.Violated (RP)
or else RP not in Checked_Parameter_Restrictions
then
Set_Char ('n');
else
Set_Char ('v');
Set_Int (Int (Cumulative_Restrictions.Count (RP)));
if Cumulative_Restrictions.Unknown (RP) then
Set_Char ('+');
end if;
end if;
end loop;
end Gen_Restrictions_String_2;
----------------------
-- Gen_Versions_Ada --
----------------------

View File

@ -525,11 +525,16 @@ package body Bld is
First_Expression_In_List (Current_Term);
begin
if String_Node /= Empty_Node then
if String_Node = Empty_Node then
-- If String_Node is nil, it is an empty list,
-- there is nothing to do
-- set Expression_Kind if it is still Undecided
if Expression_Kind = Undecided then
Expression_Kind := Static_String;
end if;
else
Expression
(Project => Project,
First_Term => Tree.First_Term (String_Node),

View File

@ -123,8 +123,8 @@ package body Fname.UF is
-------------------
function Get_File_Name
(Uname : Unit_Name_Type;
Subunit : Boolean;
(Uname : Unit_Name_Type;
Subunit : Boolean;
May_Fail : Boolean := False) return File_Name_Type
is
Unit_Char : Character;
@ -387,12 +387,12 @@ package body Fname.UF is
-- If we are in the second search of the table, we accept
-- the file name without checking, because we know that
-- the file does not exist.
-- the file does not exist, except when May_Fail is True,
-- in which case we return No_File.
if No_File_Check then
if May_Fail then
return No_File;
else
return Fnam;
end if;

View File

@ -44,14 +44,18 @@ package Fname.UF is
-----------------
function Get_File_Name
(Uname : Unit_Name_Type;
Subunit : Boolean;
(Uname : Unit_Name_Type;
Subunit : Boolean;
May_Fail : Boolean := False) return File_Name_Type;
-- This function returns the file name that corresponds to a given unit
-- name, Uname. The Subunit parameter is set True for subunits, and
-- false for all other kinds of units. The caller is responsible for
-- ensuring that the unit name meets the requirements given in package
-- Uname and described above.
-- When May_Fail is True, if the file cannot be found, this function
-- returns No_File. When it is False, if the file cannot be found,
-- a file name compatible with one pattern Source_File_Name pragma is
-- returned.
procedure Initialize;
-- Initialize internal tables. This is called automatically when the

View File

@ -447,6 +447,12 @@ begin
Targparm.Get_Target_Parameters;
-- Initialize Cumulative_Restrictions with the restrictions on the target
-- scanned from the system.ads file. Then as we read ALI files, we will
-- accumulate additional restrictions specified in other files.
Cumulative_Restrictions := Targparm.Restrictions_On_Target;
-- On OpenVMS, when -L is used, all external names used in pragmas Export
-- are in upper case. The reason is that on OpenVMS, the macro-assembler
-- MACASM-32, used to build Stand-Alone Libraries, only understands

View File

@ -113,6 +113,7 @@ procedure Gprcmd is
Put_Line
(Standard_Error,
"bad call to gprcmd with" & Argument_Count'Img & " arguments.");
for J in 0 .. Argument_Count loop
Put (Standard_Error, Argument (J) & " ");
end loop;
@ -473,9 +474,9 @@ begin
end if;
end;
else
-- Uknown command
-- Unknown command
else
Check_Args (False);
end if;
end;

View File

@ -297,6 +297,8 @@ package body Impunit is
"s-assert", -- System.Assertions
"s-memory", -- System.Memory
"s-parint", -- System.Partition_Interface
"s-restri", -- System.Restrictions
"s-rident", -- System.Rident
"s-tasinf", -- System.Task_Info
"s-wchcnv", -- System.Wch_Cnv
"s-wchcon"); -- System.Wch_Con

View File

@ -691,7 +691,7 @@ package body Lib.Writ is
end loop;
end Write_With_Lines;
-- Start of processing for Writ_ALI
-- Start of processing for Write_ALI
begin
-- We never write an ALI file if the original operating mode was
@ -919,7 +919,6 @@ package body Lib.Writ is
then
if not Has_No_Elaboration_Code (Cunit (Unit)) then
Main_Restrictions.Violated (No_Elaboration_Code) := True;
Main_Restrictions.Count (No_Elaboration_Code) := -1;
end if;
end if;
end loop;

View File

@ -406,11 +406,13 @@ package Lib.Writ is
-- One of these lines is present for each unit that is mentioned in
-- an explicit with clause by the current unit. The first parameter
-- is the unit name in internal format. The second parameter is the
-- file name of the file that must be compiled to compile this unit
-- (which is usually the file for the body, except for packages
-- which have no body). The third parameter is the file name of the
-- library information file that contains the results of compiling
-- this unit. The optional modifiers are used as follows:
-- file name of the file that must be compiled to compile this unit.
-- It is usually the file for the body, except for packages
-- which have no body; for units that need a body, if the source file
-- for the body cannot be found, the file name of the spec is used
-- instead. The third parameter is the file name of the library
-- information file that contains the results of compiling this unit.
-- The optional modifiers are used as follows:
--
-- E pragma Elaborate applies to this unit
--

View File

@ -372,7 +372,7 @@ package body Restrict is
and then Restrictions.Set (No_Protected_Type_Allocators)
and then Restrictions.Set (No_Local_Protected_Objects)
and then Restrictions.Set (No_Requeue_Statements)
and then Restrictions.Set (No_Task_Attributes)
and then Restrictions.Set (No_Task_Attributes_Package)
and then Restrictions.Set (Max_Asynchronous_Select_Nesting)
and then Restrictions.Set (Max_Task_Entries)
and then Restrictions.Set (Max_Protected_Entries)
@ -472,7 +472,7 @@ package body Restrict is
Set_Restriction (No_Protected_Type_Allocators, N);
Set_Restriction (No_Local_Protected_Objects, N);
Set_Restriction (No_Requeue_Statements, N);
Set_Restriction (No_Task_Attributes, N);
Set_Restriction (No_Task_Attributes_Package, N);
-- Set parameter restrictions

View File

@ -77,27 +77,27 @@ package Restrict is
end record;
Unit_Array : constant array (Positive range <>) of Unit_Entry := (
(No_Asynchronous_Control, "a-astaco"),
(No_Calendar, "a-calend"),
(No_Calendar, "calendar"),
(No_Delay, "a-calend"),
(No_Delay, "calendar"),
(No_Dynamic_Priorities, "a-dynpri"),
(No_Finalization, "a-finali"),
(No_IO, "a-direio"),
(No_IO, "directio"),
(No_IO, "a-sequio"),
(No_IO, "sequenio"),
(No_IO, "a-ststio"),
(No_IO, "a-textio"),
(No_IO, "text_io "),
(No_IO, "a-witeio"),
(No_Task_Attributes, "a-tasatt"),
(No_Streams, "a-stream"),
(No_Unchecked_Conversion, "a-unccon"),
(No_Unchecked_Conversion, "unchconv"),
(No_Unchecked_Deallocation, "a-uncdea"),
(No_Unchecked_Deallocation, "unchdeal"));
(No_Asynchronous_Control, "a-astaco"),
(No_Calendar, "a-calend"),
(No_Calendar, "calendar"),
(No_Delay, "a-calend"),
(No_Delay, "calendar"),
(No_Dynamic_Priorities, "a-dynpri"),
(No_Finalization, "a-finali"),
(No_IO, "a-direio"),
(No_IO, "directio"),
(No_IO, "a-sequio"),
(No_IO, "sequenio"),
(No_IO, "a-ststio"),
(No_IO, "a-textio"),
(No_IO, "text_io "),
(No_IO, "a-witeio"),
(No_Task_Attributes_Package, "a-tasatt"),
(No_Streams, "a-stream"),
(No_Unchecked_Conversion, "a-unccon"),
(No_Unchecked_Conversion, "unchconv"),
(No_Unchecked_Deallocation, "a-uncdea"),
(No_Unchecked_Deallocation, "unchdeal"));
-- The following map has True for all GNAT pragmas. It is used to
-- implement pragma Restrictions (No_Implementation_Restrictions)
@ -123,7 +123,7 @@ package Restrict is
No_Select_Statements => True,
No_Standard_Storage_Pools => True,
No_Streams => True,
No_Task_Attributes => True,
No_Task_Attributes_Package => True,
No_Task_Termination => True,
No_Wide_Characters => True,
Static_Priorities => True,

View File

@ -40,9 +40,9 @@ package body System.Restrictions is
function Abort_Allowed return Boolean is
begin
return Restrictions.Violated (No_Abort_Statements)
return Run_Time_Restrictions.Violated (No_Abort_Statements)
or else
Restrictions.Violated (Max_Asynchronous_Select_Nesting);
Run_Time_Restrictions.Violated (Max_Asynchronous_Select_Nesting);
end Abort_Allowed;
---------------------
@ -51,12 +51,98 @@ package body System.Restrictions is
function Tasking_Allowed return Boolean is
begin
return Restrictions.Violated (Max_Tasks)
return Run_Time_Restrictions.Violated (Max_Tasks)
or else
Restrictions.Violated (No_Tasking);
Run_Time_Restrictions.Violated (No_Tasking);
end Tasking_Allowed;
-- Package elaboration code (acquire restrictions)
begin
null;
Acquire_Restrictions : declare
subtype Big_String is String (Positive);
type Big_String_Ptr is access all Big_String;
RString : Big_String_Ptr;
pragma Import (C, RString, "__gl_restrictions");
P : Natural := 1;
-- Pointer to scan string
C : Character;
-- Next character from string
function Get_Char return Character;
-- Get next character from string
function Get_Natural return Natural;
-- Scan out natural value known to be in range, updating P past it
--------------
-- Get_Char --
--------------
function Get_Char return Character is
begin
P := P + 1;
return RString (P - 1);
end Get_Char;
-----------------
-- Get_Natural --
-----------------
function Get_Natural return Natural is
N : Natural := 0;
begin
while RString (P) in '0' .. '9' loop
N := N * 10 + (Character'Pos (Get_Char) - Character'Pos ('0'));
end loop;
return N;
end Get_Natural;
-- Start of processing for Acquire_Restrictions
begin
-- Acquire data corresponding to first R line
for R in All_Boolean_Restrictions loop
C := Get_Char;
if C = 'v' then
Run_Time_Restrictions.Violated (R) := True;
elsif C = 'r' then
Run_Time_Restrictions.Set (R) := True;
end if;
end loop;
-- Acquire data corresponding to second R line
for RP in All_Parameter_Restrictions loop
-- Acquire restrictions pragma information
if Get_Char = 'r' then
Run_Time_Restrictions.Set (RP) := True;
Run_Time_Restrictions.Value (RP) := Get_Natural;
end if;
-- Acquire restrictions violations information
if Get_Char = 'v' then
Run_Time_Restrictions.Violated (RP) := True;
Run_Time_Restrictions.Count (RP) := Get_Natural;
if RString (P) = '+' then
Run_Time_Restrictions.Unknown (RP) := True;
P := P + 1;
end if;
end if;
end loop;
end Acquire_Restrictions;
end System.Restrictions;

View File

@ -39,7 +39,7 @@ package System.Restrictions is
pragma Discard_Names;
package Rident is new System.Rident;
Restrictions : Rident.Restrictions_Info;
Run_Time_Restrictions : Rident.Restrictions_Info;
------------------
-- Subprograms --

View File

@ -97,7 +97,7 @@ package System.Rident is
No_Standard_Storage_Pools, -- GNAT
No_Streams, -- GNAT
No_Task_Allocators, -- (RM D.7(7))
No_Task_Attributes, -- GNAT
No_Task_Attributes_Package, -- GNAT
No_Task_Hierarchy, -- (RM D.7(3), H.4(3))
No_Task_Termination, -- GNAT (Ravenscar)
No_Tasking, -- GNAT
@ -154,8 +154,9 @@ package System.Rident is
-- Synonyms permitted for historical purposes of compatibility
-- No_Requeue synonym for No_Requeue_Statements
-- No_Tasking synonym for Max_Tasks => 0
-- No_Requeue synonym for No_Requeue_Statements
-- No_Tasking synonym for Max_Tasks => 0
-- No_Task_Attributes synonym for No_Task_Attributes_Package
subtype All_Restrictions is Restriction_Id range
Boolean_Entry_Barriers .. Max_Storage_At_Blocking;

View File

@ -3280,6 +3280,15 @@ package body Sem_Prag is
Set_Restriction (No_Requeue_Statements, N);
Set_Warning (No_Requeue_Statements);
-- No_Task_Attributes is a synonym for
-- No_Task_Attributes_Package
elsif Chars (Expr) = Name_No_Task_Attributes then
Check_Restriction
(No_Implementation_Restrictions, Arg);
Set_Restriction (No_Task_Attributes_Package, N);
Set_Warning (No_Task_Attributes_Package);
-- Normal processing for all other cases
else
@ -9648,7 +9657,8 @@ package body Sem_Prag is
-- the formal may be wrapped in a conversion if the actual
-- is a conversion. Retrieve the real entity name.
if In_Instance_Body
if (In_Instance_Body
or else In_Inlined_Body)
and then Nkind (E_Id) = N_Unchecked_Type_Conversion
then
E_Id := Expression (E_Id);

View File

@ -335,6 +335,7 @@ package body Snames is
"parameter_types#" &
"reference#" &
"no_requeue#" &
"no_task_attributes#" &
"restricted#" &
"result_mechanism#" &
"result_type#" &

View File

@ -524,33 +524,34 @@ package Snames is
Name_Parameter_Types : constant Name_Id := N + 275;
Name_Reference : constant Name_Id := N + 276;
Name_No_Requeue : constant Name_Id := N + 277;
Name_Restricted : constant Name_Id := N + 278;
Name_Result_Mechanism : constant Name_Id := N + 279;
Name_Result_Type : constant Name_Id := N + 280;
Name_Runtime : constant Name_Id := N + 281;
Name_SB : constant Name_Id := N + 282;
Name_Secondary_Stack_Size : constant Name_Id := N + 283;
Name_Section : constant Name_Id := N + 284;
Name_Semaphore : constant Name_Id := N + 285;
Name_Spec_File_Name : constant Name_Id := N + 286;
Name_Static : constant Name_Id := N + 287;
Name_Stack_Size : constant Name_Id := N + 288;
Name_Subunit_File_Name : constant Name_Id := N + 289;
Name_Task_Stack_Size_Default : constant Name_Id := N + 290;
Name_Task_Type : constant Name_Id := N + 291;
Name_Time_Slicing_Enabled : constant Name_Id := N + 292;
Name_Top_Guard : constant Name_Id := N + 293;
Name_UBA : constant Name_Id := N + 294;
Name_UBS : constant Name_Id := N + 295;
Name_UBSB : constant Name_Id := N + 296;
Name_Unit_Name : constant Name_Id := N + 297;
Name_Unknown : constant Name_Id := N + 298;
Name_Unrestricted : constant Name_Id := N + 299;
Name_Uppercase : constant Name_Id := N + 300;
Name_User : constant Name_Id := N + 301;
Name_VAX_Float : constant Name_Id := N + 302;
Name_VMS : constant Name_Id := N + 303;
Name_Working_Storage : constant Name_Id := N + 304;
Name_No_Task_Attributes : constant Name_Id := N + 278;
Name_Restricted : constant Name_Id := N + 279;
Name_Result_Mechanism : constant Name_Id := N + 280;
Name_Result_Type : constant Name_Id := N + 281;
Name_Runtime : constant Name_Id := N + 282;
Name_SB : constant Name_Id := N + 283;
Name_Secondary_Stack_Size : constant Name_Id := N + 284;
Name_Section : constant Name_Id := N + 285;
Name_Semaphore : constant Name_Id := N + 286;
Name_Spec_File_Name : constant Name_Id := N + 287;
Name_Static : constant Name_Id := N + 288;
Name_Stack_Size : constant Name_Id := N + 289;
Name_Subunit_File_Name : constant Name_Id := N + 290;
Name_Task_Stack_Size_Default : constant Name_Id := N + 291;
Name_Task_Type : constant Name_Id := N + 292;
Name_Time_Slicing_Enabled : constant Name_Id := N + 293;
Name_Top_Guard : constant Name_Id := N + 294;
Name_UBA : constant Name_Id := N + 295;
Name_UBS : constant Name_Id := N + 296;
Name_UBSB : constant Name_Id := N + 297;
Name_Unit_Name : constant Name_Id := N + 298;
Name_Unknown : constant Name_Id := N + 299;
Name_Unrestricted : constant Name_Id := N + 300;
Name_Uppercase : constant Name_Id := N + 301;
Name_User : constant Name_Id := N + 302;
Name_VAX_Float : constant Name_Id := N + 303;
Name_VMS : constant Name_Id := N + 304;
Name_Working_Storage : constant Name_Id := N + 305;
-- 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
@ -564,158 +565,158 @@ 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 + 305;
Name_Abort_Signal : constant Name_Id := N + 305; -- GNAT
Name_Access : constant Name_Id := N + 306;
Name_Address : constant Name_Id := N + 307;
Name_Address_Size : constant Name_Id := N + 308; -- GNAT
Name_Aft : constant Name_Id := N + 309;
Name_Alignment : constant Name_Id := N + 310;
Name_Asm_Input : constant Name_Id := N + 311; -- GNAT
Name_Asm_Output : constant Name_Id := N + 312; -- GNAT
Name_AST_Entry : constant Name_Id := N + 313; -- VMS
Name_Bit : constant Name_Id := N + 314; -- GNAT
Name_Bit_Order : constant Name_Id := N + 315;
Name_Bit_Position : constant Name_Id := N + 316; -- GNAT
Name_Body_Version : constant Name_Id := N + 317;
Name_Callable : constant Name_Id := N + 318;
Name_Caller : constant Name_Id := N + 319;
Name_Code_Address : constant Name_Id := N + 320; -- GNAT
Name_Component_Size : constant Name_Id := N + 321;
Name_Compose : constant Name_Id := N + 322;
Name_Constrained : constant Name_Id := N + 323;
Name_Count : constant Name_Id := N + 324;
Name_Default_Bit_Order : constant Name_Id := N + 325; -- GNAT
Name_Definite : constant Name_Id := N + 326;
Name_Delta : constant Name_Id := N + 327;
Name_Denorm : constant Name_Id := N + 328;
Name_Digits : constant Name_Id := N + 329;
Name_Elaborated : constant Name_Id := N + 330; -- GNAT
Name_Emax : constant Name_Id := N + 331; -- Ada 83
Name_Enum_Rep : constant Name_Id := N + 332; -- GNAT
Name_Epsilon : constant Name_Id := N + 333; -- Ada 83
Name_Exponent : constant Name_Id := N + 334;
Name_External_Tag : constant Name_Id := N + 335;
Name_First : constant Name_Id := N + 336;
Name_First_Bit : constant Name_Id := N + 337;
Name_Fixed_Value : constant Name_Id := N + 338; -- GNAT
Name_Fore : constant Name_Id := N + 339;
Name_Has_Discriminants : constant Name_Id := N + 340; -- GNAT
Name_Identity : constant Name_Id := N + 341;
Name_Img : constant Name_Id := N + 342; -- GNAT
Name_Integer_Value : constant Name_Id := N + 343; -- GNAT
Name_Large : constant Name_Id := N + 344; -- Ada 83
Name_Last : constant Name_Id := N + 345;
Name_Last_Bit : constant Name_Id := N + 346;
Name_Leading_Part : constant Name_Id := N + 347;
Name_Length : constant Name_Id := N + 348;
Name_Machine_Emax : constant Name_Id := N + 349;
Name_Machine_Emin : constant Name_Id := N + 350;
Name_Machine_Mantissa : constant Name_Id := N + 351;
Name_Machine_Overflows : constant Name_Id := N + 352;
Name_Machine_Radix : constant Name_Id := N + 353;
Name_Machine_Rounds : constant Name_Id := N + 354;
Name_Machine_Size : constant Name_Id := N + 355; -- GNAT
Name_Mantissa : constant Name_Id := N + 356; -- Ada 83
Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 357;
Name_Maximum_Alignment : constant Name_Id := N + 358; -- GNAT
Name_Mechanism_Code : constant Name_Id := N + 359; -- GNAT
Name_Model_Emin : constant Name_Id := N + 360;
Name_Model_Epsilon : constant Name_Id := N + 361;
Name_Model_Mantissa : constant Name_Id := N + 362;
Name_Model_Small : constant Name_Id := N + 363;
Name_Modulus : constant Name_Id := N + 364;
Name_Null_Parameter : constant Name_Id := N + 365; -- GNAT
Name_Object_Size : constant Name_Id := N + 366; -- GNAT
Name_Partition_ID : constant Name_Id := N + 367;
Name_Passed_By_Reference : constant Name_Id := N + 368; -- GNAT
Name_Pool_Address : constant Name_Id := N + 369;
Name_Pos : constant Name_Id := N + 370;
Name_Position : constant Name_Id := N + 371;
Name_Range : constant Name_Id := N + 372;
Name_Range_Length : constant Name_Id := N + 373; -- GNAT
Name_Round : constant Name_Id := N + 374;
Name_Safe_Emax : constant Name_Id := N + 375; -- Ada 83
Name_Safe_First : constant Name_Id := N + 376;
Name_Safe_Large : constant Name_Id := N + 377; -- Ada 83
Name_Safe_Last : constant Name_Id := N + 378;
Name_Safe_Small : constant Name_Id := N + 379; -- Ada 83
Name_Scale : constant Name_Id := N + 380;
Name_Scaling : constant Name_Id := N + 381;
Name_Signed_Zeros : constant Name_Id := N + 382;
Name_Size : constant Name_Id := N + 383;
Name_Small : constant Name_Id := N + 384;
Name_Storage_Size : constant Name_Id := N + 385;
Name_Storage_Unit : constant Name_Id := N + 386; -- GNAT
Name_Tag : constant Name_Id := N + 387;
Name_Target_Name : constant Name_Id := N + 388; -- GNAT
Name_Terminated : constant Name_Id := N + 389;
Name_To_Address : constant Name_Id := N + 390; -- GNAT
Name_Type_Class : constant Name_Id := N + 391; -- GNAT
Name_UET_Address : constant Name_Id := N + 392; -- GNAT
Name_Unbiased_Rounding : constant Name_Id := N + 393;
Name_Unchecked_Access : constant Name_Id := N + 394;
Name_Unconstrained_Array : constant Name_Id := N + 395;
Name_Universal_Literal_String : constant Name_Id := N + 396; -- GNAT
Name_Unrestricted_Access : constant Name_Id := N + 397; -- GNAT
Name_VADS_Size : constant Name_Id := N + 398; -- GNAT
Name_Val : constant Name_Id := N + 399;
Name_Valid : constant Name_Id := N + 400;
Name_Value_Size : constant Name_Id := N + 401; -- GNAT
Name_Version : constant Name_Id := N + 402;
Name_Wchar_T_Size : constant Name_Id := N + 403; -- GNAT
Name_Wide_Width : constant Name_Id := N + 404;
Name_Width : constant Name_Id := N + 405;
Name_Word_Size : constant Name_Id := N + 406; -- GNAT
First_Attribute_Name : constant Name_Id := N + 306;
Name_Abort_Signal : constant Name_Id := N + 306; -- GNAT
Name_Access : constant Name_Id := N + 307;
Name_Address : constant Name_Id := N + 308;
Name_Address_Size : constant Name_Id := N + 309; -- GNAT
Name_Aft : constant Name_Id := N + 310;
Name_Alignment : constant Name_Id := N + 311;
Name_Asm_Input : constant Name_Id := N + 312; -- GNAT
Name_Asm_Output : constant Name_Id := N + 313; -- GNAT
Name_AST_Entry : constant Name_Id := N + 314; -- VMS
Name_Bit : constant Name_Id := N + 315; -- GNAT
Name_Bit_Order : constant Name_Id := N + 316;
Name_Bit_Position : constant Name_Id := N + 317; -- GNAT
Name_Body_Version : constant Name_Id := N + 318;
Name_Callable : constant Name_Id := N + 319;
Name_Caller : constant Name_Id := N + 320;
Name_Code_Address : constant Name_Id := N + 321; -- GNAT
Name_Component_Size : constant Name_Id := N + 322;
Name_Compose : constant Name_Id := N + 323;
Name_Constrained : constant Name_Id := N + 324;
Name_Count : constant Name_Id := N + 325;
Name_Default_Bit_Order : constant Name_Id := N + 326; -- GNAT
Name_Definite : constant Name_Id := N + 327;
Name_Delta : constant Name_Id := N + 328;
Name_Denorm : constant Name_Id := N + 329;
Name_Digits : constant Name_Id := N + 330;
Name_Elaborated : constant Name_Id := N + 331; -- GNAT
Name_Emax : constant Name_Id := N + 332; -- Ada 83
Name_Enum_Rep : constant Name_Id := N + 333; -- GNAT
Name_Epsilon : constant Name_Id := N + 334; -- Ada 83
Name_Exponent : constant Name_Id := N + 335;
Name_External_Tag : constant Name_Id := N + 336;
Name_First : constant Name_Id := N + 337;
Name_First_Bit : constant Name_Id := N + 338;
Name_Fixed_Value : constant Name_Id := N + 339; -- GNAT
Name_Fore : constant Name_Id := N + 340;
Name_Has_Discriminants : constant Name_Id := N + 341; -- GNAT
Name_Identity : constant Name_Id := N + 342;
Name_Img : constant Name_Id := N + 343; -- GNAT
Name_Integer_Value : constant Name_Id := N + 344; -- GNAT
Name_Large : constant Name_Id := N + 345; -- Ada 83
Name_Last : constant Name_Id := N + 346;
Name_Last_Bit : constant Name_Id := N + 347;
Name_Leading_Part : constant Name_Id := N + 348;
Name_Length : constant Name_Id := N + 349;
Name_Machine_Emax : constant Name_Id := N + 350;
Name_Machine_Emin : constant Name_Id := N + 351;
Name_Machine_Mantissa : constant Name_Id := N + 352;
Name_Machine_Overflows : constant Name_Id := N + 353;
Name_Machine_Radix : constant Name_Id := N + 354;
Name_Machine_Rounds : constant Name_Id := N + 355;
Name_Machine_Size : constant Name_Id := N + 356; -- GNAT
Name_Mantissa : constant Name_Id := N + 357; -- Ada 83
Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 358;
Name_Maximum_Alignment : constant Name_Id := N + 359; -- GNAT
Name_Mechanism_Code : constant Name_Id := N + 360; -- GNAT
Name_Model_Emin : constant Name_Id := N + 361;
Name_Model_Epsilon : constant Name_Id := N + 362;
Name_Model_Mantissa : constant Name_Id := N + 363;
Name_Model_Small : constant Name_Id := N + 364;
Name_Modulus : constant Name_Id := N + 365;
Name_Null_Parameter : constant Name_Id := N + 366; -- GNAT
Name_Object_Size : constant Name_Id := N + 367; -- GNAT
Name_Partition_ID : constant Name_Id := N + 368;
Name_Passed_By_Reference : constant Name_Id := N + 369; -- GNAT
Name_Pool_Address : constant Name_Id := N + 370;
Name_Pos : constant Name_Id := N + 371;
Name_Position : constant Name_Id := N + 372;
Name_Range : constant Name_Id := N + 373;
Name_Range_Length : constant Name_Id := N + 374; -- GNAT
Name_Round : constant Name_Id := N + 375;
Name_Safe_Emax : constant Name_Id := N + 376; -- Ada 83
Name_Safe_First : constant Name_Id := N + 377;
Name_Safe_Large : constant Name_Id := N + 378; -- Ada 83
Name_Safe_Last : constant Name_Id := N + 379;
Name_Safe_Small : constant Name_Id := N + 380; -- Ada 83
Name_Scale : constant Name_Id := N + 381;
Name_Scaling : constant Name_Id := N + 382;
Name_Signed_Zeros : constant Name_Id := N + 383;
Name_Size : constant Name_Id := N + 384;
Name_Small : constant Name_Id := N + 385;
Name_Storage_Size : constant Name_Id := N + 386;
Name_Storage_Unit : constant Name_Id := N + 387; -- GNAT
Name_Tag : constant Name_Id := N + 388;
Name_Target_Name : constant Name_Id := N + 389; -- GNAT
Name_Terminated : constant Name_Id := N + 390;
Name_To_Address : constant Name_Id := N + 391; -- GNAT
Name_Type_Class : constant Name_Id := N + 392; -- GNAT
Name_UET_Address : constant Name_Id := N + 393; -- GNAT
Name_Unbiased_Rounding : constant Name_Id := N + 394;
Name_Unchecked_Access : constant Name_Id := N + 395;
Name_Unconstrained_Array : constant Name_Id := N + 396;
Name_Universal_Literal_String : constant Name_Id := N + 397; -- GNAT
Name_Unrestricted_Access : constant Name_Id := N + 398; -- GNAT
Name_VADS_Size : constant Name_Id := N + 399; -- GNAT
Name_Val : constant Name_Id := N + 400;
Name_Valid : constant Name_Id := N + 401;
Name_Value_Size : constant Name_Id := N + 402; -- GNAT
Name_Version : constant Name_Id := N + 403;
Name_Wchar_T_Size : constant Name_Id := N + 404; -- GNAT
Name_Wide_Width : constant Name_Id := N + 405;
Name_Width : constant Name_Id := N + 406;
Name_Word_Size : constant Name_Id := N + 407; -- 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 + 407;
Name_Adjacent : constant Name_Id := N + 407;
Name_Ceiling : constant Name_Id := N + 408;
Name_Copy_Sign : constant Name_Id := N + 409;
Name_Floor : constant Name_Id := N + 410;
Name_Fraction : constant Name_Id := N + 411;
Name_Image : constant Name_Id := N + 412;
Name_Input : constant Name_Id := N + 413;
Name_Machine : constant Name_Id := N + 414;
Name_Max : constant Name_Id := N + 415;
Name_Min : constant Name_Id := N + 416;
Name_Model : constant Name_Id := N + 417;
Name_Pred : constant Name_Id := N + 418;
Name_Remainder : constant Name_Id := N + 419;
Name_Rounding : constant Name_Id := N + 420;
Name_Succ : constant Name_Id := N + 421;
Name_Truncation : constant Name_Id := N + 422;
Name_Value : constant Name_Id := N + 423;
Name_Wide_Image : constant Name_Id := N + 424;
Name_Wide_Value : constant Name_Id := N + 425;
Last_Renamable_Function_Attribute : constant Name_Id := N + 425;
First_Renamable_Function_Attribute : constant Name_Id := N + 408;
Name_Adjacent : constant Name_Id := N + 408;
Name_Ceiling : constant Name_Id := N + 409;
Name_Copy_Sign : constant Name_Id := N + 410;
Name_Floor : constant Name_Id := N + 411;
Name_Fraction : constant Name_Id := N + 412;
Name_Image : constant Name_Id := N + 413;
Name_Input : constant Name_Id := N + 414;
Name_Machine : constant Name_Id := N + 415;
Name_Max : constant Name_Id := N + 416;
Name_Min : constant Name_Id := N + 417;
Name_Model : constant Name_Id := N + 418;
Name_Pred : constant Name_Id := N + 419;
Name_Remainder : constant Name_Id := N + 420;
Name_Rounding : constant Name_Id := N + 421;
Name_Succ : constant Name_Id := N + 422;
Name_Truncation : constant Name_Id := N + 423;
Name_Value : constant Name_Id := N + 424;
Name_Wide_Image : constant Name_Id := N + 425;
Name_Wide_Value : constant Name_Id := N + 426;
Last_Renamable_Function_Attribute : constant Name_Id := N + 426;
-- Attributes that designate procedures
First_Procedure_Attribute : constant Name_Id := N + 426;
Name_Output : constant Name_Id := N + 426;
Name_Read : constant Name_Id := N + 427;
Name_Write : constant Name_Id := N + 428;
Last_Procedure_Attribute : constant Name_Id := N + 428;
First_Procedure_Attribute : constant Name_Id := N + 427;
Name_Output : constant Name_Id := N + 427;
Name_Read : constant Name_Id := N + 428;
Name_Write : constant Name_Id := N + 429;
Last_Procedure_Attribute : constant Name_Id := N + 429;
-- Remaining attributes are ones that return entities
First_Entity_Attribute_Name : constant Name_Id := N + 429;
Name_Elab_Body : constant Name_Id := N + 429; -- GNAT
Name_Elab_Spec : constant Name_Id := N + 430; -- GNAT
Name_Storage_Pool : constant Name_Id := N + 431;
First_Entity_Attribute_Name : constant Name_Id := N + 430;
Name_Elab_Body : constant Name_Id := N + 430; -- GNAT
Name_Elab_Spec : constant Name_Id := N + 431; -- GNAT
Name_Storage_Pool : constant Name_Id := N + 432;
-- These attributes are the ones that return types
First_Type_Attribute_Name : constant Name_Id := N + 432;
Name_Base : constant Name_Id := N + 432;
Name_Class : constant Name_Id := N + 433;
Last_Type_Attribute_Name : constant Name_Id := N + 433;
Last_Entity_Attribute_Name : constant Name_Id := N + 433;
Last_Attribute_Name : constant Name_Id := N + 433;
First_Type_Attribute_Name : constant Name_Id := N + 433;
Name_Base : constant Name_Id := N + 433;
Name_Class : constant Name_Id := N + 434;
Last_Type_Attribute_Name : constant Name_Id := N + 434;
Last_Entity_Attribute_Name : constant Name_Id := N + 434;
Last_Attribute_Name : constant Name_Id := N + 434;
-- Names of recognized locking policy identifiers
@ -723,10 +724,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 + 434;
Name_Ceiling_Locking : constant Name_Id := N + 434;
Name_Inheritance_Locking : constant Name_Id := N + 435;
Last_Locking_Policy_Name : constant Name_Id := N + 435;
First_Locking_Policy_Name : constant Name_Id := N + 435;
Name_Ceiling_Locking : constant Name_Id := N + 435;
Name_Inheritance_Locking : constant Name_Id := N + 436;
Last_Locking_Policy_Name : constant Name_Id := N + 436;
-- Names of recognized queuing policy identifiers.
@ -734,10 +735,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 + 436;
Name_FIFO_Queuing : constant Name_Id := N + 436;
Name_Priority_Queuing : constant Name_Id := N + 437;
Last_Queuing_Policy_Name : constant Name_Id := N + 437;
First_Queuing_Policy_Name : constant Name_Id := N + 437;
Name_FIFO_Queuing : constant Name_Id := N + 437;
Name_Priority_Queuing : constant Name_Id := N + 438;
Last_Queuing_Policy_Name : constant Name_Id := N + 438;
-- Names of recognized task dispatching policy identifiers
@ -745,193 +746,193 @@ 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 + 438;
Name_Fifo_Within_Priorities : constant Name_Id := N + 438;
Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 438;
First_Task_Dispatching_Policy_Name : constant Name_Id := N + 439;
Name_Fifo_Within_Priorities : constant Name_Id := N + 439;
Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 439;
-- Names of recognized checks for pragma Suppress
First_Check_Name : constant Name_Id := N + 439;
Name_Access_Check : constant Name_Id := N + 439;
Name_Accessibility_Check : constant Name_Id := N + 440;
Name_Discriminant_Check : constant Name_Id := N + 441;
Name_Division_Check : constant Name_Id := N + 442;
Name_Elaboration_Check : constant Name_Id := N + 443;
Name_Index_Check : constant Name_Id := N + 444;
Name_Length_Check : constant Name_Id := N + 445;
Name_Overflow_Check : constant Name_Id := N + 446;
Name_Range_Check : constant Name_Id := N + 447;
Name_Storage_Check : constant Name_Id := N + 448;
Name_Tag_Check : constant Name_Id := N + 449;
Name_All_Checks : constant Name_Id := N + 450;
Last_Check_Name : constant Name_Id := N + 450;
First_Check_Name : constant Name_Id := N + 440;
Name_Access_Check : constant Name_Id := N + 440;
Name_Accessibility_Check : constant Name_Id := N + 441;
Name_Discriminant_Check : constant Name_Id := N + 442;
Name_Division_Check : constant Name_Id := N + 443;
Name_Elaboration_Check : constant Name_Id := N + 444;
Name_Index_Check : constant Name_Id := N + 445;
Name_Length_Check : constant Name_Id := N + 446;
Name_Overflow_Check : constant Name_Id := N + 447;
Name_Range_Check : constant Name_Id := N + 448;
Name_Storage_Check : constant Name_Id := N + 449;
Name_Tag_Check : constant Name_Id := N + 450;
Name_All_Checks : constant Name_Id := N + 451;
Last_Check_Name : constant Name_Id := N + 451;
-- Names corresponding to reserved keywords, excluding those already
-- declared in the attribute list (Access, Delta, Digits, Range).
Name_Abort : constant Name_Id := N + 451;
Name_Abs : constant Name_Id := N + 452;
Name_Accept : constant Name_Id := N + 453;
Name_And : constant Name_Id := N + 454;
Name_All : constant Name_Id := N + 455;
Name_Array : constant Name_Id := N + 456;
Name_At : constant Name_Id := N + 457;
Name_Begin : constant Name_Id := N + 458;
Name_Body : constant Name_Id := N + 459;
Name_Case : constant Name_Id := N + 460;
Name_Constant : constant Name_Id := N + 461;
Name_Declare : constant Name_Id := N + 462;
Name_Delay : constant Name_Id := N + 463;
Name_Do : constant Name_Id := N + 464;
Name_Else : constant Name_Id := N + 465;
Name_Elsif : constant Name_Id := N + 466;
Name_End : constant Name_Id := N + 467;
Name_Entry : constant Name_Id := N + 468;
Name_Exception : constant Name_Id := N + 469;
Name_Exit : constant Name_Id := N + 470;
Name_For : constant Name_Id := N + 471;
Name_Function : constant Name_Id := N + 472;
Name_Generic : constant Name_Id := N + 473;
Name_Goto : constant Name_Id := N + 474;
Name_If : constant Name_Id := N + 475;
Name_In : constant Name_Id := N + 476;
Name_Is : constant Name_Id := N + 477;
Name_Limited : constant Name_Id := N + 478;
Name_Loop : constant Name_Id := N + 479;
Name_Mod : constant Name_Id := N + 480;
Name_New : constant Name_Id := N + 481;
Name_Not : constant Name_Id := N + 482;
Name_Null : constant Name_Id := N + 483;
Name_Of : constant Name_Id := N + 484;
Name_Or : constant Name_Id := N + 485;
Name_Others : constant Name_Id := N + 486;
Name_Out : constant Name_Id := N + 487;
Name_Package : constant Name_Id := N + 488;
Name_Pragma : constant Name_Id := N + 489;
Name_Private : constant Name_Id := N + 490;
Name_Procedure : constant Name_Id := N + 491;
Name_Raise : constant Name_Id := N + 492;
Name_Record : constant Name_Id := N + 493;
Name_Rem : constant Name_Id := N + 494;
Name_Renames : constant Name_Id := N + 495;
Name_Return : constant Name_Id := N + 496;
Name_Reverse : constant Name_Id := N + 497;
Name_Select : constant Name_Id := N + 498;
Name_Separate : constant Name_Id := N + 499;
Name_Subtype : constant Name_Id := N + 500;
Name_Task : constant Name_Id := N + 501;
Name_Terminate : constant Name_Id := N + 502;
Name_Then : constant Name_Id := N + 503;
Name_Type : constant Name_Id := N + 504;
Name_Use : constant Name_Id := N + 505;
Name_When : constant Name_Id := N + 506;
Name_While : constant Name_Id := N + 507;
Name_With : constant Name_Id := N + 508;
Name_Xor : constant Name_Id := N + 509;
Name_Abort : constant Name_Id := N + 452;
Name_Abs : constant Name_Id := N + 453;
Name_Accept : constant Name_Id := N + 454;
Name_And : constant Name_Id := N + 455;
Name_All : constant Name_Id := N + 456;
Name_Array : constant Name_Id := N + 457;
Name_At : constant Name_Id := N + 458;
Name_Begin : constant Name_Id := N + 459;
Name_Body : constant Name_Id := N + 460;
Name_Case : constant Name_Id := N + 461;
Name_Constant : constant Name_Id := N + 462;
Name_Declare : constant Name_Id := N + 463;
Name_Delay : constant Name_Id := N + 464;
Name_Do : constant Name_Id := N + 465;
Name_Else : constant Name_Id := N + 466;
Name_Elsif : constant Name_Id := N + 467;
Name_End : constant Name_Id := N + 468;
Name_Entry : constant Name_Id := N + 469;
Name_Exception : constant Name_Id := N + 470;
Name_Exit : constant Name_Id := N + 471;
Name_For : constant Name_Id := N + 472;
Name_Function : constant Name_Id := N + 473;
Name_Generic : constant Name_Id := N + 474;
Name_Goto : constant Name_Id := N + 475;
Name_If : constant Name_Id := N + 476;
Name_In : constant Name_Id := N + 477;
Name_Is : constant Name_Id := N + 478;
Name_Limited : constant Name_Id := N + 479;
Name_Loop : constant Name_Id := N + 480;
Name_Mod : constant Name_Id := N + 481;
Name_New : constant Name_Id := N + 482;
Name_Not : constant Name_Id := N + 483;
Name_Null : constant Name_Id := N + 484;
Name_Of : constant Name_Id := N + 485;
Name_Or : constant Name_Id := N + 486;
Name_Others : constant Name_Id := N + 487;
Name_Out : constant Name_Id := N + 488;
Name_Package : constant Name_Id := N + 489;
Name_Pragma : constant Name_Id := N + 490;
Name_Private : constant Name_Id := N + 491;
Name_Procedure : constant Name_Id := N + 492;
Name_Raise : constant Name_Id := N + 493;
Name_Record : constant Name_Id := N + 494;
Name_Rem : constant Name_Id := N + 495;
Name_Renames : constant Name_Id := N + 496;
Name_Return : constant Name_Id := N + 497;
Name_Reverse : constant Name_Id := N + 498;
Name_Select : constant Name_Id := N + 499;
Name_Separate : constant Name_Id := N + 500;
Name_Subtype : constant Name_Id := N + 501;
Name_Task : constant Name_Id := N + 502;
Name_Terminate : constant Name_Id := N + 503;
Name_Then : constant Name_Id := N + 504;
Name_Type : constant Name_Id := N + 505;
Name_Use : constant Name_Id := N + 506;
Name_When : constant Name_Id := N + 507;
Name_While : constant Name_Id := N + 508;
Name_With : constant Name_Id := N + 509;
Name_Xor : constant Name_Id := N + 510;
-- 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 + 510;
Name_Divide : constant Name_Id := N + 510;
Name_Enclosing_Entity : constant Name_Id := N + 511;
Name_Exception_Information : constant Name_Id := N + 512;
Name_Exception_Message : constant Name_Id := N + 513;
Name_Exception_Name : constant Name_Id := N + 514;
Name_File : constant Name_Id := N + 515;
Name_Import_Address : constant Name_Id := N + 516;
Name_Import_Largest_Value : constant Name_Id := N + 517;
Name_Import_Value : constant Name_Id := N + 518;
Name_Is_Negative : constant Name_Id := N + 519;
Name_Line : constant Name_Id := N + 520;
Name_Rotate_Left : constant Name_Id := N + 521;
Name_Rotate_Right : constant Name_Id := N + 522;
Name_Shift_Left : constant Name_Id := N + 523;
Name_Shift_Right : constant Name_Id := N + 524;
Name_Shift_Right_Arithmetic : constant Name_Id := N + 525;
Name_Source_Location : constant Name_Id := N + 526;
Name_Unchecked_Conversion : constant Name_Id := N + 527;
Name_Unchecked_Deallocation : constant Name_Id := N + 528;
Name_To_Pointer : constant Name_Id := N + 529;
Last_Intrinsic_Name : constant Name_Id := N + 529;
First_Intrinsic_Name : constant Name_Id := N + 511;
Name_Divide : constant Name_Id := N + 511;
Name_Enclosing_Entity : constant Name_Id := N + 512;
Name_Exception_Information : constant Name_Id := N + 513;
Name_Exception_Message : constant Name_Id := N + 514;
Name_Exception_Name : constant Name_Id := N + 515;
Name_File : constant Name_Id := N + 516;
Name_Import_Address : constant Name_Id := N + 517;
Name_Import_Largest_Value : constant Name_Id := N + 518;
Name_Import_Value : constant Name_Id := N + 519;
Name_Is_Negative : constant Name_Id := N + 520;
Name_Line : constant Name_Id := N + 521;
Name_Rotate_Left : constant Name_Id := N + 522;
Name_Rotate_Right : constant Name_Id := N + 523;
Name_Shift_Left : constant Name_Id := N + 524;
Name_Shift_Right : constant Name_Id := N + 525;
Name_Shift_Right_Arithmetic : constant Name_Id := N + 526;
Name_Source_Location : constant Name_Id := N + 527;
Name_Unchecked_Conversion : constant Name_Id := N + 528;
Name_Unchecked_Deallocation : constant Name_Id := N + 529;
Name_To_Pointer : constant Name_Id := N + 530;
Last_Intrinsic_Name : constant Name_Id := N + 530;
-- Reserved words used only in Ada 95
First_95_Reserved_Word : constant Name_Id := N + 530;
Name_Abstract : constant Name_Id := N + 530;
Name_Aliased : constant Name_Id := N + 531;
Name_Protected : constant Name_Id := N + 532;
Name_Until : constant Name_Id := N + 533;
Name_Requeue : constant Name_Id := N + 534;
Name_Tagged : constant Name_Id := N + 535;
Last_95_Reserved_Word : constant Name_Id := N + 535;
First_95_Reserved_Word : constant Name_Id := N + 531;
Name_Abstract : constant Name_Id := N + 531;
Name_Aliased : constant Name_Id := N + 532;
Name_Protected : constant Name_Id := N + 533;
Name_Until : constant Name_Id := N + 534;
Name_Requeue : constant Name_Id := N + 535;
Name_Tagged : constant Name_Id := N + 536;
Last_95_Reserved_Word : constant Name_Id := N + 536;
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 + 536;
Name_Raise_Exception : constant Name_Id := N + 537;
-- Additional reserved words in GNAT Project Files
-- Note that Name_External is already previously declared
Name_Binder : constant Name_Id := N + 537;
Name_Body_Suffix : constant Name_Id := N + 538;
Name_Builder : constant Name_Id := N + 539;
Name_Compiler : constant Name_Id := N + 540;
Name_Cross_Reference : constant Name_Id := N + 541;
Name_Default_Switches : constant Name_Id := N + 542;
Name_Exec_Dir : constant Name_Id := N + 543;
Name_Executable : constant Name_Id := N + 544;
Name_Executable_Suffix : constant Name_Id := N + 545;
Name_Extends : constant Name_Id := N + 546;
Name_Finder : constant Name_Id := N + 547;
Name_Global_Configuration_Pragmas : constant Name_Id := N + 548;
Name_Gnatls : constant Name_Id := N + 549;
Name_Gnatstub : constant Name_Id := N + 550;
Name_Implementation : constant Name_Id := N + 551;
Name_Implementation_Exceptions : constant Name_Id := N + 552;
Name_Implementation_Suffix : constant Name_Id := N + 553;
Name_Languages : constant Name_Id := N + 554;
Name_Library_Dir : constant Name_Id := N + 555;
Name_Library_Auto_Init : constant Name_Id := N + 556;
Name_Library_GCC : constant Name_Id := N + 557;
Name_Library_Interface : constant Name_Id := N + 558;
Name_Library_Kind : constant Name_Id := N + 559;
Name_Library_Name : constant Name_Id := N + 560;
Name_Library_Options : constant Name_Id := N + 561;
Name_Library_Reference_Symbol_File : constant Name_Id := N + 562;
Name_Library_Src_Dir : constant Name_Id := N + 563;
Name_Library_Symbol_File : constant Name_Id := N + 564;
Name_Library_Symbol_Policy : constant Name_Id := N + 565;
Name_Library_Version : constant Name_Id := N + 566;
Name_Linker : constant Name_Id := N + 567;
Name_Local_Configuration_Pragmas : constant Name_Id := N + 568;
Name_Locally_Removed_Files : constant Name_Id := N + 569;
Name_Naming : constant Name_Id := N + 570;
Name_Object_Dir : constant Name_Id := N + 571;
Name_Pretty_Printer : constant Name_Id := N + 572;
Name_Project : constant Name_Id := N + 573;
Name_Separate_Suffix : constant Name_Id := N + 574;
Name_Source_Dirs : constant Name_Id := N + 575;
Name_Source_Files : constant Name_Id := N + 576;
Name_Source_List_File : constant Name_Id := N + 577;
Name_Spec : constant Name_Id := N + 578;
Name_Spec_Suffix : constant Name_Id := N + 579;
Name_Specification : constant Name_Id := N + 580;
Name_Specification_Exceptions : constant Name_Id := N + 581;
Name_Specification_Suffix : constant Name_Id := N + 582;
Name_Switches : constant Name_Id := N + 583;
Name_Binder : constant Name_Id := N + 538;
Name_Body_Suffix : constant Name_Id := N + 539;
Name_Builder : constant Name_Id := N + 540;
Name_Compiler : constant Name_Id := N + 541;
Name_Cross_Reference : constant Name_Id := N + 542;
Name_Default_Switches : constant Name_Id := N + 543;
Name_Exec_Dir : constant Name_Id := N + 544;
Name_Executable : constant Name_Id := N + 545;
Name_Executable_Suffix : constant Name_Id := N + 546;
Name_Extends : constant Name_Id := N + 547;
Name_Finder : constant Name_Id := N + 548;
Name_Global_Configuration_Pragmas : constant Name_Id := N + 549;
Name_Gnatls : constant Name_Id := N + 550;
Name_Gnatstub : constant Name_Id := N + 551;
Name_Implementation : constant Name_Id := N + 552;
Name_Implementation_Exceptions : constant Name_Id := N + 553;
Name_Implementation_Suffix : constant Name_Id := N + 554;
Name_Languages : constant Name_Id := N + 555;
Name_Library_Dir : constant Name_Id := N + 556;
Name_Library_Auto_Init : constant Name_Id := N + 557;
Name_Library_GCC : constant Name_Id := N + 558;
Name_Library_Interface : constant Name_Id := N + 559;
Name_Library_Kind : constant Name_Id := N + 560;
Name_Library_Name : constant Name_Id := N + 561;
Name_Library_Options : constant Name_Id := N + 562;
Name_Library_Reference_Symbol_File : constant Name_Id := N + 563;
Name_Library_Src_Dir : constant Name_Id := N + 564;
Name_Library_Symbol_File : constant Name_Id := N + 565;
Name_Library_Symbol_Policy : constant Name_Id := N + 566;
Name_Library_Version : constant Name_Id := N + 567;
Name_Linker : constant Name_Id := N + 568;
Name_Local_Configuration_Pragmas : constant Name_Id := N + 569;
Name_Locally_Removed_Files : constant Name_Id := N + 570;
Name_Naming : constant Name_Id := N + 571;
Name_Object_Dir : constant Name_Id := N + 572;
Name_Pretty_Printer : constant Name_Id := N + 573;
Name_Project : constant Name_Id := N + 574;
Name_Separate_Suffix : constant Name_Id := N + 575;
Name_Source_Dirs : constant Name_Id := N + 576;
Name_Source_Files : constant Name_Id := N + 577;
Name_Source_List_File : constant Name_Id := N + 578;
Name_Spec : constant Name_Id := N + 579;
Name_Spec_Suffix : constant Name_Id := N + 580;
Name_Specification : constant Name_Id := N + 581;
Name_Specification_Exceptions : constant Name_Id := N + 582;
Name_Specification_Suffix : constant Name_Id := N + 583;
Name_Switches : constant Name_Id := N + 584;
-- Other miscellaneous names used in front end
Name_Unaligned_Valid : constant Name_Id := N + 584;
Name_Unaligned_Valid : constant Name_Id := N + 585;
-- Mark last defined name for consistency check in Snames body
Last_Predefined_Name : constant Name_Id := N + 584;
Last_Predefined_Name : constant Name_Id := N + 585;
subtype Any_Operator_Name is Name_Id range
First_Operator_Name .. Last_Operator_Name;