mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 00:01:10 +08:00
[multiple changes]
2004-05-03 Olivier Hainque <hainque@act-europe.fr> PR ada/15152 * exp_ch2.adb (Expand_Current_Value): Leave Machine_Code Asm arguments alone. Replacing object references by literals is inappropriate in a so low level context. 2004-05-03 Arnaud Charlet <charlet@act-europe.fr> * a-exexpr.adb: Add comments 2004-05-03 Joel Brobecker <brobecker@gnat.com> * a-tags.adb (Tag_Table): Add Index_Check pragma Suppress. Allows us to declare the Ancestor_Tags array in Type_Specific_Data with a small size without risking a bounds check error when accessing one of its components. (Type_Specific_Data): Define Ancestor_Tags as a small array. This prevents us from hitting a limitation during the debug info generation when using stabs. * a-tags.adb (Dispatch_Table): Define the Prims_Ptr component as a small array. This prevents us from hitting a limitation during the debug info generation when using stabs. 2004-05-03 Eric Botcazou <ebotcazou@act-europe.fr> lang-specs.h: Remove -gnatz* from specs. 2004-05-03 Vincent Celier <celier@gnat.com> * gprmake.adb, makegpr.ads, makegpr.adb: New files. * Make-lang.in, Makefile.in: Add gprmake 2004-05-03 Thomas Quinot <quinot@act-europe.fr> * sem_aggr.adb: Fix typo in comment. 2004-05-03 Robert Dewar <dewar@gnat.com> * make.adb: Minor reformatting * rtsfind.ads, rtsfind.adb: (RTU_Loaded): New function * sem_attr.adb (Eval_Attribute, case Type_Class): Fix check for address so that it works when address is not a private type. * sem_ch13.adb (Check_Expr_Constants, case N_Integer_Literal): Deal properly with rewritten unchecked conversions. This prevents order-of-elaboration issues that can otherwise arise. (Minimum_Size): Don't check size of access types under VMS * sem_ch4.adb (Remove_Address_Interpretation): New circuit to remove interpretations of integer literals as type System.Address. * sem_util.ads, sem_util.adb (Is_Descendent_Of_Address): New function (Is_Descendent_Of): New function 2004-05-03 Jose Ruiz <ruiz@act-europe.fr> * sem_prag.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers. Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length. No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment. * sem_res.adb: Use the new restriction Max_Entry_Queue_Length instead of the old Max_Entry_Queue_Depth. * snames.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers. Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment * snames.ads: New entry for proper handling of Boolean_Entry_Barriers. New entry for proper handling of Max_Entry_Queue_Depth. New entry for proper handling of No_Dynamic_Interrupts. * s-rident.ads: Adding restriction Simple_Barriers (AI-00249) that supersedes the GNAT specific restriction Boolean_Entry_Barriers. Adding restriction Max_Entry_Queue_Length (AI-00249) that supersedes the GNAT specific restriction Max_Entry_Queue_Depth. Adding restriction No_Dynamic_Attachment (AI-00249) that supersedes the GNAT specific restriction No_Dynamic_Interrupts. * restrict.ads, restrict.adb: Use the new restriction Simple_Barriers instead of the old Boolean_Entry_Barriers. Use the new restriction No_Dynamic_Attachment instead of the old No_Dynamic_Interrupts. * exp_ch9.adb: Check restriction Simple_Barriers (AI-00249) that supersedes the GNAT specific restriction Boolean_Entry_Barriers. * gnatbind.adb: Use the new restriction Max_Entry_Queue_Length instead of the old Max_Entry_Queue_Depth. 2004-05-03 GNAT Script <nobody@gnat.com> * Make-lang.in: Makefile automatically updated From-SVN: r81429
This commit is contained in:
parent
178af0f390
commit
9f4fd324ab
@ -1,3 +1,103 @@
|
||||
2004-05-03 Olivier Hainque <hainque@act-europe.fr>
|
||||
|
||||
PR ada/15152
|
||||
|
||||
* exp_ch2.adb (Expand_Current_Value): Leave Machine_Code Asm arguments
|
||||
alone. Replacing object references by literals is inappropriate in a
|
||||
so low level context.
|
||||
|
||||
2004-05-03 Arnaud Charlet <charlet@act-europe.fr>
|
||||
|
||||
* a-exexpr.adb: Add comments
|
||||
|
||||
2004-05-03 Joel Brobecker <brobecker@gnat.com>
|
||||
|
||||
* a-tags.adb (Tag_Table): Add Index_Check pragma Suppress. Allows us to
|
||||
declare the Ancestor_Tags array in Type_Specific_Data with a small size
|
||||
without risking a bounds check error when accessing one of its
|
||||
components.
|
||||
(Type_Specific_Data): Define Ancestor_Tags as a small array.
|
||||
This prevents us from hitting a limitation during the debug info
|
||||
generation when using stabs.
|
||||
|
||||
* a-tags.adb (Dispatch_Table): Define the Prims_Ptr component as a
|
||||
small array.
|
||||
This prevents us from hitting a limitation during the debug info
|
||||
generation when using stabs.
|
||||
|
||||
2004-05-03 Eric Botcazou <ebotcazou@act-europe.fr>
|
||||
|
||||
lang-specs.h: Remove -gnatz* from specs.
|
||||
|
||||
2004-05-03 Vincent Celier <celier@gnat.com>
|
||||
|
||||
* gprmake.adb, makegpr.ads, makegpr.adb: New files.
|
||||
|
||||
* Make-lang.in, Makefile.in: Add gprmake
|
||||
|
||||
2004-05-03 Thomas Quinot <quinot@act-europe.fr>
|
||||
|
||||
* sem_aggr.adb: Fix typo in comment.
|
||||
|
||||
2004-05-03 Robert Dewar <dewar@gnat.com>
|
||||
|
||||
* make.adb: Minor reformatting
|
||||
|
||||
* rtsfind.ads, rtsfind.adb: (RTU_Loaded): New function
|
||||
|
||||
* sem_attr.adb (Eval_Attribute, case Type_Class): Fix check for address
|
||||
so that it works when address is not a private type.
|
||||
|
||||
* sem_ch13.adb (Check_Expr_Constants, case N_Integer_Literal): Deal
|
||||
properly with rewritten unchecked conversions. This prevents
|
||||
order-of-elaboration issues that can otherwise arise.
|
||||
(Minimum_Size): Don't check size of access types under VMS
|
||||
|
||||
* sem_ch4.adb (Remove_Address_Interpretation): New circuit to remove
|
||||
interpretations of integer literals as type System.Address.
|
||||
|
||||
* sem_util.ads, sem_util.adb (Is_Descendent_Of_Address): New function
|
||||
(Is_Descendent_Of): New function
|
||||
|
||||
2004-05-03 Jose Ruiz <ruiz@act-europe.fr>
|
||||
|
||||
* sem_prag.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers.
|
||||
Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length.
|
||||
No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment.
|
||||
|
||||
* sem_res.adb: Use the new restriction Max_Entry_Queue_Length instead
|
||||
of the old Max_Entry_Queue_Depth.
|
||||
|
||||
* snames.adb: Boolean_Entry_Barriers is a synonym of Simple_Barriers.
|
||||
Max_Entry_Queue_Depth is a synonym of Max_Entry_Queue_Length
|
||||
No_Dynamic_Interrupts is a synonym of No_Dynamic_Attachment
|
||||
|
||||
* snames.ads: New entry for proper handling of Boolean_Entry_Barriers.
|
||||
New entry for proper handling of Max_Entry_Queue_Depth.
|
||||
New entry for proper handling of No_Dynamic_Interrupts.
|
||||
|
||||
* s-rident.ads: Adding restriction Simple_Barriers (AI-00249) that
|
||||
supersedes the GNAT specific restriction Boolean_Entry_Barriers.
|
||||
Adding restriction Max_Entry_Queue_Length (AI-00249) that supersedes
|
||||
the GNAT specific restriction Max_Entry_Queue_Depth.
|
||||
Adding restriction No_Dynamic_Attachment (AI-00249) that supersedes
|
||||
the GNAT specific restriction No_Dynamic_Interrupts.
|
||||
|
||||
* restrict.ads, restrict.adb: Use the new restriction Simple_Barriers
|
||||
instead of the old Boolean_Entry_Barriers.
|
||||
Use the new restriction No_Dynamic_Attachment instead of the old
|
||||
No_Dynamic_Interrupts.
|
||||
|
||||
* exp_ch9.adb: Check restriction Simple_Barriers (AI-00249) that
|
||||
supersedes the GNAT specific restriction Boolean_Entry_Barriers.
|
||||
|
||||
* gnatbind.adb: Use the new restriction Max_Entry_Queue_Length instead
|
||||
of the old Max_Entry_Queue_Depth.
|
||||
|
||||
2004-05-03 GNAT Script <nobody@gnat.com>
|
||||
|
||||
* Make-lang.in: Makefile automatically updated
|
||||
|
||||
2004-04-29 Ed Schonberg <schonberg@gnat.com>
|
||||
|
||||
* checks.adb (Enable_Range_Check): If the prefix of an index component
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1606,7 +1606,7 @@ gnattools2: ../stamp-tools
|
||||
../../gnatls$(exeext) ../../gnatprep$(exeext) \
|
||||
../../gnatxref$(exeext) \
|
||||
../../gnatfind$(exeext) ../../gnatname$(exeext) \
|
||||
../../gnatclean$(exeext) \
|
||||
../../gnatclean$(exeext) ../../gprmake$(exeext) \
|
||||
../../gprcmd$(exeext) ../../gpr2make$(exeext)
|
||||
|
||||
# These tools are only built for the native version.
|
||||
@ -1648,6 +1648,12 @@ gnattools4: ../stamp-tools
|
||||
$(GNATLINK) -v gnatname -o $@ --GCC="$(CC) $(ADA_INCLUDES)" \
|
||||
$(TOOLS_LIBS)
|
||||
|
||||
../../gprmake$(exeext): ../stamp-tools
|
||||
$(GNATMAKE) -c $(ADA_INCLUDES) gprmake --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gprmake
|
||||
$(GNATLINK) -v gprmake -o $@ --GCC="$(CC) $(ADA_INCLUDES)" \
|
||||
$(TOOLS_LIBS)
|
||||
|
||||
../../gpr2make$(exeext): ../stamp-tools
|
||||
$(GNATMAKE) -c $(ADA_INCLUDES) gpr2make --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gpr2make
|
||||
|
@ -2,7 +2,7 @@
|
||||
-- --
|
||||
-- GNAT COMPILER COMPONENTS --
|
||||
-- --
|
||||
-- ADA.EXCEPTIONS.EXCEPTION_PROPAGATION --
|
||||
-- A D A . E X C E P T I O N S . E X C E P T I O N _ P R O P A G A T I O N --
|
||||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
@ -104,6 +104,7 @@ package body Exception_Propagation is
|
||||
|
||||
type Unwind_Word is mod 2 ** System.Word_Size;
|
||||
for Unwind_Word'Size use System.Word_Size;
|
||||
-- Map the corresponding C type used in Unwind_Exception below.
|
||||
|
||||
type Unwind_Exception is record
|
||||
Class : Exception_Class := GNAT_Exception_Class;
|
||||
@ -111,8 +112,7 @@ package body Exception_Propagation is
|
||||
Private1 : Unwind_Word;
|
||||
Private2 : Unwind_Word;
|
||||
end record;
|
||||
|
||||
pragma Convention (C, Unwind_Exception);
|
||||
-- Map the GCC struct used for exception handling.
|
||||
|
||||
for Unwind_Exception'Alignment use Standard'Maximum_Alignment;
|
||||
-- The C++ ABI mandates the common exception header to be at least
|
||||
@ -122,7 +122,7 @@ package body Exception_Propagation is
|
||||
-- 1/ We pass pointers to such headers down to the underlying
|
||||
-- libGCC unwinder,
|
||||
|
||||
-- and
|
||||
-- and
|
||||
|
||||
-- 2/ The GNAT_GCC_Exception record below starts with this common
|
||||
-- common header and has a C counterpart which needs to be laid
|
||||
|
@ -65,8 +65,12 @@ package body Ada.Tags is
|
||||
|
||||
subtype Cstring is String (Positive);
|
||||
type Cstring_Ptr is access all Cstring;
|
||||
|
||||
type Tag_Table is array (Natural range <>) of Tag;
|
||||
pragma Suppress_Initialization (Tag_Table);
|
||||
pragma Suppress (Index_Check, On => Tag_Table);
|
||||
-- We suppress index checks because the declared size in the record
|
||||
-- below is a dummy size of one (see below).
|
||||
|
||||
type Wide_Boolean is new Boolean;
|
||||
-- This name should probably be changed sometime ??? and indeed
|
||||
@ -79,13 +83,33 @@ package body Ada.Tags is
|
||||
HT_Link : Tag;
|
||||
Remotely_Callable : Wide_Boolean;
|
||||
RC_Offset : SSE.Storage_Offset;
|
||||
Ancestor_Tags : Tag_Table (Natural);
|
||||
Ancestor_Tags : Tag_Table (0 .. 1);
|
||||
end record;
|
||||
-- The size of the Ancestor_Tags array actually depends on the tagged
|
||||
-- type to which it applies. We are using the same mechanism as for
|
||||
-- the Prims_Ptr array in the Dispatch_Table record. See comments
|
||||
-- below for more details.
|
||||
|
||||
type Dispatch_Table is record
|
||||
TSD : Type_Specific_Data_Ptr;
|
||||
Prims_Ptr : Address_Array (Positive);
|
||||
Prims_Ptr : Address_Array (1 .. 1);
|
||||
end record;
|
||||
-- The size of the Prims_Ptr array actually depends on the tagged
|
||||
-- type to which it applies. For each tagged type, the expander
|
||||
-- computes the actual array size, and allocates the Dispatch_Table
|
||||
-- record accordingly.
|
||||
--
|
||||
-- To avoid the use of discriminants to define the actual size
|
||||
-- of the dispatch table, we used to declare the tag as a pointer
|
||||
-- to a record that contains an arbitrary array of addresses, using
|
||||
-- Positive as its index. This ensures that there are never range
|
||||
-- checks when accessing the dispatch table, but it prevents GDB
|
||||
-- from displaying tagged types properly. A better approach is
|
||||
-- to declare this record type as holding a small number of addresses,
|
||||
-- and to explicitly suppress checks on it.
|
||||
--
|
||||
-- Note that in both cases, this type is never allocated, and serves
|
||||
-- only to declare the corresponding access type.
|
||||
|
||||
---------------------------------------------
|
||||
-- Unchecked Conversions for String Fields --
|
||||
@ -182,7 +206,6 @@ package body Ada.Tags is
|
||||
function H is new System.HTable.Hash (HTable_Headers);
|
||||
Str : constant Cstring_Ptr := To_Cstring_Ptr (F);
|
||||
Res : constant HTable_Headers := H (Str (1 .. Length (Str)));
|
||||
|
||||
begin
|
||||
return Res;
|
||||
end Hash;
|
||||
@ -219,7 +242,6 @@ package body Ada.Tags is
|
||||
|
||||
function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean is
|
||||
Pos : constant Integer := Obj_Tag.TSD.Idepth - Typ_Tag.TSD.Idepth;
|
||||
|
||||
begin
|
||||
return Pos >= 0 and then Obj_Tag.TSD.Ancestor_Tags (Pos) = Typ_Tag;
|
||||
end CW_Membership;
|
||||
@ -230,7 +252,6 @@ package body Ada.Tags is
|
||||
|
||||
function Expanded_Name (T : Tag) return String is
|
||||
Result : constant Cstring_Ptr := T.TSD.Expanded_Name;
|
||||
|
||||
begin
|
||||
return Result (1 .. Length (Result));
|
||||
end Expanded_Name;
|
||||
@ -241,7 +262,6 @@ package body Ada.Tags is
|
||||
|
||||
function External_Tag (T : Tag) return String is
|
||||
Result : constant Cstring_Ptr := T.TSD.External_Tag;
|
||||
|
||||
begin
|
||||
return Result (1 .. Length (Result));
|
||||
end External_Tag;
|
||||
|
@ -210,6 +210,10 @@ private
|
||||
-- Size of each ancestor tag entry in the TSD
|
||||
|
||||
type Address_Array is array (Natural range <>) of System.Address;
|
||||
pragma Suppress (Index_Check, On => Address_Array);
|
||||
-- The reason we suppress index checks is that in the body, objects
|
||||
-- of this type are declared with a dummy size of 1, the actual size
|
||||
-- depending on the number of primitive operations.
|
||||
|
||||
type Dispatch_Table;
|
||||
type Tag is access all Dispatch_Table;
|
||||
|
@ -41,6 +41,7 @@ with Sem_Res; use Sem_Res;
|
||||
with Sem_Util; use Sem_Util;
|
||||
with Sem_Warn; use Sem_Warn;
|
||||
with Sinfo; use Sinfo;
|
||||
with Snames; use Snames;
|
||||
with Stand; use Stand;
|
||||
with Tbuild; use Tbuild;
|
||||
with Uintp; use Uintp;
|
||||
@ -216,6 +217,13 @@ package body Exp_Ch2 is
|
||||
-- issue that they do not get replaced when they could be).
|
||||
|
||||
and then Nkind (Parent (N)) /= N_Pragma_Argument_Association
|
||||
|
||||
-- Same for Asm_Input and Asm_Output attribute references.
|
||||
|
||||
and then not (Nkind (Parent (N)) = N_Attribute_Reference
|
||||
and then (Attribute_Name (Parent (N)) = Name_Asm_Input
|
||||
or else Attribute_Name (Parent (N)) = Name_Asm_Output))
|
||||
|
||||
then
|
||||
-- Case of Current_Value is a compile time known value
|
||||
|
||||
|
@ -3413,7 +3413,7 @@ package body Exp_Ch9 is
|
||||
|
||||
-- It is not a boolean variable or literal, so check the restriction
|
||||
|
||||
Check_Restriction (Boolean_Entry_Barriers, Cond);
|
||||
Check_Restriction (Simple_Barriers, Cond);
|
||||
end Expand_Entry_Barrier;
|
||||
|
||||
------------------------------------
|
||||
|
@ -113,7 +113,7 @@ procedure Gnatbind is
|
||||
No_Reentrancy => True,
|
||||
-- Not checkable at compile time
|
||||
|
||||
Max_Entry_Queue_Depth => True,
|
||||
Max_Entry_Queue_Length => True,
|
||||
-- Not checkable at compile time
|
||||
|
||||
Max_Storage_At_Blocking => True,
|
||||
|
36
gcc/ada/gprmake.adb
Normal file
36
gcc/ada/gprmake.adb
Normal file
@ -0,0 +1,36 @@
|
||||
------------------------------------------------------------------------------
|
||||
-- --
|
||||
-- GNAT COMPILER COMPONENTS --
|
||||
-- --
|
||||
-- G P R M A K E --
|
||||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 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- --
|
||||
-- ware Foundation; either version 2, or (at your option) any later ver- --
|
||||
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
|
||||
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
|
||||
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
|
||||
-- for more details. You should have received a copy of the GNU General --
|
||||
-- Public License distributed with GNAT; see file COPYING. If not, write --
|
||||
-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
|
||||
-- MA 02111-1307, USA. --
|
||||
-- --
|
||||
-- GNAT was originally developed by the GNAT team at New York University. --
|
||||
-- Extensive contributions were provided by Ada Core Technologies Inc. --
|
||||
-- --
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
-- The driver for the gprmake tool.
|
||||
|
||||
with Makegpr;
|
||||
|
||||
procedure Gprmake is
|
||||
begin
|
||||
-- The code is in Makegpr
|
||||
|
||||
Makegpr.Gprmake;
|
||||
end Gprmake;
|
@ -32,13 +32,13 @@
|
||||
{"@ada",
|
||||
"\
|
||||
%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
|
||||
%{!gnatc*:%{!gnatz*:%{!gnats*:%{!S:%{!c:\
|
||||
%eone of -c, -S, -gnatc, -gnatz, or -gnats is required for Ada}}}}}\
|
||||
%{!gnatc*:%{!gnats*:%{!S:%{!c:\
|
||||
%eone of -c, -S, -gnatc or -gnats is required for Ada}}}}\
|
||||
gnat1 %{I*} %{k8:-gnatk8} %{w:-gnatws} %1 %{!Q:-quiet} %{nostdinc*}\
|
||||
%{nostdlib*}\
|
||||
-dumpbase %{.adb:%b.adb}%{.ads:%b.ads}%{!.adb:%{!.ads:%b.ada}}\
|
||||
%{g*} %{O*} %{W*} %{w} %{p} %{pg:-p} %{m*} %{a} %{f*} %{d*}\
|
||||
%{!S:%{o*:%w%*-gnatO}} \
|
||||
%i %{S:%W{o*}%{!o*:-o %b.s}} \
|
||||
%{!S:%{gnatc*|gnatz*|gnats*: -o %j}} \
|
||||
%{!gnatc*:%{!gnatz*:%{!gnats*:%(invoke_as)}}}", 0, 0, 0},
|
||||
%{!S:%{gnatc*|gnats*: -o %j}} \
|
||||
%{!gnatc*:%{!gnats*:%(invoke_as)}}", 0, 0, 0},
|
||||
|
@ -343,12 +343,12 @@ package body Make is
|
||||
-- Can be set to False with the switches -c, -b and -l.
|
||||
-- These flags are reset to True for each invokation of procedure Gnatmake.
|
||||
|
||||
Shared_String : aliased String := "-shared";
|
||||
Shared_String : aliased String := "-shared";
|
||||
Force_Elab_Flags_String : aliased String := "-F";
|
||||
|
||||
No_Shared_Switch : aliased Argument_List := (1 .. 0 => null);
|
||||
Shared_Switch : aliased Argument_List := (1 => Shared_String'Access);
|
||||
Bind_Shared : Argument_List_Access := No_Shared_Switch'Access;
|
||||
No_Shared_Switch : aliased Argument_List := (1 .. 0 => null);
|
||||
Shared_Switch : aliased Argument_List := (1 => Shared_String'Access);
|
||||
Bind_Shared : Argument_List_Access := No_Shared_Switch'Access;
|
||||
-- Switch to added in front of gnatbind switches. By default no switch is
|
||||
-- added. Switch "-shared" is added if there is a non-static Library
|
||||
-- Project File.
|
||||
@ -378,7 +378,9 @@ package body Make is
|
||||
-- and is set to True whenever one of the source of the executable is
|
||||
-- compiled, or has already been compiled for another executable.
|
||||
|
||||
Max_Header : constant := 200; -- Arbitrary
|
||||
Max_Header : constant := 200;
|
||||
-- This needs a proper comment, it used to say "arbitrary"
|
||||
-- that's not an adequate comment ???
|
||||
|
||||
type Header_Num is range 1 .. Max_Header;
|
||||
-- Header_Num for the hash table Obsoleted below
|
||||
|
3527
gcc/ada/makegpr.adb
Normal file
3527
gcc/ada/makegpr.adb
Normal file
File diff suppressed because it is too large
Load Diff
35
gcc/ada/makegpr.ads
Normal file
35
gcc/ada/makegpr.ads
Normal file
@ -0,0 +1,35 @@
|
||||
------------------------------------------------------------------------------
|
||||
-- --
|
||||
-- GNAT COMPILER COMPONENTS --
|
||||
-- --
|
||||
-- M A K E G P R --
|
||||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 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- --
|
||||
-- ware Foundation; either version 2, or (at your option) any later ver- --
|
||||
-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
|
||||
-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
|
||||
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
|
||||
-- for more details. You should have received a copy of the GNU General --
|
||||
-- Public License distributed with GNAT; see file COPYING. If not, write --
|
||||
-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
|
||||
-- MA 02111-1307, USA. --
|
||||
-- --
|
||||
-- GNAT was originally developed by the GNAT team at New York University. --
|
||||
-- Extensive contributions were provided by Ada Core Technologies Inc. --
|
||||
-- --
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
-- The following package implements the facilities to compile, bind and/or
|
||||
-- link a set of Ada and non Ada sources, specified in Project Files.
|
||||
|
||||
package Makegpr is
|
||||
|
||||
procedure Gprmake;
|
||||
-- The driver of gprmake.
|
||||
|
||||
end Makegpr;
|
@ -368,7 +368,7 @@ package body Restrict is
|
||||
and then Restrictions.Set (No_Task_Allocators)
|
||||
and then Restrictions.Set (No_Dynamic_Priorities)
|
||||
and then Restrictions.Set (No_Terminate_Alternatives)
|
||||
and then Restrictions.Set (No_Dynamic_Interrupts)
|
||||
and then Restrictions.Set (No_Dynamic_Attachment)
|
||||
and then Restrictions.Set (No_Protected_Type_Allocators)
|
||||
and then Restrictions.Set (No_Local_Protected_Objects)
|
||||
and then Restrictions.Set (No_Requeue_Statements)
|
||||
@ -442,7 +442,7 @@ package body Restrict is
|
||||
procedure Set_Ravenscar (N : Node_Id) is
|
||||
begin
|
||||
Set_Restricted_Profile (N);
|
||||
Set_Restriction (Boolean_Entry_Barriers, N);
|
||||
Set_Restriction (Simple_Barriers, N);
|
||||
Set_Restriction (No_Select_Statements, N);
|
||||
Set_Restriction (No_Calendar, N);
|
||||
Set_Restriction (No_Entry_Queue, N);
|
||||
@ -468,7 +468,7 @@ package body Restrict is
|
||||
Set_Restriction (No_Task_Allocators, N);
|
||||
Set_Restriction (No_Dynamic_Priorities, N);
|
||||
Set_Restriction (No_Terminate_Alternatives, N);
|
||||
Set_Restriction (No_Dynamic_Interrupts, N);
|
||||
Set_Restriction (No_Dynamic_Attachment, N);
|
||||
Set_Restriction (No_Protected_Type_Allocators, N);
|
||||
Set_Restriction (No_Local_Protected_Objects, N);
|
||||
Set_Restriction (No_Requeue_Statements, N);
|
||||
|
@ -104,9 +104,9 @@ package Restrict is
|
||||
-- (which is why this restriction itself is excluded from the list).
|
||||
|
||||
Implementation_Restriction : array (All_Restrictions) of Boolean :=
|
||||
(Boolean_Entry_Barriers => True,
|
||||
(Simple_Barriers => True,
|
||||
No_Calendar => True,
|
||||
No_Dynamic_Interrupts => True,
|
||||
No_Dynamic_Attachment => True,
|
||||
No_Enumeration_Maps => True,
|
||||
No_Entry_Calls_In_Elaboration_Code => True,
|
||||
No_Entry_Queue => True,
|
||||
|
@ -174,6 +174,23 @@ package body Rtsfind is
|
||||
-- used if you are sure that the message comes directly or indirectly from
|
||||
-- a call to the RTE function.
|
||||
|
||||
------------------------
|
||||
-- Entity_Not_Defined --
|
||||
------------------------
|
||||
|
||||
procedure Entity_Not_Defined (Id : RE_Id) is
|
||||
begin
|
||||
if No_Run_Time_Mode then
|
||||
RTE_Error_Msg ("|construct not allowed in no run time mode");
|
||||
elsif Configurable_Run_Time_Mode then
|
||||
RTE_Error_Msg ("|construct not allowed in this configuration>");
|
||||
else
|
||||
RTE_Error_Msg ("run-time configuration error");
|
||||
end if;
|
||||
|
||||
Output_Entity_Name (Id, "not defined");
|
||||
end Entity_Not_Defined;
|
||||
|
||||
-------------------
|
||||
-- Get_Unit_Name --
|
||||
-------------------
|
||||
@ -403,23 +420,6 @@ package body Rtsfind is
|
||||
Chars (Sel) in Text_IO_Package_Name;
|
||||
end Is_Text_IO_Kludge_Unit;
|
||||
|
||||
------------------------
|
||||
-- Entity_Not_Defined --
|
||||
------------------------
|
||||
|
||||
procedure Entity_Not_Defined (Id : RE_Id) is
|
||||
begin
|
||||
if No_Run_Time_Mode then
|
||||
RTE_Error_Msg ("|construct not allowed in no run time mode");
|
||||
elsif Configurable_Run_Time_Mode then
|
||||
RTE_Error_Msg ("|construct not allowed in this configuration>");
|
||||
else
|
||||
RTE_Error_Msg ("run-time configuration error");
|
||||
end if;
|
||||
|
||||
Output_Entity_Name (Id, "not defined");
|
||||
end Entity_Not_Defined;
|
||||
|
||||
---------------
|
||||
-- Load_Fail --
|
||||
---------------
|
||||
@ -1046,6 +1046,15 @@ package body Rtsfind is
|
||||
end if;
|
||||
end RTE_Error_Msg;
|
||||
|
||||
----------------
|
||||
-- RTU_Loaded --
|
||||
----------------
|
||||
|
||||
function RTU_Loaded (U : RTU_Id) return Boolean is
|
||||
begin
|
||||
return Present (RT_Unit_Table (U).Entity);
|
||||
end RTU_Loaded;
|
||||
|
||||
--------------------
|
||||
-- Text_IO_Kludge --
|
||||
--------------------
|
||||
|
@ -2712,6 +2712,12 @@ package Rtsfind is
|
||||
-- exception and without generating an error message, i.e. if the
|
||||
-- call will obtain the desired entity without any problems.
|
||||
|
||||
function RTU_Loaded (U : RTU_Id) return Boolean;
|
||||
pragma Inline (RTU_Loaded);
|
||||
-- Returns true if indicated unit has already been successfully loaded.
|
||||
-- If the unit has not been loaded, returns False. Note that this does
|
||||
-- not mean that an attempt to load it subsequently would fail.
|
||||
|
||||
procedure Text_IO_Kludge (Nam : Node_Id);
|
||||
-- In Ada 83, and hence for compatibility in Ada 9X, package Text_IO has
|
||||
-- generic subpackages (e.g. Integer_IO). They really should be child
|
||||
|
@ -57,7 +57,7 @@ package System.Rident is
|
||||
|
||||
-- The following cases are checked for consistency in the binder
|
||||
|
||||
(Boolean_Entry_Barriers, -- GNAT (Ravenscar)
|
||||
(Simple_Barriers, -- GNAT (Ravenscar)
|
||||
No_Abort_Statements, -- (RM D.7(5), H.4(3))
|
||||
No_Access_Subprograms, -- (RM H.4(17))
|
||||
No_Allocators, -- (RM H.4(7))
|
||||
@ -66,7 +66,7 @@ package System.Rident is
|
||||
No_Delay, -- (RM H.4(21))
|
||||
No_Direct_Boolean_Operators, -- GNAT
|
||||
No_Dispatch, -- (RM H.4(19))
|
||||
No_Dynamic_Interrupts, -- GNAT
|
||||
No_Dynamic_Attachment, -- GNAT
|
||||
No_Dynamic_Priorities, -- (RM D.9(9))
|
||||
No_Enumeration_Maps, -- GNAT
|
||||
No_Entry_Calls_In_Elaboration_Code, -- GNAT
|
||||
@ -144,7 +144,7 @@ package System.Rident is
|
||||
-- between different non-zero values.
|
||||
|
||||
Max_Asynchronous_Select_Nesting, -- (RM D.7(18), H.4(3))
|
||||
Max_Entry_Queue_Depth, -- GNAT
|
||||
Max_Entry_Queue_Length, -- GNAT
|
||||
|
||||
-- The remaining entries are not checked at compile/bind time
|
||||
|
||||
@ -154,19 +154,22 @@ package System.Rident is
|
||||
|
||||
-- Synonyms permitted for historical purposes of compatibility
|
||||
|
||||
-- No_Requeue synonym for No_Requeue_Statements
|
||||
-- No_Task_Attributes synonym for No_Task_Attributes_Package
|
||||
-- Boolean_Entry_Barriers synonym for Simple_Barriers
|
||||
-- Max_Entry_Queue_Depth synonym for Max_Entry_Queue_Length
|
||||
-- No_Dynamic_Interrupts synonym for No_Dynamic_Attachment
|
||||
-- No_Requeue synonym for No_Requeue_Statements
|
||||
-- No_Task_Attributes synonym for No_Task_Attributes_Package
|
||||
|
||||
subtype All_Restrictions is Restriction_Id range
|
||||
Boolean_Entry_Barriers .. Max_Storage_At_Blocking;
|
||||
Simple_Barriers .. Max_Storage_At_Blocking;
|
||||
-- All restrictions (excluding only Not_A_Restriction_Id)
|
||||
|
||||
subtype All_Boolean_Restrictions is Restriction_Id range
|
||||
Boolean_Entry_Barriers .. No_Elaboration_Code;
|
||||
Simple_Barriers .. No_Elaboration_Code;
|
||||
-- All restrictions which do not take a parameter
|
||||
|
||||
subtype Partition_Boolean_Restrictions is All_Boolean_Restrictions range
|
||||
Boolean_Entry_Barriers .. Static_Storage_Size;
|
||||
Simple_Barriers .. Static_Storage_Size;
|
||||
-- Boolean restrictions that are checked for partition consistency.
|
||||
-- Note that all parameter restrictions are checked for partition
|
||||
-- consistency by default, so this distinction is only needed in the
|
||||
@ -186,7 +189,7 @@ package System.Rident is
|
||||
|
||||
subtype Checked_Parameter_Restrictions is
|
||||
All_Parameter_Restrictions range
|
||||
Max_Protected_Entries .. Max_Entry_Queue_Depth;
|
||||
Max_Protected_Entries .. Max_Entry_Queue_Length;
|
||||
-- These are the parameter restrictions that can be at least partially
|
||||
-- checked at compile/binder time. Minimally, the compiler can detect
|
||||
-- violations of a restriction pragma with a value of zero reliably.
|
||||
@ -213,7 +216,7 @@ package System.Rident is
|
||||
|
||||
subtype Checked_Zero_Parameter_Restrictions is
|
||||
Checked_Parameter_Restrictions range
|
||||
Max_Asynchronous_Select_Nesting .. Max_Entry_Queue_Depth;
|
||||
Max_Asynchronous_Select_Nesting .. Max_Entry_Queue_Length;
|
||||
-- Restrictions with parameters where the compiler can detect the use of
|
||||
-- the feature, and hence violations of a restriction specifying a value
|
||||
-- of zero, but cannot detect specific values other than zero/nonzero.
|
||||
|
@ -212,7 +212,7 @@ package body Sem_Aggr is
|
||||
-- This procedure performs the semantic checks for an array aggregate.
|
||||
-- True is returned if the aggregate resolution succeeds.
|
||||
-- The procedure works by recursively checking each nested aggregate.
|
||||
-- Specifically, after checking a sub-aggreate nested at the i-th level
|
||||
-- Specifically, after checking a sub-aggregate nested at the i-th level
|
||||
-- we recursively check all the subaggregates at the i+1-st level (if any).
|
||||
-- Note that for aggregates analysis and resolution go hand in hand.
|
||||
-- Aggregate analysis has been delayed up to here and it is done while
|
||||
|
@ -5896,7 +5896,7 @@ package body Sem_Attr is
|
||||
Id : RE_Id;
|
||||
|
||||
begin
|
||||
if Is_RTE (P_Root_Type, RE_Address) then
|
||||
if Is_Descendent_Of_Address (Typ) then
|
||||
Id := RE_Type_Class_Address;
|
||||
|
||||
elsif Is_Enumeration_Type (Typ) then
|
||||
|
@ -45,6 +45,7 @@ with Snames; use Snames;
|
||||
with Stand; use Stand;
|
||||
with Sinfo; use Sinfo;
|
||||
with Table;
|
||||
with Targparm; use Targparm;
|
||||
with Ttypes; use Ttypes;
|
||||
with Tbuild; use Tbuild;
|
||||
with Urealp; use Urealp;
|
||||
@ -2699,8 +2700,19 @@ package body Sem_Ch13 is
|
||||
end if;
|
||||
end if;
|
||||
|
||||
when N_Integer_Literal |
|
||||
N_Real_Literal |
|
||||
when N_Integer_Literal =>
|
||||
|
||||
-- If this is a rewritten unchecked conversion, in a system
|
||||
-- where Address is an integer type, always use the base type
|
||||
-- for a literal value. This is user-friendly and prevents
|
||||
-- order-of-elaboration issues with instances of unchecked
|
||||
-- conversion.
|
||||
|
||||
if Nkind (Original_Node (Nod)) = N_Function_Call then
|
||||
Set_Etype (Nod, Base_Type (Etype (Nod)));
|
||||
end if;
|
||||
|
||||
when N_Real_Literal |
|
||||
N_String_Literal |
|
||||
N_Character_Literal =>
|
||||
return;
|
||||
@ -3068,10 +3080,19 @@ package body Sem_Ch13 is
|
||||
then
|
||||
return 0;
|
||||
|
||||
-- Access types
|
||||
-- Access types. Normally an access type cannot have a size smaller
|
||||
-- than the size of System.Address. The exception is on VMS, where
|
||||
-- we have short and long addresses, and it is possible for an access
|
||||
-- type to have a short address size (and thus be less than the size
|
||||
-- of System.Address itself). We simply skip the check for VMS, and
|
||||
-- leave the back end to do the check.
|
||||
|
||||
elsif Is_Access_Type (T) then
|
||||
return System_Address_Size;
|
||||
if OpenVMS_On_Target then
|
||||
return 0;
|
||||
else
|
||||
return System_Address_Size;
|
||||
end if;
|
||||
|
||||
-- Floating-point types
|
||||
|
||||
|
@ -4346,9 +4346,9 @@ package body Sem_Ch4 is
|
||||
--------------------------------
|
||||
|
||||
procedure Remove_Abstract_Operations (N : Node_Id) is
|
||||
I : Interp_Index;
|
||||
It : Interp;
|
||||
Abstract_Op : Entity_Id := Empty;
|
||||
I : Interp_Index;
|
||||
It : Interp;
|
||||
Abstract_Op : Entity_Id := Empty;
|
||||
|
||||
-- AI-310: If overloaded, remove abstract non-dispatching
|
||||
-- operations. We activate this if either extensions are
|
||||
@ -4359,6 +4359,42 @@ package body Sem_Ch4 is
|
||||
-- subprograms are used to hide its operators, they will be
|
||||
-- truly hidden.
|
||||
|
||||
procedure Remove_Address_Interpretations;
|
||||
-- Ambiguities may arise when the operands are literal and the
|
||||
-- address operations in s-auxdec are visible. In that case, remove
|
||||
-- the interpretation of a literal as Address, to retain the semantics
|
||||
-- of Address as a private type.
|
||||
|
||||
------------------------------------
|
||||
-- Remove_Address_Intereprtations --
|
||||
------------------------------------
|
||||
|
||||
procedure Remove_Address_Interpretations is
|
||||
Formal : Entity_Id;
|
||||
|
||||
begin
|
||||
if Is_Overloaded (N) then
|
||||
Get_First_Interp (N, I, It);
|
||||
while Present (It.Nam) loop
|
||||
Formal := First_Entity (It.Nam);
|
||||
|
||||
if Is_Descendent_Of_Address (Etype (Formal))
|
||||
or else
|
||||
(Present (Next_Entity (Formal))
|
||||
and then
|
||||
Is_Descendent_Of_Address
|
||||
(Etype (Next_Entity (Formal))))
|
||||
then
|
||||
Remove_Interp (I);
|
||||
end if;
|
||||
|
||||
Get_Next_Interp (I, It);
|
||||
end loop;
|
||||
end if;
|
||||
end Remove_Address_Interpretations;
|
||||
|
||||
-- Start of processing for Remove_Abstract_Operations
|
||||
|
||||
begin
|
||||
if Is_Overloaded (N) then
|
||||
Get_First_Interp (N, I, It);
|
||||
@ -4388,17 +4424,21 @@ package body Sem_Ch4 is
|
||||
if No (Abstract_Op) then
|
||||
return;
|
||||
|
||||
-- Remove address interpretations if we have a universal
|
||||
-- interpretation. This avoids literals being interpreted
|
||||
-- as type Address, which is never appropriate.
|
||||
|
||||
elsif Nkind (N) in N_Op then
|
||||
if Nkind (N) in N_Unary_Op
|
||||
and then Present (Universal_Interpretation (Right_Opnd (N)))
|
||||
then
|
||||
return;
|
||||
Remove_Address_Interpretations;
|
||||
|
||||
elsif Nkind (N) in N_Binary_Op
|
||||
and then Present (Universal_Interpretation (Right_Opnd (N)))
|
||||
and then Present (Universal_Interpretation (Left_Opnd (N)))
|
||||
then
|
||||
return;
|
||||
Remove_Address_Interpretations;
|
||||
|
||||
else
|
||||
Get_First_Interp (N, I, It);
|
||||
@ -4428,12 +4468,14 @@ package body Sem_Ch4 is
|
||||
(No (Next (Arg1))
|
||||
or else Present (Universal_Interpretation (Next (Arg1))))
|
||||
then
|
||||
return;
|
||||
Remove_Address_Interpretations;
|
||||
|
||||
else
|
||||
Get_First_Interp (N, I, It);
|
||||
while Present (It.Nam) loop
|
||||
if Scope (It.Nam) = Standard_Standard then
|
||||
if Scope (It.Nam) = Standard_Standard
|
||||
and then It.Typ = Base_Type (Etype (Abstract_Op))
|
||||
then
|
||||
Remove_Interp (I);
|
||||
end if;
|
||||
|
||||
|
@ -888,7 +888,7 @@ package body Sem_Prag is
|
||||
("argument of pragma% must be entity name", Arg1);
|
||||
|
||||
elsif Prag_Id = Pragma_Interrupt_Handler then
|
||||
Check_Restriction (No_Dynamic_Interrupts, N);
|
||||
Check_Restriction (No_Dynamic_Attachment, N);
|
||||
end if;
|
||||
|
||||
declare
|
||||
@ -3276,10 +3276,61 @@ package body Sem_Prag is
|
||||
Error_Pragma_Arg
|
||||
("invalid form for restriction", Arg);
|
||||
|
||||
-- Deal with synonyms. This should be done more cleanly ???
|
||||
|
||||
else
|
||||
-- Boolean_Entry_Barriers is a synonym of Simple_Barriers
|
||||
|
||||
if Chars (Expr) = Name_Boolean_Entry_Barriers then
|
||||
Check_Restriction
|
||||
(No_Implementation_Restrictions, Arg);
|
||||
Set_Restriction (Simple_Barriers, N);
|
||||
Set_Warning (Simple_Barriers);
|
||||
|
||||
-- Max_Entry_Queue_Depth is a synonym of
|
||||
-- Max_Entry_Queue_Length
|
||||
|
||||
elsif Chars (Expr) = Name_Max_Entry_Queue_Depth then
|
||||
Analyze_And_Resolve (Expr, Any_Integer);
|
||||
|
||||
if not Is_OK_Static_Expression (Expr) then
|
||||
Flag_Non_Static_Expr
|
||||
("value must be static expression!", Expr);
|
||||
raise Pragma_Exit;
|
||||
|
||||
elsif not Is_Integer_Type (Etype (Expr))
|
||||
or else Expr_Value (Expr) < 0
|
||||
then
|
||||
Error_Pragma_Arg
|
||||
("value must be non-negative integer", Arg);
|
||||
|
||||
-- Restriction pragma is active
|
||||
|
||||
else
|
||||
Val := Expr_Value (Expr);
|
||||
|
||||
if not UI_Is_In_Int_Range (Val) then
|
||||
Error_Pragma_Arg
|
||||
("pragma ignored, value too large?", Arg);
|
||||
else
|
||||
Set_Restriction (Max_Entry_Queue_Length, N,
|
||||
Integer (UI_To_Int (Val)));
|
||||
Set_Warning (Max_Entry_Queue_Length);
|
||||
end if;
|
||||
end if;
|
||||
|
||||
-- No_Dynamic_Interrupts is a synonym for
|
||||
-- No_Dynamic_Attachment
|
||||
|
||||
elsif Chars (Expr) = Name_No_Dynamic_Interrupts then
|
||||
Check_Restriction
|
||||
(No_Implementation_Restrictions, Arg);
|
||||
Set_Restriction (No_Dynamic_Attachment, N);
|
||||
Set_Warning (No_Dynamic_Attachment);
|
||||
|
||||
-- No_Requeue is a synonym for No_Requeue_Statements
|
||||
|
||||
if Chars (Expr) = Name_No_Requeue then
|
||||
elsif Chars (Expr) = Name_No_Requeue then
|
||||
Check_Restriction
|
||||
(No_Implementation_Restrictions, Arg);
|
||||
Set_Restriction (No_Requeue_Statements, N);
|
||||
|
@ -4487,7 +4487,7 @@ package body Sem_Res is
|
||||
-- call at all violates a specified nesting depth of zero.
|
||||
|
||||
if Is_Protected_Type (Scope (Nam)) then
|
||||
Check_Restriction (Max_Entry_Queue_Depth, N);
|
||||
Check_Restriction (Max_Entry_Queue_Length, N);
|
||||
end if;
|
||||
|
||||
-- Use context type to disambiguate a protected function that can be
|
||||
|
@ -42,6 +42,7 @@ with Nmake; use Nmake;
|
||||
with Output; use Output;
|
||||
with Opt; use Opt;
|
||||
with Restrict; use Restrict;
|
||||
with Rtsfind; use Rtsfind;
|
||||
with Scans; use Scans;
|
||||
with Scn; use Scn;
|
||||
with Sem; use Sem;
|
||||
@ -3380,6 +3381,88 @@ package body Sem_Util is
|
||||
and then Prefix (P) = N;
|
||||
end Is_Dereferenced;
|
||||
|
||||
----------------------
|
||||
-- Is_Descendent_Of --
|
||||
----------------------
|
||||
|
||||
function Is_Descendent_Of (T1 : Entity_Id; T2 : Entity_Id) return Boolean is
|
||||
T : Entity_Id;
|
||||
Etyp : Entity_Id;
|
||||
|
||||
begin
|
||||
pragma Assert (Nkind (T1) in N_Entity);
|
||||
pragma Assert (Nkind (T2) in N_Entity);
|
||||
|
||||
T := Base_Type (T1);
|
||||
|
||||
-- Immediate return if the types match
|
||||
|
||||
if T = T2 then
|
||||
return True;
|
||||
|
||||
-- Comment needed here ???
|
||||
|
||||
elsif Ekind (T) = E_Class_Wide_Type then
|
||||
return Etype (T) = T2;
|
||||
|
||||
-- All other cases
|
||||
|
||||
else
|
||||
loop
|
||||
Etyp := Etype (T);
|
||||
|
||||
-- Done if we found the type we are looking for
|
||||
|
||||
if Etyp = T2 then
|
||||
return True;
|
||||
|
||||
-- Done if no more derivations to check
|
||||
|
||||
elsif T = T1 then
|
||||
return False;
|
||||
|
||||
-- Following test catches error cases resulting from prev errors
|
||||
|
||||
elsif No (Etyp) then
|
||||
return False;
|
||||
|
||||
elsif Is_Private_Type (T) and then Etyp = Full_View (T) then
|
||||
return False;
|
||||
|
||||
elsif Is_Private_Type (Etyp) and then Full_View (Etyp) = T then
|
||||
return False;
|
||||
end if;
|
||||
|
||||
-- Return if no further entries to check
|
||||
|
||||
if T = Base_Type (T1) or else T = T1 then
|
||||
return False;
|
||||
end if;
|
||||
end loop;
|
||||
end if;
|
||||
|
||||
raise Program_Error;
|
||||
end Is_Descendent_Of;
|
||||
|
||||
------------------------------
|
||||
-- Is_Descendent_Of_Address --
|
||||
------------------------------
|
||||
|
||||
function Is_Descendent_Of_Address (T1 : Entity_Id) return Boolean is
|
||||
begin
|
||||
-- If Address has not been loaded, answer must be False
|
||||
|
||||
if not RTU_Loaded (System) then
|
||||
return False;
|
||||
|
||||
-- Otherwise we can get the entity we are interested in without
|
||||
-- causing an unwanted dependency on System, and do the test.
|
||||
|
||||
else
|
||||
return Is_Descendent_Of (T1, Base_Type (RTE (RE_Address)));
|
||||
end if;
|
||||
end Is_Descendent_Of_Address;
|
||||
|
||||
--------------
|
||||
-- Is_False --
|
||||
--------------
|
||||
|
@ -259,28 +259,28 @@ package Sem_Util is
|
||||
Governed_By : List_Id;
|
||||
Into : Elist_Id;
|
||||
Report_Errors : out Boolean);
|
||||
-- The purpose of this procedure is to gather the valid components
|
||||
-- in a record type according to the values of its discriminants, in order
|
||||
-- to validate the components of a record aggregate.
|
||||
-- The purpose of this procedure is to gather the valid components in a
|
||||
-- record type according to the values of its discriminants, in order to
|
||||
-- validate the components of a record aggregate.
|
||||
--
|
||||
-- Typ is the type of the aggregate when its constrained discriminants
|
||||
-- need to be collected, otherwise it is Empty.
|
||||
--
|
||||
-- Comp_List is an N_Component_List node.
|
||||
--
|
||||
-- Governed_By is a list of N_Component_Association nodes,
|
||||
-- where each choice list contains the name of a discriminant and
|
||||
-- the expression field gives its value. The values of the
|
||||
-- discriminants governing the (possibly nested) variant parts in
|
||||
-- Comp_List are found in this Component_Association List.
|
||||
-- Governed_By is a list of N_Component_Association nodes, where each
|
||||
-- choice list contains the name of a discriminant and the expression
|
||||
-- field gives its value. The values of the discriminants governing
|
||||
-- the (possibly nested) variant parts in Comp_List are found in this
|
||||
-- Component_Association List.
|
||||
--
|
||||
-- Into is the list where the valid components are appended.
|
||||
-- Note that Into need not be an Empty list. If it's not, components
|
||||
-- are attached to its tail.
|
||||
-- Into is the list where the valid components are appended. Note that
|
||||
-- Into need not be an Empty list. If it's not, components are attached
|
||||
-- to its tail.
|
||||
--
|
||||
-- Report_Errors is set to True if the values of the discriminants are
|
||||
-- non-static.
|
||||
--
|
||||
-- Report_Errors is set to True if the values of the discriminants
|
||||
-- are non-static.
|
||||
|
||||
-- This procedure is also used when building a record subtype. If the
|
||||
-- discriminant constraint of the subtype is static, the components of the
|
||||
-- subtype are only those of the variants selected by the values of the
|
||||
@ -442,6 +442,16 @@ package Sem_Util is
|
||||
-- of the access value (selected/indexed component, explicit dereference
|
||||
-- or a slice), and false otherwise.
|
||||
|
||||
function Is_Descendent_Of (T1 : Entity_Id; T2 : Entity_Id) return Boolean;
|
||||
-- Returns True if type T1 is a descendent of type T2, and false otherwise.
|
||||
-- This is the RM definition, a type is a descendent of another type if it
|
||||
-- is the same type or is derived from a descendent of the other type.
|
||||
|
||||
function Is_Descendent_Of_Address (T1 : Entity_Id) return Boolean;
|
||||
-- Returns True if type T1 is a descendent of Address or its base type.
|
||||
-- Similar to calling Is_Descendent_Of with Base_Type (RTE (RE_Address))
|
||||
-- except that it avoids creating an unconditional dependency on System.
|
||||
|
||||
function Is_False (U : Uint) return Boolean;
|
||||
-- The argument is a Uint value which is the Boolean'Pos value of a
|
||||
-- Boolean operand (i.e. is either 0 for False, or 1 for True). This
|
||||
|
@ -319,6 +319,7 @@ package body Snames is
|
||||
"win32#" &
|
||||
"as_is#" &
|
||||
"body_file_name#" &
|
||||
"boolean_entry_barriers#" &
|
||||
"casing#" &
|
||||
"code#" &
|
||||
"component#" &
|
||||
@ -340,6 +341,7 @@ package body Snames is
|
||||
"internal#" &
|
||||
"link_name#" &
|
||||
"lowercase#" &
|
||||
"max_entry_queue_depth#" &
|
||||
"max_size#" &
|
||||
"mechanism#" &
|
||||
"mixedcase#" &
|
||||
@ -350,6 +352,7 @@ package body Snames is
|
||||
"on#" &
|
||||
"parameter_types#" &
|
||||
"reference#" &
|
||||
"no_dynamic_interrupts#" &
|
||||
"no_requeue#" &
|
||||
"no_task_attributes#" &
|
||||
"restricted#" &
|
||||
|
@ -517,66 +517,69 @@ package Snames is
|
||||
|
||||
Name_As_Is : constant Name_Id := N + 260;
|
||||
Name_Body_File_Name : constant Name_Id := N + 261;
|
||||
Name_Casing : constant Name_Id := N + 262;
|
||||
Name_Code : constant Name_Id := N + 263;
|
||||
Name_Component : constant Name_Id := N + 264;
|
||||
Name_Component_Size_4 : constant Name_Id := N + 265;
|
||||
Name_Copy : constant Name_Id := N + 266;
|
||||
Name_D_Float : constant Name_Id := N + 267;
|
||||
Name_Descriptor : constant Name_Id := N + 268;
|
||||
Name_Dot_Replacement : constant Name_Id := N + 269;
|
||||
Name_Dynamic : constant Name_Id := N + 270;
|
||||
Name_Entity : constant Name_Id := N + 271;
|
||||
Name_External_Name : constant Name_Id := N + 272;
|
||||
Name_First_Optional_Parameter : constant Name_Id := N + 273;
|
||||
Name_Form : constant Name_Id := N + 274;
|
||||
Name_G_Float : constant Name_Id := N + 275;
|
||||
Name_Gcc : constant Name_Id := N + 276;
|
||||
Name_Gnat : constant Name_Id := N + 277;
|
||||
Name_GPL : constant Name_Id := N + 278;
|
||||
Name_IEEE_Float : constant Name_Id := N + 279;
|
||||
Name_Internal : constant Name_Id := N + 280;
|
||||
Name_Link_Name : constant Name_Id := N + 281;
|
||||
Name_Lowercase : constant Name_Id := N + 282;
|
||||
Name_Max_Size : constant Name_Id := N + 283;
|
||||
Name_Mechanism : constant Name_Id := N + 284;
|
||||
Name_Mixedcase : constant Name_Id := N + 285;
|
||||
Name_Modified_GPL : constant Name_Id := N + 286;
|
||||
Name_Name : constant Name_Id := N + 287;
|
||||
Name_NCA : constant Name_Id := N + 288;
|
||||
Name_No : constant Name_Id := N + 289;
|
||||
Name_On : constant Name_Id := N + 290;
|
||||
Name_Parameter_Types : constant Name_Id := N + 291;
|
||||
Name_Reference : constant Name_Id := N + 292;
|
||||
Name_No_Requeue : constant Name_Id := N + 293;
|
||||
Name_No_Task_Attributes : constant Name_Id := N + 294;
|
||||
Name_Restricted : constant Name_Id := N + 295;
|
||||
Name_Result_Mechanism : constant Name_Id := N + 296;
|
||||
Name_Result_Type : constant Name_Id := N + 297;
|
||||
Name_Runtime : constant Name_Id := N + 298;
|
||||
Name_SB : constant Name_Id := N + 299;
|
||||
Name_Secondary_Stack_Size : constant Name_Id := N + 300;
|
||||
Name_Section : constant Name_Id := N + 301;
|
||||
Name_Semaphore : constant Name_Id := N + 302;
|
||||
Name_Spec_File_Name : constant Name_Id := N + 303;
|
||||
Name_Static : constant Name_Id := N + 304;
|
||||
Name_Stack_Size : constant Name_Id := N + 305;
|
||||
Name_Subunit_File_Name : constant Name_Id := N + 306;
|
||||
Name_Task_Stack_Size_Default : constant Name_Id := N + 307;
|
||||
Name_Task_Type : constant Name_Id := N + 308;
|
||||
Name_Time_Slicing_Enabled : constant Name_Id := N + 309;
|
||||
Name_Top_Guard : constant Name_Id := N + 310;
|
||||
Name_UBA : constant Name_Id := N + 311;
|
||||
Name_UBS : constant Name_Id := N + 312;
|
||||
Name_UBSB : constant Name_Id := N + 313;
|
||||
Name_Unit_Name : constant Name_Id := N + 314;
|
||||
Name_Unknown : constant Name_Id := N + 315;
|
||||
Name_Unrestricted : constant Name_Id := N + 316;
|
||||
Name_Uppercase : constant Name_Id := N + 317;
|
||||
Name_User : constant Name_Id := N + 318;
|
||||
Name_VAX_Float : constant Name_Id := N + 319;
|
||||
Name_VMS : constant Name_Id := N + 320;
|
||||
Name_Working_Storage : constant Name_Id := N + 321;
|
||||
Name_Boolean_Entry_Barriers : constant Name_Id := N + 262;
|
||||
Name_Casing : constant Name_Id := N + 263;
|
||||
Name_Code : constant Name_Id := N + 264;
|
||||
Name_Component : constant Name_Id := N + 265;
|
||||
Name_Component_Size_4 : constant Name_Id := N + 266;
|
||||
Name_Copy : constant Name_Id := N + 267;
|
||||
Name_D_Float : constant Name_Id := N + 268;
|
||||
Name_Descriptor : constant Name_Id := N + 269;
|
||||
Name_Dot_Replacement : constant Name_Id := N + 270;
|
||||
Name_Dynamic : constant Name_Id := N + 271;
|
||||
Name_Entity : constant Name_Id := N + 272;
|
||||
Name_External_Name : constant Name_Id := N + 273;
|
||||
Name_First_Optional_Parameter : constant Name_Id := N + 274;
|
||||
Name_Form : constant Name_Id := N + 275;
|
||||
Name_G_Float : constant Name_Id := N + 276;
|
||||
Name_Gcc : constant Name_Id := N + 277;
|
||||
Name_Gnat : constant Name_Id := N + 278;
|
||||
Name_GPL : constant Name_Id := N + 279;
|
||||
Name_IEEE_Float : constant Name_Id := N + 280;
|
||||
Name_Internal : constant Name_Id := N + 281;
|
||||
Name_Link_Name : constant Name_Id := N + 282;
|
||||
Name_Lowercase : constant Name_Id := N + 283;
|
||||
Name_Max_Entry_Queue_Depth : constant Name_Id := N + 284;
|
||||
Name_Max_Size : constant Name_Id := N + 285;
|
||||
Name_Mechanism : constant Name_Id := N + 286;
|
||||
Name_Mixedcase : constant Name_Id := N + 287;
|
||||
Name_Modified_GPL : constant Name_Id := N + 288;
|
||||
Name_Name : constant Name_Id := N + 289;
|
||||
Name_NCA : constant Name_Id := N + 290;
|
||||
Name_No : constant Name_Id := N + 291;
|
||||
Name_On : constant Name_Id := N + 292;
|
||||
Name_Parameter_Types : constant Name_Id := N + 293;
|
||||
Name_Reference : constant Name_Id := N + 294;
|
||||
Name_No_Dynamic_Interrupts : constant Name_Id := N + 295;
|
||||
Name_No_Requeue : constant Name_Id := N + 296;
|
||||
Name_No_Task_Attributes : constant Name_Id := N + 297;
|
||||
Name_Restricted : constant Name_Id := N + 298;
|
||||
Name_Result_Mechanism : constant Name_Id := N + 299;
|
||||
Name_Result_Type : constant Name_Id := N + 300;
|
||||
Name_Runtime : constant Name_Id := N + 301;
|
||||
Name_SB : constant Name_Id := N + 302;
|
||||
Name_Secondary_Stack_Size : constant Name_Id := N + 303;
|
||||
Name_Section : constant Name_Id := N + 304;
|
||||
Name_Semaphore : constant Name_Id := N + 305;
|
||||
Name_Spec_File_Name : constant Name_Id := N + 306;
|
||||
Name_Static : constant Name_Id := N + 307;
|
||||
Name_Stack_Size : constant Name_Id := N + 308;
|
||||
Name_Subunit_File_Name : constant Name_Id := N + 309;
|
||||
Name_Task_Stack_Size_Default : constant Name_Id := N + 310;
|
||||
Name_Task_Type : constant Name_Id := N + 311;
|
||||
Name_Time_Slicing_Enabled : constant Name_Id := N + 312;
|
||||
Name_Top_Guard : constant Name_Id := N + 313;
|
||||
Name_UBA : constant Name_Id := N + 314;
|
||||
Name_UBS : constant Name_Id := N + 315;
|
||||
Name_UBSB : constant Name_Id := N + 316;
|
||||
Name_Unit_Name : constant Name_Id := N + 317;
|
||||
Name_Unknown : constant Name_Id := N + 318;
|
||||
Name_Unrestricted : constant Name_Id := N + 319;
|
||||
Name_Uppercase : constant Name_Id := N + 320;
|
||||
Name_User : constant Name_Id := N + 321;
|
||||
Name_VAX_Float : constant Name_Id := N + 322;
|
||||
Name_VMS : constant Name_Id := N + 323;
|
||||
Name_Working_Storage : constant Name_Id := N + 324;
|
||||
|
||||
-- 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
|
||||
@ -590,158 +593,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 + 322;
|
||||
Name_Abort_Signal : constant Name_Id := N + 322; -- GNAT
|
||||
Name_Access : constant Name_Id := N + 323;
|
||||
Name_Address : constant Name_Id := N + 324;
|
||||
Name_Address_Size : constant Name_Id := N + 325; -- GNAT
|
||||
Name_Aft : constant Name_Id := N + 326;
|
||||
Name_Alignment : constant Name_Id := N + 327;
|
||||
Name_Asm_Input : constant Name_Id := N + 328; -- GNAT
|
||||
Name_Asm_Output : constant Name_Id := N + 329; -- GNAT
|
||||
Name_AST_Entry : constant Name_Id := N + 330; -- VMS
|
||||
Name_Bit : constant Name_Id := N + 331; -- GNAT
|
||||
Name_Bit_Order : constant Name_Id := N + 332;
|
||||
Name_Bit_Position : constant Name_Id := N + 333; -- GNAT
|
||||
Name_Body_Version : constant Name_Id := N + 334;
|
||||
Name_Callable : constant Name_Id := N + 335;
|
||||
Name_Caller : constant Name_Id := N + 336;
|
||||
Name_Code_Address : constant Name_Id := N + 337; -- GNAT
|
||||
Name_Component_Size : constant Name_Id := N + 338;
|
||||
Name_Compose : constant Name_Id := N + 339;
|
||||
Name_Constrained : constant Name_Id := N + 340;
|
||||
Name_Count : constant Name_Id := N + 341;
|
||||
Name_Default_Bit_Order : constant Name_Id := N + 342; -- GNAT
|
||||
Name_Definite : constant Name_Id := N + 343;
|
||||
Name_Delta : constant Name_Id := N + 344;
|
||||
Name_Denorm : constant Name_Id := N + 345;
|
||||
Name_Digits : constant Name_Id := N + 346;
|
||||
Name_Elaborated : constant Name_Id := N + 347; -- GNAT
|
||||
Name_Emax : constant Name_Id := N + 348; -- Ada 83
|
||||
Name_Enum_Rep : constant Name_Id := N + 349; -- GNAT
|
||||
Name_Epsilon : constant Name_Id := N + 350; -- Ada 83
|
||||
Name_Exponent : constant Name_Id := N + 351;
|
||||
Name_External_Tag : constant Name_Id := N + 352;
|
||||
Name_First : constant Name_Id := N + 353;
|
||||
Name_First_Bit : constant Name_Id := N + 354;
|
||||
Name_Fixed_Value : constant Name_Id := N + 355; -- GNAT
|
||||
Name_Fore : constant Name_Id := N + 356;
|
||||
Name_Has_Discriminants : constant Name_Id := N + 357; -- GNAT
|
||||
Name_Identity : constant Name_Id := N + 358;
|
||||
Name_Img : constant Name_Id := N + 359; -- GNAT
|
||||
Name_Integer_Value : constant Name_Id := N + 360; -- GNAT
|
||||
Name_Large : constant Name_Id := N + 361; -- Ada 83
|
||||
Name_Last : constant Name_Id := N + 362;
|
||||
Name_Last_Bit : constant Name_Id := N + 363;
|
||||
Name_Leading_Part : constant Name_Id := N + 364;
|
||||
Name_Length : constant Name_Id := N + 365;
|
||||
Name_Machine_Emax : constant Name_Id := N + 366;
|
||||
Name_Machine_Emin : constant Name_Id := N + 367;
|
||||
Name_Machine_Mantissa : constant Name_Id := N + 368;
|
||||
Name_Machine_Overflows : constant Name_Id := N + 369;
|
||||
Name_Machine_Radix : constant Name_Id := N + 370;
|
||||
Name_Machine_Rounds : constant Name_Id := N + 371;
|
||||
Name_Machine_Size : constant Name_Id := N + 372; -- GNAT
|
||||
Name_Mantissa : constant Name_Id := N + 373; -- Ada 83
|
||||
Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 374;
|
||||
Name_Maximum_Alignment : constant Name_Id := N + 375; -- GNAT
|
||||
Name_Mechanism_Code : constant Name_Id := N + 376; -- GNAT
|
||||
Name_Model_Emin : constant Name_Id := N + 377;
|
||||
Name_Model_Epsilon : constant Name_Id := N + 378;
|
||||
Name_Model_Mantissa : constant Name_Id := N + 379;
|
||||
Name_Model_Small : constant Name_Id := N + 380;
|
||||
Name_Modulus : constant Name_Id := N + 381;
|
||||
Name_Null_Parameter : constant Name_Id := N + 382; -- GNAT
|
||||
Name_Object_Size : constant Name_Id := N + 383; -- GNAT
|
||||
Name_Partition_ID : constant Name_Id := N + 384;
|
||||
Name_Passed_By_Reference : constant Name_Id := N + 385; -- GNAT
|
||||
Name_Pool_Address : constant Name_Id := N + 386;
|
||||
Name_Pos : constant Name_Id := N + 387;
|
||||
Name_Position : constant Name_Id := N + 388;
|
||||
Name_Range : constant Name_Id := N + 389;
|
||||
Name_Range_Length : constant Name_Id := N + 390; -- GNAT
|
||||
Name_Round : constant Name_Id := N + 391;
|
||||
Name_Safe_Emax : constant Name_Id := N + 392; -- Ada 83
|
||||
Name_Safe_First : constant Name_Id := N + 393;
|
||||
Name_Safe_Large : constant Name_Id := N + 394; -- Ada 83
|
||||
Name_Safe_Last : constant Name_Id := N + 395;
|
||||
Name_Safe_Small : constant Name_Id := N + 396; -- Ada 83
|
||||
Name_Scale : constant Name_Id := N + 397;
|
||||
Name_Scaling : constant Name_Id := N + 398;
|
||||
Name_Signed_Zeros : constant Name_Id := N + 399;
|
||||
Name_Size : constant Name_Id := N + 400;
|
||||
Name_Small : constant Name_Id := N + 401;
|
||||
Name_Storage_Size : constant Name_Id := N + 402;
|
||||
Name_Storage_Unit : constant Name_Id := N + 403; -- GNAT
|
||||
Name_Tag : constant Name_Id := N + 404;
|
||||
Name_Target_Name : constant Name_Id := N + 405; -- GNAT
|
||||
Name_Terminated : constant Name_Id := N + 406;
|
||||
Name_To_Address : constant Name_Id := N + 407; -- GNAT
|
||||
Name_Type_Class : constant Name_Id := N + 408; -- GNAT
|
||||
Name_UET_Address : constant Name_Id := N + 409; -- GNAT
|
||||
Name_Unbiased_Rounding : constant Name_Id := N + 410;
|
||||
Name_Unchecked_Access : constant Name_Id := N + 411;
|
||||
Name_Unconstrained_Array : constant Name_Id := N + 412;
|
||||
Name_Universal_Literal_String : constant Name_Id := N + 413; -- GNAT
|
||||
Name_Unrestricted_Access : constant Name_Id := N + 414; -- GNAT
|
||||
Name_VADS_Size : constant Name_Id := N + 415; -- GNAT
|
||||
Name_Val : constant Name_Id := N + 416;
|
||||
Name_Valid : constant Name_Id := N + 417;
|
||||
Name_Value_Size : constant Name_Id := N + 418; -- GNAT
|
||||
Name_Version : constant Name_Id := N + 419;
|
||||
Name_Wchar_T_Size : constant Name_Id := N + 420; -- GNAT
|
||||
Name_Wide_Width : constant Name_Id := N + 421;
|
||||
Name_Width : constant Name_Id := N + 422;
|
||||
Name_Word_Size : constant Name_Id := N + 423; -- GNAT
|
||||
First_Attribute_Name : constant Name_Id := N + 325;
|
||||
Name_Abort_Signal : constant Name_Id := N + 325; -- GNAT
|
||||
Name_Access : constant Name_Id := N + 326;
|
||||
Name_Address : constant Name_Id := N + 327;
|
||||
Name_Address_Size : constant Name_Id := N + 328; -- GNAT
|
||||
Name_Aft : constant Name_Id := N + 329;
|
||||
Name_Alignment : constant Name_Id := N + 330;
|
||||
Name_Asm_Input : constant Name_Id := N + 331; -- GNAT
|
||||
Name_Asm_Output : constant Name_Id := N + 332; -- GNAT
|
||||
Name_AST_Entry : constant Name_Id := N + 333; -- VMS
|
||||
Name_Bit : constant Name_Id := N + 334; -- GNAT
|
||||
Name_Bit_Order : constant Name_Id := N + 335;
|
||||
Name_Bit_Position : constant Name_Id := N + 336; -- GNAT
|
||||
Name_Body_Version : constant Name_Id := N + 337;
|
||||
Name_Callable : constant Name_Id := N + 338;
|
||||
Name_Caller : constant Name_Id := N + 339;
|
||||
Name_Code_Address : constant Name_Id := N + 340; -- GNAT
|
||||
Name_Component_Size : constant Name_Id := N + 341;
|
||||
Name_Compose : constant Name_Id := N + 342;
|
||||
Name_Constrained : constant Name_Id := N + 343;
|
||||
Name_Count : constant Name_Id := N + 344;
|
||||
Name_Default_Bit_Order : constant Name_Id := N + 345; -- GNAT
|
||||
Name_Definite : constant Name_Id := N + 346;
|
||||
Name_Delta : constant Name_Id := N + 347;
|
||||
Name_Denorm : constant Name_Id := N + 348;
|
||||
Name_Digits : constant Name_Id := N + 349;
|
||||
Name_Elaborated : constant Name_Id := N + 350; -- GNAT
|
||||
Name_Emax : constant Name_Id := N + 351; -- Ada 83
|
||||
Name_Enum_Rep : constant Name_Id := N + 352; -- GNAT
|
||||
Name_Epsilon : constant Name_Id := N + 353; -- Ada 83
|
||||
Name_Exponent : constant Name_Id := N + 354;
|
||||
Name_External_Tag : constant Name_Id := N + 355;
|
||||
Name_First : constant Name_Id := N + 356;
|
||||
Name_First_Bit : constant Name_Id := N + 357;
|
||||
Name_Fixed_Value : constant Name_Id := N + 358; -- GNAT
|
||||
Name_Fore : constant Name_Id := N + 359;
|
||||
Name_Has_Discriminants : constant Name_Id := N + 360; -- GNAT
|
||||
Name_Identity : constant Name_Id := N + 361;
|
||||
Name_Img : constant Name_Id := N + 362; -- GNAT
|
||||
Name_Integer_Value : constant Name_Id := N + 363; -- GNAT
|
||||
Name_Large : constant Name_Id := N + 364; -- Ada 83
|
||||
Name_Last : constant Name_Id := N + 365;
|
||||
Name_Last_Bit : constant Name_Id := N + 366;
|
||||
Name_Leading_Part : constant Name_Id := N + 367;
|
||||
Name_Length : constant Name_Id := N + 368;
|
||||
Name_Machine_Emax : constant Name_Id := N + 369;
|
||||
Name_Machine_Emin : constant Name_Id := N + 370;
|
||||
Name_Machine_Mantissa : constant Name_Id := N + 371;
|
||||
Name_Machine_Overflows : constant Name_Id := N + 372;
|
||||
Name_Machine_Radix : constant Name_Id := N + 373;
|
||||
Name_Machine_Rounds : constant Name_Id := N + 374;
|
||||
Name_Machine_Size : constant Name_Id := N + 375; -- GNAT
|
||||
Name_Mantissa : constant Name_Id := N + 376; -- Ada 83
|
||||
Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 377;
|
||||
Name_Maximum_Alignment : constant Name_Id := N + 378; -- GNAT
|
||||
Name_Mechanism_Code : constant Name_Id := N + 379; -- GNAT
|
||||
Name_Model_Emin : constant Name_Id := N + 380;
|
||||
Name_Model_Epsilon : constant Name_Id := N + 381;
|
||||
Name_Model_Mantissa : constant Name_Id := N + 382;
|
||||
Name_Model_Small : constant Name_Id := N + 383;
|
||||
Name_Modulus : constant Name_Id := N + 384;
|
||||
Name_Null_Parameter : constant Name_Id := N + 385; -- GNAT
|
||||
Name_Object_Size : constant Name_Id := N + 386; -- GNAT
|
||||
Name_Partition_ID : constant Name_Id := N + 387;
|
||||
Name_Passed_By_Reference : constant Name_Id := N + 388; -- GNAT
|
||||
Name_Pool_Address : constant Name_Id := N + 389;
|
||||
Name_Pos : constant Name_Id := N + 390;
|
||||
Name_Position : constant Name_Id := N + 391;
|
||||
Name_Range : constant Name_Id := N + 392;
|
||||
Name_Range_Length : constant Name_Id := N + 393; -- GNAT
|
||||
Name_Round : constant Name_Id := N + 394;
|
||||
Name_Safe_Emax : constant Name_Id := N + 395; -- Ada 83
|
||||
Name_Safe_First : constant Name_Id := N + 396;
|
||||
Name_Safe_Large : constant Name_Id := N + 397; -- Ada 83
|
||||
Name_Safe_Last : constant Name_Id := N + 398;
|
||||
Name_Safe_Small : constant Name_Id := N + 399; -- Ada 83
|
||||
Name_Scale : constant Name_Id := N + 400;
|
||||
Name_Scaling : constant Name_Id := N + 401;
|
||||
Name_Signed_Zeros : constant Name_Id := N + 402;
|
||||
Name_Size : constant Name_Id := N + 403;
|
||||
Name_Small : constant Name_Id := N + 404;
|
||||
Name_Storage_Size : constant Name_Id := N + 405;
|
||||
Name_Storage_Unit : constant Name_Id := N + 406; -- GNAT
|
||||
Name_Tag : constant Name_Id := N + 407;
|
||||
Name_Target_Name : constant Name_Id := N + 408; -- GNAT
|
||||
Name_Terminated : constant Name_Id := N + 409;
|
||||
Name_To_Address : constant Name_Id := N + 410; -- GNAT
|
||||
Name_Type_Class : constant Name_Id := N + 411; -- GNAT
|
||||
Name_UET_Address : constant Name_Id := N + 412; -- GNAT
|
||||
Name_Unbiased_Rounding : constant Name_Id := N + 413;
|
||||
Name_Unchecked_Access : constant Name_Id := N + 414;
|
||||
Name_Unconstrained_Array : constant Name_Id := N + 415;
|
||||
Name_Universal_Literal_String : constant Name_Id := N + 416; -- GNAT
|
||||
Name_Unrestricted_Access : constant Name_Id := N + 417; -- GNAT
|
||||
Name_VADS_Size : constant Name_Id := N + 418; -- GNAT
|
||||
Name_Val : constant Name_Id := N + 419;
|
||||
Name_Valid : constant Name_Id := N + 420;
|
||||
Name_Value_Size : constant Name_Id := N + 421; -- GNAT
|
||||
Name_Version : constant Name_Id := N + 422;
|
||||
Name_Wchar_T_Size : constant Name_Id := N + 423; -- GNAT
|
||||
Name_Wide_Width : constant Name_Id := N + 424;
|
||||
Name_Width : constant Name_Id := N + 425;
|
||||
Name_Word_Size : constant Name_Id := N + 426; -- 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 + 424;
|
||||
Name_Adjacent : constant Name_Id := N + 424;
|
||||
Name_Ceiling : constant Name_Id := N + 425;
|
||||
Name_Copy_Sign : constant Name_Id := N + 426;
|
||||
Name_Floor : constant Name_Id := N + 427;
|
||||
Name_Fraction : constant Name_Id := N + 428;
|
||||
Name_Image : constant Name_Id := N + 429;
|
||||
Name_Input : constant Name_Id := N + 430;
|
||||
Name_Machine : constant Name_Id := N + 431;
|
||||
Name_Max : constant Name_Id := N + 432;
|
||||
Name_Min : constant Name_Id := N + 433;
|
||||
Name_Model : constant Name_Id := N + 434;
|
||||
Name_Pred : constant Name_Id := N + 435;
|
||||
Name_Remainder : constant Name_Id := N + 436;
|
||||
Name_Rounding : constant Name_Id := N + 437;
|
||||
Name_Succ : constant Name_Id := N + 438;
|
||||
Name_Truncation : constant Name_Id := N + 439;
|
||||
Name_Value : constant Name_Id := N + 440;
|
||||
Name_Wide_Image : constant Name_Id := N + 441;
|
||||
Name_Wide_Value : constant Name_Id := N + 442;
|
||||
Last_Renamable_Function_Attribute : constant Name_Id := N + 442;
|
||||
First_Renamable_Function_Attribute : constant Name_Id := N + 427;
|
||||
Name_Adjacent : constant Name_Id := N + 427;
|
||||
Name_Ceiling : constant Name_Id := N + 428;
|
||||
Name_Copy_Sign : constant Name_Id := N + 429;
|
||||
Name_Floor : constant Name_Id := N + 430;
|
||||
Name_Fraction : constant Name_Id := N + 431;
|
||||
Name_Image : constant Name_Id := N + 432;
|
||||
Name_Input : constant Name_Id := N + 433;
|
||||
Name_Machine : constant Name_Id := N + 434;
|
||||
Name_Max : constant Name_Id := N + 435;
|
||||
Name_Min : constant Name_Id := N + 436;
|
||||
Name_Model : constant Name_Id := N + 437;
|
||||
Name_Pred : constant Name_Id := N + 438;
|
||||
Name_Remainder : constant Name_Id := N + 439;
|
||||
Name_Rounding : constant Name_Id := N + 440;
|
||||
Name_Succ : constant Name_Id := N + 441;
|
||||
Name_Truncation : constant Name_Id := N + 442;
|
||||
Name_Value : constant Name_Id := N + 443;
|
||||
Name_Wide_Image : constant Name_Id := N + 444;
|
||||
Name_Wide_Value : constant Name_Id := N + 445;
|
||||
Last_Renamable_Function_Attribute : constant Name_Id := N + 445;
|
||||
|
||||
-- Attributes that designate procedures
|
||||
|
||||
First_Procedure_Attribute : constant Name_Id := N + 443;
|
||||
Name_Output : constant Name_Id := N + 443;
|
||||
Name_Read : constant Name_Id := N + 444;
|
||||
Name_Write : constant Name_Id := N + 445;
|
||||
Last_Procedure_Attribute : constant Name_Id := N + 445;
|
||||
First_Procedure_Attribute : constant Name_Id := N + 446;
|
||||
Name_Output : constant Name_Id := N + 446;
|
||||
Name_Read : constant Name_Id := N + 447;
|
||||
Name_Write : constant Name_Id := N + 448;
|
||||
Last_Procedure_Attribute : constant Name_Id := N + 448;
|
||||
|
||||
-- Remaining attributes are ones that return entities
|
||||
|
||||
First_Entity_Attribute_Name : constant Name_Id := N + 446;
|
||||
Name_Elab_Body : constant Name_Id := N + 446; -- GNAT
|
||||
Name_Elab_Spec : constant Name_Id := N + 447; -- GNAT
|
||||
Name_Storage_Pool : constant Name_Id := N + 448;
|
||||
First_Entity_Attribute_Name : constant Name_Id := N + 449;
|
||||
Name_Elab_Body : constant Name_Id := N + 449; -- GNAT
|
||||
Name_Elab_Spec : constant Name_Id := N + 450; -- GNAT
|
||||
Name_Storage_Pool : constant Name_Id := N + 451;
|
||||
|
||||
-- These attributes are the ones that return types
|
||||
|
||||
First_Type_Attribute_Name : constant Name_Id := N + 449;
|
||||
Name_Base : constant Name_Id := N + 449;
|
||||
Name_Class : constant Name_Id := N + 450;
|
||||
Last_Type_Attribute_Name : constant Name_Id := N + 450;
|
||||
Last_Entity_Attribute_Name : constant Name_Id := N + 450;
|
||||
Last_Attribute_Name : constant Name_Id := N + 450;
|
||||
First_Type_Attribute_Name : constant Name_Id := N + 452;
|
||||
Name_Base : constant Name_Id := N + 452;
|
||||
Name_Class : constant Name_Id := N + 453;
|
||||
Last_Type_Attribute_Name : constant Name_Id := N + 453;
|
||||
Last_Entity_Attribute_Name : constant Name_Id := N + 453;
|
||||
Last_Attribute_Name : constant Name_Id := N + 453;
|
||||
|
||||
-- Names of recognized locking policy identifiers
|
||||
|
||||
@ -749,10 +752,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 + 451;
|
||||
Name_Ceiling_Locking : constant Name_Id := N + 451;
|
||||
Name_Inheritance_Locking : constant Name_Id := N + 452;
|
||||
Last_Locking_Policy_Name : constant Name_Id := N + 452;
|
||||
First_Locking_Policy_Name : constant Name_Id := N + 454;
|
||||
Name_Ceiling_Locking : constant Name_Id := N + 454;
|
||||
Name_Inheritance_Locking : constant Name_Id := N + 455;
|
||||
Last_Locking_Policy_Name : constant Name_Id := N + 455;
|
||||
|
||||
-- Names of recognized queuing policy identifiers.
|
||||
|
||||
@ -760,10 +763,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 + 453;
|
||||
Name_FIFO_Queuing : constant Name_Id := N + 453;
|
||||
Name_Priority_Queuing : constant Name_Id := N + 454;
|
||||
Last_Queuing_Policy_Name : constant Name_Id := N + 454;
|
||||
First_Queuing_Policy_Name : constant Name_Id := N + 456;
|
||||
Name_FIFO_Queuing : constant Name_Id := N + 456;
|
||||
Name_Priority_Queuing : constant Name_Id := N + 457;
|
||||
Last_Queuing_Policy_Name : constant Name_Id := N + 457;
|
||||
|
||||
-- Names of recognized task dispatching policy identifiers
|
||||
|
||||
@ -771,193 +774,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 + 455;
|
||||
Name_FIFO_Within_Priorities : constant Name_Id := N + 455;
|
||||
Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 455;
|
||||
First_Task_Dispatching_Policy_Name : constant Name_Id := N + 458;
|
||||
Name_FIFO_Within_Priorities : constant Name_Id := N + 458;
|
||||
Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 458;
|
||||
|
||||
-- Names of recognized checks for pragma Suppress
|
||||
|
||||
First_Check_Name : constant Name_Id := N + 456;
|
||||
Name_Access_Check : constant Name_Id := N + 456;
|
||||
Name_Accessibility_Check : constant Name_Id := N + 457;
|
||||
Name_Discriminant_Check : constant Name_Id := N + 458;
|
||||
Name_Division_Check : constant Name_Id := N + 459;
|
||||
Name_Elaboration_Check : constant Name_Id := N + 460;
|
||||
Name_Index_Check : constant Name_Id := N + 461;
|
||||
Name_Length_Check : constant Name_Id := N + 462;
|
||||
Name_Overflow_Check : constant Name_Id := N + 463;
|
||||
Name_Range_Check : constant Name_Id := N + 464;
|
||||
Name_Storage_Check : constant Name_Id := N + 465;
|
||||
Name_Tag_Check : constant Name_Id := N + 466;
|
||||
Name_All_Checks : constant Name_Id := N + 467;
|
||||
Last_Check_Name : constant Name_Id := N + 467;
|
||||
First_Check_Name : constant Name_Id := N + 459;
|
||||
Name_Access_Check : constant Name_Id := N + 459;
|
||||
Name_Accessibility_Check : constant Name_Id := N + 460;
|
||||
Name_Discriminant_Check : constant Name_Id := N + 461;
|
||||
Name_Division_Check : constant Name_Id := N + 462;
|
||||
Name_Elaboration_Check : constant Name_Id := N + 463;
|
||||
Name_Index_Check : constant Name_Id := N + 464;
|
||||
Name_Length_Check : constant Name_Id := N + 465;
|
||||
Name_Overflow_Check : constant Name_Id := N + 466;
|
||||
Name_Range_Check : constant Name_Id := N + 467;
|
||||
Name_Storage_Check : constant Name_Id := N + 468;
|
||||
Name_Tag_Check : constant Name_Id := N + 469;
|
||||
Name_All_Checks : constant Name_Id := N + 470;
|
||||
Last_Check_Name : constant Name_Id := N + 470;
|
||||
|
||||
-- Names corresponding to reserved keywords, excluding those already
|
||||
-- declared in the attribute list (Access, Delta, Digits, Range).
|
||||
|
||||
Name_Abort : constant Name_Id := N + 468;
|
||||
Name_Abs : constant Name_Id := N + 469;
|
||||
Name_Accept : constant Name_Id := N + 470;
|
||||
Name_And : constant Name_Id := N + 471;
|
||||
Name_All : constant Name_Id := N + 472;
|
||||
Name_Array : constant Name_Id := N + 473;
|
||||
Name_At : constant Name_Id := N + 474;
|
||||
Name_Begin : constant Name_Id := N + 475;
|
||||
Name_Body : constant Name_Id := N + 476;
|
||||
Name_Case : constant Name_Id := N + 477;
|
||||
Name_Constant : constant Name_Id := N + 478;
|
||||
Name_Declare : constant Name_Id := N + 479;
|
||||
Name_Delay : constant Name_Id := N + 480;
|
||||
Name_Do : constant Name_Id := N + 481;
|
||||
Name_Else : constant Name_Id := N + 482;
|
||||
Name_Elsif : constant Name_Id := N + 483;
|
||||
Name_End : constant Name_Id := N + 484;
|
||||
Name_Entry : constant Name_Id := N + 485;
|
||||
Name_Exception : constant Name_Id := N + 486;
|
||||
Name_Exit : constant Name_Id := N + 487;
|
||||
Name_For : constant Name_Id := N + 488;
|
||||
Name_Function : constant Name_Id := N + 489;
|
||||
Name_Generic : constant Name_Id := N + 490;
|
||||
Name_Goto : constant Name_Id := N + 491;
|
||||
Name_If : constant Name_Id := N + 492;
|
||||
Name_In : constant Name_Id := N + 493;
|
||||
Name_Is : constant Name_Id := N + 494;
|
||||
Name_Limited : constant Name_Id := N + 495;
|
||||
Name_Loop : constant Name_Id := N + 496;
|
||||
Name_Mod : constant Name_Id := N + 497;
|
||||
Name_New : constant Name_Id := N + 498;
|
||||
Name_Not : constant Name_Id := N + 499;
|
||||
Name_Null : constant Name_Id := N + 500;
|
||||
Name_Of : constant Name_Id := N + 501;
|
||||
Name_Or : constant Name_Id := N + 502;
|
||||
Name_Others : constant Name_Id := N + 503;
|
||||
Name_Out : constant Name_Id := N + 504;
|
||||
Name_Package : constant Name_Id := N + 505;
|
||||
Name_Pragma : constant Name_Id := N + 506;
|
||||
Name_Private : constant Name_Id := N + 507;
|
||||
Name_Procedure : constant Name_Id := N + 508;
|
||||
Name_Raise : constant Name_Id := N + 509;
|
||||
Name_Record : constant Name_Id := N + 510;
|
||||
Name_Rem : constant Name_Id := N + 511;
|
||||
Name_Renames : constant Name_Id := N + 512;
|
||||
Name_Return : constant Name_Id := N + 513;
|
||||
Name_Reverse : constant Name_Id := N + 514;
|
||||
Name_Select : constant Name_Id := N + 515;
|
||||
Name_Separate : constant Name_Id := N + 516;
|
||||
Name_Subtype : constant Name_Id := N + 517;
|
||||
Name_Task : constant Name_Id := N + 518;
|
||||
Name_Terminate : constant Name_Id := N + 519;
|
||||
Name_Then : constant Name_Id := N + 520;
|
||||
Name_Type : constant Name_Id := N + 521;
|
||||
Name_Use : constant Name_Id := N + 522;
|
||||
Name_When : constant Name_Id := N + 523;
|
||||
Name_While : constant Name_Id := N + 524;
|
||||
Name_With : constant Name_Id := N + 525;
|
||||
Name_Xor : constant Name_Id := N + 526;
|
||||
Name_Abort : constant Name_Id := N + 471;
|
||||
Name_Abs : constant Name_Id := N + 472;
|
||||
Name_Accept : constant Name_Id := N + 473;
|
||||
Name_And : constant Name_Id := N + 474;
|
||||
Name_All : constant Name_Id := N + 475;
|
||||
Name_Array : constant Name_Id := N + 476;
|
||||
Name_At : constant Name_Id := N + 477;
|
||||
Name_Begin : constant Name_Id := N + 478;
|
||||
Name_Body : constant Name_Id := N + 479;
|
||||
Name_Case : constant Name_Id := N + 480;
|
||||
Name_Constant : constant Name_Id := N + 481;
|
||||
Name_Declare : constant Name_Id := N + 482;
|
||||
Name_Delay : constant Name_Id := N + 483;
|
||||
Name_Do : constant Name_Id := N + 484;
|
||||
Name_Else : constant Name_Id := N + 485;
|
||||
Name_Elsif : constant Name_Id := N + 486;
|
||||
Name_End : constant Name_Id := N + 487;
|
||||
Name_Entry : constant Name_Id := N + 488;
|
||||
Name_Exception : constant Name_Id := N + 489;
|
||||
Name_Exit : constant Name_Id := N + 490;
|
||||
Name_For : constant Name_Id := N + 491;
|
||||
Name_Function : constant Name_Id := N + 492;
|
||||
Name_Generic : constant Name_Id := N + 493;
|
||||
Name_Goto : constant Name_Id := N + 494;
|
||||
Name_If : constant Name_Id := N + 495;
|
||||
Name_In : constant Name_Id := N + 496;
|
||||
Name_Is : constant Name_Id := N + 497;
|
||||
Name_Limited : constant Name_Id := N + 498;
|
||||
Name_Loop : constant Name_Id := N + 499;
|
||||
Name_Mod : constant Name_Id := N + 500;
|
||||
Name_New : constant Name_Id := N + 501;
|
||||
Name_Not : constant Name_Id := N + 502;
|
||||
Name_Null : constant Name_Id := N + 503;
|
||||
Name_Of : constant Name_Id := N + 504;
|
||||
Name_Or : constant Name_Id := N + 505;
|
||||
Name_Others : constant Name_Id := N + 506;
|
||||
Name_Out : constant Name_Id := N + 507;
|
||||
Name_Package : constant Name_Id := N + 508;
|
||||
Name_Pragma : constant Name_Id := N + 509;
|
||||
Name_Private : constant Name_Id := N + 510;
|
||||
Name_Procedure : constant Name_Id := N + 511;
|
||||
Name_Raise : constant Name_Id := N + 512;
|
||||
Name_Record : constant Name_Id := N + 513;
|
||||
Name_Rem : constant Name_Id := N + 514;
|
||||
Name_Renames : constant Name_Id := N + 515;
|
||||
Name_Return : constant Name_Id := N + 516;
|
||||
Name_Reverse : constant Name_Id := N + 517;
|
||||
Name_Select : constant Name_Id := N + 518;
|
||||
Name_Separate : constant Name_Id := N + 519;
|
||||
Name_Subtype : constant Name_Id := N + 520;
|
||||
Name_Task : constant Name_Id := N + 521;
|
||||
Name_Terminate : constant Name_Id := N + 522;
|
||||
Name_Then : constant Name_Id := N + 523;
|
||||
Name_Type : constant Name_Id := N + 524;
|
||||
Name_Use : constant Name_Id := N + 525;
|
||||
Name_When : constant Name_Id := N + 526;
|
||||
Name_While : constant Name_Id := N + 527;
|
||||
Name_With : constant Name_Id := N + 528;
|
||||
Name_Xor : constant Name_Id := N + 529;
|
||||
|
||||
-- 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 + 527;
|
||||
Name_Divide : constant Name_Id := N + 527;
|
||||
Name_Enclosing_Entity : constant Name_Id := N + 528;
|
||||
Name_Exception_Information : constant Name_Id := N + 529;
|
||||
Name_Exception_Message : constant Name_Id := N + 530;
|
||||
Name_Exception_Name : constant Name_Id := N + 531;
|
||||
Name_File : constant Name_Id := N + 532;
|
||||
Name_Import_Address : constant Name_Id := N + 533;
|
||||
Name_Import_Largest_Value : constant Name_Id := N + 534;
|
||||
Name_Import_Value : constant Name_Id := N + 535;
|
||||
Name_Is_Negative : constant Name_Id := N + 536;
|
||||
Name_Line : constant Name_Id := N + 537;
|
||||
Name_Rotate_Left : constant Name_Id := N + 538;
|
||||
Name_Rotate_Right : constant Name_Id := N + 539;
|
||||
Name_Shift_Left : constant Name_Id := N + 540;
|
||||
Name_Shift_Right : constant Name_Id := N + 541;
|
||||
Name_Shift_Right_Arithmetic : constant Name_Id := N + 542;
|
||||
Name_Source_Location : constant Name_Id := N + 543;
|
||||
Name_Unchecked_Conversion : constant Name_Id := N + 544;
|
||||
Name_Unchecked_Deallocation : constant Name_Id := N + 545;
|
||||
Name_To_Pointer : constant Name_Id := N + 546;
|
||||
Last_Intrinsic_Name : constant Name_Id := N + 546;
|
||||
First_Intrinsic_Name : constant Name_Id := N + 530;
|
||||
Name_Divide : constant Name_Id := N + 530;
|
||||
Name_Enclosing_Entity : constant Name_Id := N + 531;
|
||||
Name_Exception_Information : constant Name_Id := N + 532;
|
||||
Name_Exception_Message : constant Name_Id := N + 533;
|
||||
Name_Exception_Name : constant Name_Id := N + 534;
|
||||
Name_File : constant Name_Id := N + 535;
|
||||
Name_Import_Address : constant Name_Id := N + 536;
|
||||
Name_Import_Largest_Value : constant Name_Id := N + 537;
|
||||
Name_Import_Value : constant Name_Id := N + 538;
|
||||
Name_Is_Negative : constant Name_Id := N + 539;
|
||||
Name_Line : constant Name_Id := N + 540;
|
||||
Name_Rotate_Left : constant Name_Id := N + 541;
|
||||
Name_Rotate_Right : constant Name_Id := N + 542;
|
||||
Name_Shift_Left : constant Name_Id := N + 543;
|
||||
Name_Shift_Right : constant Name_Id := N + 544;
|
||||
Name_Shift_Right_Arithmetic : constant Name_Id := N + 545;
|
||||
Name_Source_Location : constant Name_Id := N + 546;
|
||||
Name_Unchecked_Conversion : constant Name_Id := N + 547;
|
||||
Name_Unchecked_Deallocation : constant Name_Id := N + 548;
|
||||
Name_To_Pointer : constant Name_Id := N + 549;
|
||||
Last_Intrinsic_Name : constant Name_Id := N + 549;
|
||||
|
||||
-- Reserved words used only in Ada 95
|
||||
|
||||
First_95_Reserved_Word : constant Name_Id := N + 547;
|
||||
Name_Abstract : constant Name_Id := N + 547;
|
||||
Name_Aliased : constant Name_Id := N + 548;
|
||||
Name_Protected : constant Name_Id := N + 549;
|
||||
Name_Until : constant Name_Id := N + 550;
|
||||
Name_Requeue : constant Name_Id := N + 551;
|
||||
Name_Tagged : constant Name_Id := N + 552;
|
||||
Last_95_Reserved_Word : constant Name_Id := N + 552;
|
||||
First_95_Reserved_Word : constant Name_Id := N + 550;
|
||||
Name_Abstract : constant Name_Id := N + 550;
|
||||
Name_Aliased : constant Name_Id := N + 551;
|
||||
Name_Protected : constant Name_Id := N + 552;
|
||||
Name_Until : constant Name_Id := N + 553;
|
||||
Name_Requeue : constant Name_Id := N + 554;
|
||||
Name_Tagged : constant Name_Id := N + 555;
|
||||
Last_95_Reserved_Word : constant Name_Id := N + 555;
|
||||
|
||||
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 + 553;
|
||||
Name_Raise_Exception : constant Name_Id := N + 556;
|
||||
|
||||
-- Additional reserved words in GNAT Project Files
|
||||
-- Note that Name_External is already previously declared
|
||||
|
||||
Name_Binder : constant Name_Id := N + 554;
|
||||
Name_Body_Suffix : constant Name_Id := N + 555;
|
||||
Name_Builder : constant Name_Id := N + 556;
|
||||
Name_Compiler : constant Name_Id := N + 557;
|
||||
Name_Cross_Reference : constant Name_Id := N + 558;
|
||||
Name_Default_Switches : constant Name_Id := N + 559;
|
||||
Name_Exec_Dir : constant Name_Id := N + 560;
|
||||
Name_Executable : constant Name_Id := N + 561;
|
||||
Name_Executable_Suffix : constant Name_Id := N + 562;
|
||||
Name_Extends : constant Name_Id := N + 563;
|
||||
Name_Finder : constant Name_Id := N + 564;
|
||||
Name_Global_Configuration_Pragmas : constant Name_Id := N + 565;
|
||||
Name_Gnatls : constant Name_Id := N + 566;
|
||||
Name_Gnatstub : constant Name_Id := N + 567;
|
||||
Name_Implementation : constant Name_Id := N + 568;
|
||||
Name_Implementation_Exceptions : constant Name_Id := N + 569;
|
||||
Name_Implementation_Suffix : constant Name_Id := N + 570;
|
||||
Name_Languages : constant Name_Id := N + 571;
|
||||
Name_Library_Dir : constant Name_Id := N + 572;
|
||||
Name_Library_Auto_Init : constant Name_Id := N + 573;
|
||||
Name_Library_GCC : constant Name_Id := N + 574;
|
||||
Name_Library_Interface : constant Name_Id := N + 575;
|
||||
Name_Library_Kind : constant Name_Id := N + 576;
|
||||
Name_Library_Name : constant Name_Id := N + 577;
|
||||
Name_Library_Options : constant Name_Id := N + 578;
|
||||
Name_Library_Reference_Symbol_File : constant Name_Id := N + 579;
|
||||
Name_Library_Src_Dir : constant Name_Id := N + 580;
|
||||
Name_Library_Symbol_File : constant Name_Id := N + 581;
|
||||
Name_Library_Symbol_Policy : constant Name_Id := N + 582;
|
||||
Name_Library_Version : constant Name_Id := N + 583;
|
||||
Name_Linker : constant Name_Id := N + 584;
|
||||
Name_Local_Configuration_Pragmas : constant Name_Id := N + 585;
|
||||
Name_Locally_Removed_Files : constant Name_Id := N + 586;
|
||||
Name_Naming : constant Name_Id := N + 587;
|
||||
Name_Object_Dir : constant Name_Id := N + 588;
|
||||
Name_Pretty_Printer : constant Name_Id := N + 589;
|
||||
Name_Project : constant Name_Id := N + 590;
|
||||
Name_Separate_Suffix : constant Name_Id := N + 591;
|
||||
Name_Source_Dirs : constant Name_Id := N + 592;
|
||||
Name_Source_Files : constant Name_Id := N + 593;
|
||||
Name_Source_List_File : constant Name_Id := N + 594;
|
||||
Name_Spec : constant Name_Id := N + 595;
|
||||
Name_Spec_Suffix : constant Name_Id := N + 596;
|
||||
Name_Specification : constant Name_Id := N + 597;
|
||||
Name_Specification_Exceptions : constant Name_Id := N + 598;
|
||||
Name_Specification_Suffix : constant Name_Id := N + 599;
|
||||
Name_Switches : constant Name_Id := N + 600;
|
||||
Name_Binder : constant Name_Id := N + 557;
|
||||
Name_Body_Suffix : constant Name_Id := N + 558;
|
||||
Name_Builder : constant Name_Id := N + 559;
|
||||
Name_Compiler : constant Name_Id := N + 560;
|
||||
Name_Cross_Reference : constant Name_Id := N + 561;
|
||||
Name_Default_Switches : constant Name_Id := N + 562;
|
||||
Name_Exec_Dir : constant Name_Id := N + 563;
|
||||
Name_Executable : constant Name_Id := N + 564;
|
||||
Name_Executable_Suffix : constant Name_Id := N + 565;
|
||||
Name_Extends : constant Name_Id := N + 566;
|
||||
Name_Finder : constant Name_Id := N + 567;
|
||||
Name_Global_Configuration_Pragmas : constant Name_Id := N + 568;
|
||||
Name_Gnatls : constant Name_Id := N + 569;
|
||||
Name_Gnatstub : constant Name_Id := N + 570;
|
||||
Name_Implementation : constant Name_Id := N + 571;
|
||||
Name_Implementation_Exceptions : constant Name_Id := N + 572;
|
||||
Name_Implementation_Suffix : constant Name_Id := N + 573;
|
||||
Name_Languages : constant Name_Id := N + 574;
|
||||
Name_Library_Dir : constant Name_Id := N + 575;
|
||||
Name_Library_Auto_Init : constant Name_Id := N + 576;
|
||||
Name_Library_GCC : constant Name_Id := N + 577;
|
||||
Name_Library_Interface : constant Name_Id := N + 578;
|
||||
Name_Library_Kind : constant Name_Id := N + 579;
|
||||
Name_Library_Name : constant Name_Id := N + 580;
|
||||
Name_Library_Options : constant Name_Id := N + 581;
|
||||
Name_Library_Reference_Symbol_File : constant Name_Id := N + 582;
|
||||
Name_Library_Src_Dir : constant Name_Id := N + 583;
|
||||
Name_Library_Symbol_File : constant Name_Id := N + 584;
|
||||
Name_Library_Symbol_Policy : constant Name_Id := N + 585;
|
||||
Name_Library_Version : constant Name_Id := N + 586;
|
||||
Name_Linker : constant Name_Id := N + 587;
|
||||
Name_Local_Configuration_Pragmas : constant Name_Id := N + 588;
|
||||
Name_Locally_Removed_Files : constant Name_Id := N + 589;
|
||||
Name_Naming : constant Name_Id := N + 590;
|
||||
Name_Object_Dir : constant Name_Id := N + 591;
|
||||
Name_Pretty_Printer : constant Name_Id := N + 592;
|
||||
Name_Project : constant Name_Id := N + 593;
|
||||
Name_Separate_Suffix : constant Name_Id := N + 594;
|
||||
Name_Source_Dirs : constant Name_Id := N + 595;
|
||||
Name_Source_Files : constant Name_Id := N + 596;
|
||||
Name_Source_List_File : constant Name_Id := N + 597;
|
||||
Name_Spec : constant Name_Id := N + 598;
|
||||
Name_Spec_Suffix : constant Name_Id := N + 599;
|
||||
Name_Specification : constant Name_Id := N + 600;
|
||||
Name_Specification_Exceptions : constant Name_Id := N + 601;
|
||||
Name_Specification_Suffix : constant Name_Id := N + 602;
|
||||
Name_Switches : constant Name_Id := N + 603;
|
||||
-- Other miscellaneous names used in front end
|
||||
|
||||
Name_Unaligned_Valid : constant Name_Id := N + 601;
|
||||
Name_Unaligned_Valid : constant Name_Id := N + 604;
|
||||
|
||||
-- Mark last defined name for consistency check in Snames body
|
||||
|
||||
Last_Predefined_Name : constant Name_Id := N + 601;
|
||||
Last_Predefined_Name : constant Name_Id := N + 604;
|
||||
|
||||
subtype Any_Operator_Name is Name_Id range
|
||||
First_Operator_Name .. Last_Operator_Name;
|
||||
|
Loading…
x
Reference in New Issue
Block a user