summaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-13 10:21:30 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-13 10:21:30 +0000
commitf0bf2ff3403caee421ee10111f0d94ba8b70868a (patch)
treefe74bc1bf6eab08387b00192686ada41e98ef0ea /gcc/ada
parentd03308df6e185f691bb854d38e1e3b3a8198ce1a (diff)
downloadgcc-f0bf2ff3403caee421ee10111f0d94ba8b70868a.tar.gz
2007-12-06 Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com> * a-ngcoty.adb: New pragma Fast_Math * opt.adb: New pragma Fast_Math * par-prag.adb: Add Implemented_By_Entry to the list of pragmas which do not require any special processing. (Favor_Top_Level): New pragma. New pragma Fast_Math * exp_attr.adb: Move Wide_[Wide_]Image routines to Exp_Imgv (Expand_N_Attribute_Reference, Displace_Allocator_Pointer, Expand_Allocator_Expression): Take into account VM_Target (Expand_Attribute, case 'Identity): Handle properly the case where the prefix is a task interface. New pragma Fast_Math * par.adb (Next_Token_Is): New function (P_Pragma): Add Skipping parameter (U_Left_Paren): New procedure (U_Right_Paren): New procedure New pragma Fast_Math * par-ch10.adb (P_Subunit): Unconditional msg for missing ) after subunit New pragma Fast_Math * sem_prag.adb: Add significance value to table Sig_Flag for pragma Implemented_By_Entry. (Analyze_Pragma): Add case for Ada 2005 pragma Implemented_By_Entry. (Set_Inline_Flags): Do not try to link pragma Inline onto chain of rep items, since it can apply to more than one overloadable entity. Set new flag Has_Pragma_Inline_Always for Inline_Always case. (Analyze_Pragma, case Complex_Representation): Improve error message. (Analyze_Pragma, case Assert): When assertions are disabled build the rewritten code with Sloc of expression rather than pragma, so new warning about failing is not deleted. (Analyze_Pragma): Allow pragma Preelaborable_Initialization to apply to protected types and update error message to reflect that. Test whether the protected type is allowed for the pragma (an error is issued if the type has any entries, or components that do not have preelaborable initialization). New pragma Fast_Math (Analyze_Pragma, case No_Return): Handle generic instance * snames.h, snames.ads, snames.adb: Add new predefined name for interface primitive _Disp_Requeue. New pragma Fast_Math * a-tags.ads, a-tags.adb: New calling sequence for String_To_Wide_[Wide_]String (Secondary_Tag): New subprogram. * exp_imgv.ads, exp_imgv.adb: Move Wide_[Wide_]Image routines here from Exp_Attr New calling sequence for String_To_Wide_[Wide_]String (Expand_Image_Attribute): Major rewrite. New calling sequence avoids the use of the secondary stack for image routines. * a-except-2005.adb, s-wchstw.ads, s-wchstw.adb, s-wwdenu.adb: New calling sequence for String_To_Wide_[Wide_]String * par-ch3.adb (P_Declarative_Items): Recognize use of Overriding in Ada 95 mode (P_Unknown_Discriminant_Part_Opt): Handle missing parens gracefully Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List * par-ch6.adb (P_Subprogram): Recognize use of Overriding in Ada 95 mode (P_Formal_Part): Use Skipping parameter in P_Pragma call to improve error recovery * par-util.adb (Next_Token_Is): New function (Signal_Bad_Attribute): Use new Namet.Is_Bad_Spelling_Of function * par-ch2.adb (Skip_Pragma_Semicolon): Do not resynchronize to semicolon if missing (P_Pragma): Implement new Skipping parameter Remove Atree.Delete_Tree/Delete_Node and Nlist.Delete_List Fix location of flag for unrecognized pragma message * par-tchk.adb (U_Left_Paren): New procedure (U_Right_Paren): New procedure git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130818 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/a-except-2005.adb38
-rw-r--r--gcc/ada/a-ngcoty.adb20
-rw-r--r--gcc/ada/a-tags.adb75
-rw-r--r--gcc/ada/a-tags.ads74
-rw-r--r--gcc/ada/exp_attr.adb107
-rw-r--r--gcc/ada/exp_imgv.adb425
-rw-r--r--gcc/ada/exp_imgv.ads8
-rw-r--r--gcc/ada/opt.adb5
-rw-r--r--gcc/ada/par-ch10.adb18
-rw-r--r--gcc/ada/par-ch2.adb36
-rw-r--r--gcc/ada/par-ch3.adb67
-rw-r--r--gcc/ada/par-ch6.adb30
-rw-r--r--gcc/ada/par-prag.adb5
-rw-r--r--gcc/ada/par-tchk.adb26
-rw-r--r--gcc/ada/par-util.adb50
-rw-r--r--gcc/ada/par.adb20
-rw-r--r--gcc/ada/s-wchstw.adb36
-rw-r--r--gcc/ada/s-wchstw.ads38
-rw-r--r--gcc/ada/s-wwdenu.adb72
-rw-r--r--gcc/ada/sem_prag.adb248
-rw-r--r--gcc/ada/snames.adb27
-rw-r--r--gcc/ada/snames.ads1558
-rw-r--r--gcc/ada/snames.h516
23 files changed, 2072 insertions, 1427 deletions
diff --git a/gcc/ada/a-except-2005.adb b/gcc/ada/a-except-2005.adb
index 6af47c3686e..69e6406a634 100644
--- a/gcc/ada/a-except-2005.adb
+++ b/gcc/ada/a-except-2005.adb
@@ -1359,17 +1359,27 @@ package body Ada.Exceptions is
-- Encoding method for source, as exported by binder
function Wide_Exception_Name
- (Id : Exception_Id) return Wide_String is
+ (Id : Exception_Id) return Wide_String
+ is
+ S : constant String := Exception_Name (Id);
+ W : Wide_String (1 .. S'Length);
+ L : Natural;
begin
- return String_To_Wide_String
- (Exception_Name (Id), Get_WC_Encoding_Method (WC_Encoding));
+ String_To_Wide_String
+ (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
+ return W (1 .. L);
end Wide_Exception_Name;
function Wide_Exception_Name
- (X : Exception_Occurrence) return Wide_String is
+ (X : Exception_Occurrence) return Wide_String
+ is
+ S : constant String := Exception_Name (X);
+ W : Wide_String (1 .. S'Length);
+ L : Natural;
begin
- return String_To_Wide_String
- (Exception_Name (X), Get_WC_Encoding_Method (WC_Encoding));
+ String_To_Wide_String
+ (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
+ return W (1 .. L);
end Wide_Exception_Name;
----------------------------
@@ -1379,17 +1389,25 @@ package body Ada.Exceptions is
function Wide_Wide_Exception_Name
(Id : Exception_Id) return Wide_Wide_String
is
+ S : constant String := Exception_Name (Id);
+ W : Wide_Wide_String (1 .. S'Length);
+ L : Natural;
begin
- return String_To_Wide_Wide_String
- (Exception_Name (Id), Get_WC_Encoding_Method (WC_Encoding));
+ String_To_Wide_Wide_String
+ (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
+ return W (1 .. L);
end Wide_Wide_Exception_Name;
function Wide_Wide_Exception_Name
(X : Exception_Occurrence) return Wide_Wide_String
is
+ S : constant String := Exception_Name (X);
+ W : Wide_Wide_String (1 .. S'Length);
+ L : Natural;
begin
- return String_To_Wide_Wide_String
- (Exception_Name (X), Get_WC_Encoding_Method (WC_Encoding));
+ String_To_Wide_Wide_String
+ (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
+ return W (1 .. L);
end Wide_Wide_Exception_Name;
--------------------------
diff --git a/gcc/ada/a-ngcoty.adb b/gcc/ada/a-ngcoty.adb
index 548f2d671ee..502a47d15cc 100644
--- a/gcc/ada/a-ngcoty.adb
+++ b/gcc/ada/a-ngcoty.adb
@@ -52,16 +52,18 @@ package body Ada.Numerics.Generic_Complex_Types is
X := Left.Re * Right.Re - Left.Im * Right.Im;
Y := Left.Re * Right.Im + Left.Im * Right.Re;
- -- If either component overflows, try to scale
+ -- If either component overflows, try to scale (skip in fast math mode)
- if abs (X) > R'Last then
- X := R'(4.0) * (R'(Left.Re / 2.0) * R'(Right.Re / 2.0)
- - R'(Left.Im / 2.0) * R'(Right.Im / 2.0));
- end if;
+ if not Standard'Fast_Math then
+ if abs (X) > R'Last then
+ X := R'(4.0) * (R'(Left.Re / 2.0) * R'(Right.Re / 2.0)
+ - R'(Left.Im / 2.0) * R'(Right.Im / 2.0));
+ end if;
- if abs (Y) > R'Last then
- Y := R'(4.0) * (R'(Left.Re / 2.0) * R'(Right.Im / 2.0)
- - R'(Left.Im / 2.0) * R'(Right.Re / 2.0));
+ if abs (Y) > R'Last then
+ Y := R'(4.0) * (R'(Left.Re / 2.0) * R'(Right.Im / 2.0)
+ - R'(Left.Im / 2.0) * R'(Right.Re / 2.0));
+ end if;
end if;
return (X, Y);
@@ -143,7 +145,6 @@ package body Ada.Numerics.Generic_Complex_Types is
-- 1.0 / infinity, and the closest model number will be zero.
begin
-
while Exp /= 0 loop
if Exp rem 2 /= 0 then
Result := Result * Factor;
@@ -156,7 +157,6 @@ package body Ada.Numerics.Generic_Complex_Types is
return R'(1.0) / Result;
exception
-
when Constraint_Error =>
return (0.0, 0.0);
end;
diff --git a/gcc/ada/a-tags.adb b/gcc/ada/a-tags.adb
index 47e76ffac3e..522a826fc06 100644
--- a/gcc/ada/a-tags.adb
+++ b/gcc/ada/a-tags.adb
@@ -318,6 +318,21 @@ package body Ada.Tags is
return This - Offset_To_Top (This);
end Base_Address;
+ --------------------
+ -- Descendant_Tag --
+ --------------------
+
+ function Descendant_Tag (External : String; Ancestor : Tag) return Tag is
+ Int_Tag : constant Tag := Internal_Tag (External);
+
+ begin
+ if not Is_Descendant_At_Same_Level (Int_Tag, Ancestor) then
+ raise Tag_Error;
+ end if;
+
+ return Int_Tag;
+ end Descendant_Tag;
+
--------------
-- Displace --
--------------
@@ -434,21 +449,6 @@ package body Ada.Tags is
return False;
end IW_Membership;
- --------------------
- -- Descendant_Tag --
- --------------------
-
- function Descendant_Tag (External : String; Ancestor : Tag) return Tag is
- Int_Tag : constant Tag := Internal_Tag (External);
-
- begin
- if not Is_Descendant_At_Same_Level (Int_Tag, Ancestor) then
- raise Tag_Error;
- end if;
-
- return Int_Tag;
- end Descendant_Tag;
-
-------------------
-- Expanded_Name --
-------------------
@@ -846,6 +846,35 @@ package body Ada.Tags is
External_Tag_HTable.Set (T);
end Register_Tag;
+ -------------------
+ -- Secondary_Tag --
+ -------------------
+
+ function Secondary_Tag (T, Iface : Tag) return Tag is
+ Iface_Table : Interface_Data_Ptr;
+ Obj_DT : Dispatch_Table_Ptr;
+
+ begin
+ if not Is_Primary_DT (T) then
+ raise Program_Error;
+ end if;
+
+ Obj_DT := DT (T);
+ Iface_Table := To_Type_Specific_Data_Ptr (Obj_DT.TSD).Interfaces_Table;
+
+ if Iface_Table /= null then
+ for Id in 1 .. Iface_Table.Nb_Ifaces loop
+ if Iface_Table.Ifaces_Table (Id).Iface_Tag = Iface then
+ return Iface_Table.Ifaces_Table (Id).Secondary_DT;
+ end if;
+ end loop;
+ end if;
+
+ -- If the object does not implement the interface we must raise CE
+
+ raise Constraint_Error with "invalid interface conversion";
+ end Secondary_Tag;
+
---------------------
-- Set_Entry_Index --
---------------------
@@ -948,9 +977,13 @@ package body Ada.Tags is
-- Encoding method for source, as exported by binder
function Wide_Expanded_Name (T : Tag) return Wide_String is
+ S : constant String := Expanded_Name (T);
+ W : Wide_String (1 .. S'Length);
+ L : Natural;
begin
- return String_To_Wide_String
- (Expanded_Name (T), Get_WC_Encoding_Method (WC_Encoding));
+ String_To_Wide_String
+ (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
+ return W (1 .. L);
end Wide_Expanded_Name;
-----------------------------
@@ -958,9 +991,13 @@ package body Ada.Tags is
-----------------------------
function Wide_Wide_Expanded_Name (T : Tag) return Wide_Wide_String is
+ S : constant String := Expanded_Name (T);
+ W : Wide_Wide_String (1 .. S'Length);
+ L : Natural;
begin
- return String_To_Wide_Wide_String
- (Expanded_Name (T), Get_WC_Encoding_Method (WC_Encoding));
+ String_To_Wide_Wide_String
+ (S, W, L, Get_WC_Encoding_Method (WC_Encoding));
+ return W (1 .. L);
end Wide_Wide_Expanded_Name;
end Ada.Tags;
diff --git a/gcc/ada/a-tags.ads b/gcc/ada/a-tags.ads
index 6630743dcca..1fc31e8a233 100644
--- a/gcc/ada/a-tags.ads
+++ b/gcc/ada/a-tags.ads
@@ -122,25 +122,23 @@ private
-- Structure of the GNAT Secondary Dispatch Table
- -- +-----------------------+
- -- | table of |
- -- : predefined primitive :
- -- | ops pointers |
- -- +-----------------------+
- -- | Signature |
- -- +-----------------------+
- -- | Tagged_Kind |
- -- +-----------------------+
- -- | Offset_To_Top |
- -- +-----------------------+
- -- | OSD_Ptr |---> Object Specific Data
- -- Tag ---> +-----------------------+ +---------------+
- -- | table of | | num prim ops |
- -- : primitive op : +---------------+
- -- | thunk pointers | | table of |
- -- +-----------------------+ + primitive |
- -- | op offsets |
- -- +---------------+
+ -- +--------------------+
+ -- | Signature |
+ -- +--------------------+
+ -- | Tagged_Kind |
+ -- +--------------------+ Predef Prims
+ -- | Predef_Prims -----------------------------> +------------+
+ -- +--------------------+ | table of |
+ -- | Offset_To_Top | | predefined |
+ -- +--------------------+ | primitives |
+ -- | OSD_Ptr |---> Object Specific Data | thunks |
+ -- Tag ---> +--------------------+ +---------------+ +------------+
+ -- | table of | | num prim ops |
+ -- : primitive op : +---------------+
+ -- | thunk pointers | | table of |
+ -- +--------------------+ + primitive |
+ -- | op offsets |
+ -- +---------------+
-- The runtime information kept for each tagged type is separated into two
-- objects: the Dispatch Table and the Type Specific Data record.
@@ -165,12 +163,18 @@ private
Static_Offset_To_Top : Boolean;
Offset_To_Top_Value : SSE.Storage_Offset;
Offset_To_Top_Func : Offset_To_Top_Function_Ptr;
+ Secondary_DT : Tag;
end record;
-- If some ancestor of the tagged type has discriminants the field
-- Static_Offset_To_Top is False and the field Offset_To_Top_Func
-- is used to store the access to the function generated by the
-- expander which provides this value; otherwise Static_Offset_To_Top
-- is True and such value is stored in the Offset_To_Top_Value field.
+ -- Secondary_DT references a secondary dispatch table whose contents
+ -- are pointers to the primitives of the tagged type that cover the
+ -- interface primitives. Secondary_DT gives support to dispatching
+ -- calls through interface types associated with Generic Dispatching
+ -- Constructors.
type Interfaces_Array is array (Natural range <>) of Interface_Data_Element;
@@ -398,6 +402,11 @@ private
-- Ada 2005 (AI-251): Displace "This" to point to the secondary dispatch
-- table of T.
+ function Secondary_Tag (T, Iface : Tag) return Tag;
+ -- Ada 2005 (AI-251): Given a primary tag T associated with a tagged type
+ -- Typ, search for the secondary tag of the interface type Iface covered
+ -- by Typ.
+
function DT (T : Tag) return Dispatch_Table_Ptr;
-- Return the pointer to the TSD record associated with T
@@ -495,11 +504,27 @@ private
-- Ada 2005 (AI-251): Set the kind of a primitive operation in T's TSD
-- table indexed by Position.
- Max_Predef_Prims : constant Positive := 15;
- -- Number of reserved slots for predefined ada primitives: Size, Alignment,
- -- Read, Write, Input, Output, "=", assignment, deep adjust, deep finalize,
- -- async select, conditional select, prim_op kind, task_id, and timed
- -- select. The compiler checks that this value is correct.
+ Max_Predef_Prims : constant Positive := 16;
+ -- Number of reserved slots for the following predefined ada primitives:
+ --
+ -- 1. Size
+ -- 2. Alignment,
+ -- 3. Read
+ -- 4. Write
+ -- 5. Input
+ -- 6. Output
+ -- 7. "="
+ -- 8. assignment
+ -- 9. deep adjust
+ -- 10. deep finalize
+ -- 11. async select
+ -- 12. conditional select
+ -- 13. prim_op kind
+ -- 14. task_id
+ -- 15. dispatching requeue
+ -- 16. timed select
+ --
+ -- The compiler checks that the value here is correct
subtype Predef_Prims_Table is Address_Array (1 .. Max_Predef_Prims);
type Predef_Prims_Table_Ptr is access Predef_Prims_Table;
@@ -507,4 +532,5 @@ private
type Addr_Ptr is access System.Address;
pragma No_Strict_Aliasing (Addr_Ptr);
+ -- Why is this needed ???
end Ada.Tags;
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 4bb8d197a5a..4baf55e7e57 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -129,7 +129,7 @@ package body Exp_Attr is
-- operand with overflow checking required.
function Get_Index_Subtype (N : Node_Id) return Entity_Id;
- -- Used for Last, Last, and Length, when the prefix is an array type,
+ -- Used for Last, Last, and Length, when the prefix is an array type.
-- Obtains the corresponding index subtype.
procedure Find_Fat_Info
@@ -838,8 +838,12 @@ package body Exp_Attr is
-- generate a call to a run-time subprogram that returns the base
-- address of the object.
+ -- This processing is not needed in the VM case, where dispatching
+ -- issues are taken care of by the virtual machine.
+
elsif Is_Class_Wide_Type (Etype (Pref))
and then Is_Interface (Etype (Pref))
+ and then VM_Target = No_VM
and then not (Nkind (Pref) in N_Has_Entity
and then Is_Subprogram (Entity (Pref)))
then
@@ -1923,8 +1927,27 @@ package body Exp_Attr is
else
Id_Kind := RTE (RO_AT_Task_Id);
- Rewrite (N,
- Unchecked_Convert_To (Id_Kind, Concurrent_Ref (Pref)));
+ -- If the prefix is a task interface, the Task_Id is obtained
+ -- dynamically through a dispatching call, as for other task
+ -- attributes applied to interfaces.
+
+ if Ada_Version >= Ada_05
+ and then Ekind (Etype (Pref)) = E_Class_Wide_Type
+ and then Is_Interface (Etype (Pref))
+ and then Is_Task_Interface (Etype (Pref))
+ then
+ Rewrite (N,
+ Unchecked_Convert_To (Id_Kind,
+ Make_Selected_Component (Loc,
+ Prefix =>
+ New_Copy_Tree (Pref),
+ Selector_Name =>
+ Make_Identifier (Loc, Name_uDisp_Get_Task_Id))));
+
+ else
+ Rewrite (N,
+ Unchecked_Convert_To (Id_Kind, Concurrent_Ref (Pref)));
+ end if;
end if;
Analyze_And_Resolve (N, Id_Kind);
@@ -4052,13 +4075,17 @@ package body Exp_Attr is
-- Note that Prefix'Address is recursively expanded into a call
-- to Base_Address (Obj.Tag)
- Rewrite (N,
- Make_Explicit_Dereference (Loc,
- Unchecked_Convert_To (RTE (RE_Tag_Ptr),
- Make_Attribute_Reference (Loc,
- Prefix => Relocate_Node (Pref),
- Attribute_Name => Name_Address))));
- Analyze_And_Resolve (N, RTE (RE_Tag));
+ -- Not needed for VM targets, since all handled by the VM
+
+ if VM_Target = No_VM then
+ Rewrite (N,
+ Make_Explicit_Dereference (Loc,
+ Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+ Make_Attribute_Reference (Loc,
+ Prefix => Relocate_Node (Pref),
+ Attribute_Name => Name_Address))));
+ Analyze_And_Resolve (N, RTE (RE_Tag));
+ end if;
else
Rewrite (N,
@@ -4581,66 +4608,19 @@ package body Exp_Attr is
-- Wide_Image --
----------------
- -- We expand typ'Wide_Image (X) into
-
- -- String_To_Wide_String
- -- (typ'Image (X), Wide_Character_Encoding_Method)
+ -- Wide_Image attribute is handled in separate unit Exp_Imgv
- -- This works in all cases because String_To_Wide_String converts any
- -- wide character escape sequences resulting from the Image call to the
- -- proper Wide_Character equivalent
-
- -- not quite right for typ = Wide_Character ???
-
- when Attribute_Wide_Image => Wide_Image :
- begin
- Rewrite (N,
- Make_Function_Call (Loc,
- Name => New_Reference_To (RTE (RE_String_To_Wide_String), Loc),
- Parameter_Associations => New_List (
- Make_Attribute_Reference (Loc,
- Prefix => Pref,
- Attribute_Name => Name_Image,
- Expressions => Exprs),
-
- Make_Integer_Literal (Loc,
- Intval => Int (Wide_Character_Encoding_Method)))));
-
- Analyze_And_Resolve (N, Standard_Wide_String);
- end Wide_Image;
+ when Attribute_Wide_Image =>
+ Exp_Imgv.Expand_Wide_Image_Attribute (N);
---------------------
-- Wide_Wide_Image --
---------------------
- -- We expand typ'Wide_Wide_Image (X) into
-
- -- String_To_Wide_Wide_String
- -- (typ'Image (X), Wide_Character_Encoding_Method)
-
- -- This works in all cases because String_To_Wide_Wide_String converts
- -- any wide character escape sequences resulting from the Image call to
- -- the proper Wide_Character equivalent
-
- -- not quite right for typ = Wide_Wide_Character ???
-
- when Attribute_Wide_Wide_Image => Wide_Wide_Image :
- begin
- Rewrite (N,
- Make_Function_Call (Loc,
- Name => New_Reference_To
- (RTE (RE_String_To_Wide_Wide_String), Loc),
- Parameter_Associations => New_List (
- Make_Attribute_Reference (Loc,
- Prefix => Pref,
- Attribute_Name => Name_Image,
- Expressions => Exprs),
-
- Make_Integer_Literal (Loc,
- Intval => Int (Wide_Character_Encoding_Method)))));
+ -- Wide_Wide_Image attribute is handled in separate unit Exp_Imgv
- Analyze_And_Resolve (N, Standard_Wide_Wide_String);
- end Wide_Wide_Image;
+ when Attribute_Wide_Wide_Image =>
+ Exp_Imgv.Expand_Wide_Wide_Image_Attribute (N);
----------------
-- Wide_Value --
@@ -4935,6 +4915,7 @@ package body Exp_Attr is
Attribute_Emax |
Attribute_Enabled |
Attribute_Epsilon |
+ Attribute_Fast_Math |
Attribute_Has_Access_Values |
Attribute_Has_Discriminants |
Attribute_Large |
diff --git a/gcc/ada/exp_imgv.adb b/gcc/ada/exp_imgv.adb
index 75066208c6d..df3d7e8d33c 100644
--- a/gcc/ada/exp_imgv.adb
+++ b/gcc/ada/exp_imgv.adb
@@ -155,14 +155,23 @@ package body Exp_Imgv is
-- Expand_Image_Attribute --
----------------------------
- -- For all non-enumeration types, and for enumeration types declared
- -- in packages Standard or System, typ'Image (Val) expands into:
+ -- For all cases other than user defined enumeration types, the scheme
+ -- is as follows. First we insert the following code:
- -- Image_xx (tp (Expr) [, pm])
+ -- Snn : String (1 .. rt'Width);
+ -- Pnn : Natural;
+ -- Image_xx (tv, Snn, Pnn [,pm]);
+ --
+ -- and then Expr is replaced by Snn (1 .. Pnn)
- -- The name xx and type conversion tp (Expr) (called tv below) depend on
- -- the root type of Expr. The argument pm is an extra type dependent
- -- parameter only used in some cases as follows:
+ -- In the above expansion:
+
+ -- rt is the root type of the expression
+ -- tv is the expression with the value, usually a type conversion
+ -- pm is an extra parameter present in some cases
+
+ -- The following table shows tv, xx, and (if used) pm for the various
+ -- possible types of the argument:
-- For types whose root type is Character
-- xx = Character
@@ -194,57 +203,103 @@ package body Exp_Imgv is
-- pm = Boolean, true if Ada 2005 mode, False otherwise
-- For types whose root type is Wide_Wide_Character
- -- xx = Wide_Wide_haracter
+ -- xx = Wide_Wide_Character
-- tv = Wide_Wide_Character (Expr)
-- For floating-point types
-- xx = Floating_Point
-- tv = Long_Long_Float (Expr)
- -- pm = typ'Digits
+ -- pm = typ'Digits (typ = subtype of expression)
-- For ordinary fixed-point types
-- xx = Ordinary_Fixed_Point
-- tv = Long_Long_Float (Expr)
- -- pm = typ'Aft
+ -- pm = typ'Aft (typ = subtype of expression)
-- For decimal fixed-point types with size = Integer'Size
-- xx = Decimal
-- tv = Integer (Expr)
- -- pm = typ'Scale
+ -- pm = typ'Scale (typ = subtype of expression)
-- For decimal fixed-point types with size > Integer'Size
-- xx = Long_Long_Decimal
- -- tv = Long_Long_Integer (Expr)
- -- pm = typ'Scale
-
- -- Note: for the decimal fixed-point type cases, the conversion is
- -- done literally without scaling (i.e. the actual expression that
- -- is generated is Image_xx (tp?(Expr) [, pm])
+ -- tv = Long_Long_Integer?(Expr) [convert with no scaling]
+ -- pm = typ'Scale (typ = subtype of expression)
-- For enumeration types other than those declared packages Standard
- -- or System, typ'Image (X) expands into:
+ -- or System, Snn, Pnn, are expanded as above, but the call looks like:
+
+ -- Image_Enumeration_NN (rt'Pos (X), Snn, Pnn, typS, typI'Address)
- -- Image_Enumeration_NN (typ'Pos (X), typS, typI'Address)
+ -- where rt is the root type of the expression, and typS and typI are
+ -- the entities constructed as described in the spec for the procedure
+ -- Build_Enumeration_Image_Tables and NN is 32/16/8 depending on the
+ -- element type of Lit_Indexes. The rewriting of the expression to
+ -- Snn (1 .. Pnn) then occurs as in the other cases. A special case is
+ -- when pragma Discard_Names applies, in which case we replace expr by:
- -- where typS and typI are the entities constructed as described in
- -- the spec for the procedure Build_Enumeration_Image_Tables and NN
- -- is 32/16/8 depending on the element type of Lit_Indexes.
+ -- Missing ???
procedure Expand_Image_Attribute (N : Node_Id) is
- Loc : constant Source_Ptr := Sloc (N);
- Exprs : constant List_Id := Expressions (N);
- Pref : constant Node_Id := Prefix (N);
- Ptyp : constant Entity_Id := Entity (Pref);
- Rtyp : constant Entity_Id := Root_Type (Ptyp);
- Expr : constant Node_Id := Relocate_Node (First (Exprs));
- Imid : RE_Id;
- Tent : Entity_Id;
- Arglist : List_Id;
- Func : RE_Id;
- Ttyp : Entity_Id;
- Func_Ent : Entity_Id;
+ Loc : constant Source_Ptr := Sloc (N);
+ Exprs : constant List_Id := Expressions (N);
+ Pref : constant Node_Id := Prefix (N);
+ Ptyp : constant Entity_Id := Entity (Pref);
+ Rtyp : constant Entity_Id := Root_Type (Ptyp);
+ Expr : constant Node_Id := Relocate_Node (First (Exprs));
+ Imid : RE_Id;
+ Tent : Entity_Id;
+ Ttyp : Entity_Id;
+ Proc_Ent : Entity_Id;
+ Enum_Case : Boolean;
+
+ Arg_List : List_Id;
+ -- List of arguments for run-time procedure call
+
+ Ins_List : List_Id;
+ -- List of actions to be inserted
+
+ Snn : constant Entity_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_Internal_Name ('S'));
+
+ Pnn : constant Entity_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_Internal_Name ('P'));
begin
+ -- Build declarations of Snn and Pnn to be inserted
+
+ Ins_List := New_List (
+
+ -- Snn : String (1 .. typ'Width);
+
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Snn,
+ Object_Definition =>
+ Make_Subtype_Indication (Loc,
+ Subtype_Mark => New_Occurrence_Of (Standard_String, Loc),
+ Constraint =>
+ Make_Index_Or_Discriminant_Constraint (Loc,
+ Constraints => New_List (
+ Make_Range (Loc,
+ Low_Bound => Make_Integer_Literal (Loc, 1),
+ High_Bound =>
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Occurrence_Of (Rtyp, Loc),
+ Attribute_Name => Name_Width)))))),
+
+ -- Pnn : Natural;
+
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Pnn,
+ Object_Definition => New_Occurrence_Of (Standard_Natural, Loc)));
+
+ -- Set Imid (RE_Id of procedure to call), and Tent, target for the
+ -- type conversion of the first argument for all possibilities.
+
+ Enum_Case := False;
+
if Rtyp = Standard_Boolean then
Imid := RE_Image_Boolean;
Tent := Rtyp;
@@ -315,68 +370,77 @@ package body Exp_Imgv is
Attribute_Name =>
Name_Img));
Analyze_And_Resolve (N, Standard_String);
+ return;
else
- -- Here we get the Image of an enumeration type
+ -- Here for enumeration type case
Ttyp := Component_Type (Etype (Lit_Indexes (Rtyp)));
if Ttyp = Standard_Integer_8 then
- Func := RE_Image_Enumeration_8;
+ Imid := RE_Image_Enumeration_8;
elsif Ttyp = Standard_Integer_16 then
- Func := RE_Image_Enumeration_16;
+ Imid := RE_Image_Enumeration_16;
else
- Func := RE_Image_Enumeration_32;
+ Imid := RE_Image_Enumeration_32;
end if;
- -- Apply a validity check, since it is a bit drastic to
- -- get a completely junk image value for an invalid value.
+ -- Apply a validity check, since it is a bit drastic to get a
+ -- completely junk image value for an invalid value.
if not Expr_Known_Valid (Expr) then
Insert_Valid_Check (Expr);
end if;
- Rewrite (N,
- Make_Function_Call (Loc,
- Name => New_Occurrence_Of (RTE (Func), Loc),
- Parameter_Associations => New_List (
- Make_Attribute_Reference (Loc,
- Attribute_Name => Name_Pos,
- Prefix => New_Occurrence_Of (Ptyp, Loc),
- Expressions => New_List (Expr)),
- New_Occurrence_Of (Lit_Strings (Rtyp), Loc),
- Make_Attribute_Reference (Loc,
- Prefix => New_Occurrence_Of (Lit_Indexes (Rtyp), Loc),
- Attribute_Name => Name_Address))));
-
- Analyze_And_Resolve (N, Standard_String);
+ Enum_Case := True;
end if;
+ end if;
- return;
+ -- Build first argument for call
+
+ if Enum_Case then
+ Arg_List := New_List (
+ Make_Attribute_Reference (Loc,
+ Attribute_Name => Name_Pos,
+ Prefix => New_Occurrence_Of (Ptyp, Loc),
+ Expressions => New_List (Expr)));
+
+ else
+ Arg_List := New_List (Convert_To (Tent, Expr));
end if;
- -- If we fall through, we have one of the cases that is handled by
- -- calling one of the System.Img_xx routines and Imid is set to the
- -- RE_Id for the function to be called.
+ -- Append Snn, Pnn arguments
- Func_Ent := RTE (Imid);
+ Append_To (Arg_List, New_Occurrence_Of (Snn, Loc));
+ Append_To (Arg_List, New_Occurrence_Of (Pnn, Loc));
- -- If the function entity is empty, that means we have a case in
+ -- Get entity of procedure to call
+
+ Proc_Ent := RTE (Imid);
+
+ -- If the procedure entity is empty, that means we have a case in
-- no run time mode where the operation is not allowed, and an
-- appropriate diagnostic has already been issued.
- if No (Func_Ent) then
+ if No (Proc_Ent) then
return;
end if;
- -- Otherwise prepare arguments for run-time call
+ -- Otherwise complete preparation of arguments for run-time call
- Arglist := New_List (Convert_To (Tent, Relocate_Node (Expr)));
+ -- Add extra arguments for Enumeration case
+
+ if Enum_Case then
+ Append_To (Arg_List, New_Occurrence_Of (Lit_Strings (Rtyp), Loc));
+ Append_To (Arg_List,
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Occurrence_Of (Lit_Indexes (Rtyp), Loc),
+ Attribute_Name => Name_Address));
-- For floating-point types, append Digits argument
- if Is_Floating_Point_Type (Rtyp) then
- Append_To (Arglist,
+ elsif Is_Floating_Point_Type (Rtyp) then
+ Append_To (Arg_List,
Make_Attribute_Reference (Loc,
Prefix => New_Reference_To (Ptyp, Loc),
Attribute_Name => Name_Digits));
@@ -384,7 +448,7 @@ package body Exp_Imgv is
-- For ordinary fixed-point types, append Aft parameter
elsif Is_Ordinary_Fixed_Point_Type (Rtyp) then
- Append_To (Arglist,
+ Append_To (Arg_List,
Make_Attribute_Reference (Loc,
Prefix => New_Reference_To (Ptyp, Loc),
Attribute_Name => Name_Aft));
@@ -392,27 +456,45 @@ package body Exp_Imgv is
-- For decimal, append Scale and also set to do literal conversion
elsif Is_Decimal_Fixed_Point_Type (Rtyp) then
- Append_To (Arglist,
+ Append_To (Arg_List,
Make_Attribute_Reference (Loc,
Prefix => New_Reference_To (Ptyp, Loc),
Attribute_Name => Name_Scale));
- Set_Conversion_OK (First (Arglist));
- Set_Etype (First (Arglist), Tent);
+ Set_Conversion_OK (First (Arg_List));
+ Set_Etype (First (Arg_List), Tent);
-- For Wide_Character, append Ada 2005 indication
elsif Rtyp = Standard_Wide_Character then
- Append_To (Arglist,
+ Append_To (Arg_List,
New_Reference_To (Boolean_Literals (Ada_Version >= Ada_05), Loc));
end if;
- Rewrite (N,
- Make_Function_Call (Loc,
- Name => New_Reference_To (Func_Ent, Loc),
- Parameter_Associations => Arglist));
+ -- Now append the procedure call to the insert list
+
+ Append_To (Ins_List,
+ Make_Procedure_Call_Statement (Loc,
+ Name => New_Reference_To (Proc_Ent, Loc),
+ Parameter_Associations => Arg_List));
+
+ -- Insert declarations of Snn, Pnn, and the procedure call. We suppress
+ -- checks because we are sure that everything is in range at this stage.
+
+ Insert_Actions (N, Ins_List, Suppress => All_Checks);
+
+ -- Final step is to rewrite the expression as a slice and analyze,
+ -- again with no checks, since we are sure that everything is OK.
- Analyze_And_Resolve (N, Standard_String);
+ Rewrite (N,
+ Make_Slice (Loc,
+ Prefix => New_Occurrence_Of (Snn, Loc),
+ Discrete_Range =>
+ Make_Range (Loc,
+ Low_Bound => Make_Integer_Literal (Loc, 1),
+ High_Bound => New_Occurrence_Of (Pnn, Loc))));
+
+ Analyze_And_Resolve (N, Standard_String, Suppress => All_Checks);
end Expand_Image_Attribute;
----------------------------
@@ -662,6 +744,201 @@ package body Exp_Imgv is
Analyze_And_Resolve (N, Btyp);
end Expand_Value_Attribute;
+ ---------------------------------
+ -- Expand_Wide_Image_Attribute --
+ ---------------------------------
+
+ -- We expand typ'Wide_Image (X) as follows. First we insert this code:
+
+ -- Rnn : Wide_String (1 .. rt'Wide_Width);
+ -- Lnn : Natural;
+ -- String_To_Wide_String
+ -- (typ'Image (Expr), Rnn, Lnn, Wide_Character_Encoding_Method);
+
+ -- where rt is the root type of the prefix type
+
+ -- Now we replace the Wide_Image reference by
+
+ -- Rnn (1 .. Lnn)
+
+ -- This works in all cases because String_To_Wide_String converts any
+ -- wide character escape sequences resulting from the Image call to the
+ -- proper Wide_Character equivalent
+
+ -- not quite right for typ = Wide_Character ???
+
+ procedure Expand_Wide_Image_Attribute (N : Node_Id) is
+ Loc : constant Source_Ptr := Sloc (N);
+ Rtyp : constant Entity_Id := Root_Type (Entity (Prefix (N)));
+
+ Rnn : constant Entity_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_Internal_Name ('S'));
+
+ Lnn : constant Entity_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_Internal_Name ('P'));
+
+ begin
+ Insert_Actions (N, New_List (
+
+ -- Rnn : Wide_String (1 .. base_typ'Width);
+
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Rnn,
+ Object_Definition =>
+ Make_Subtype_Indication (Loc,
+ Subtype_Mark =>
+ New_Occurrence_Of (Standard_Wide_String, Loc),
+ Constraint =>
+ Make_Index_Or_Discriminant_Constraint (Loc,
+ Constraints => New_List (
+ Make_Range (Loc,
+ Low_Bound => Make_Integer_Literal (Loc, 1),
+ High_Bound =>
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Occurrence_Of (Rtyp, Loc),
+ Attribute_Name => Name_Wide_Width)))))),
+
+ -- Lnn : Natural;
+
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Lnn,
+ Object_Definition => New_Occurrence_Of (Standard_Natural, Loc)),
+
+ -- String_To_Wide_String
+ -- (typ'Image (X), Rnn, Lnn, Wide_Character_Encoding_Method);
+
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Reference_To (RTE (RE_String_To_Wide_String), Loc),
+
+ Parameter_Associations => New_List (
+ Make_Attribute_Reference (Loc,
+ Prefix => Prefix (N),
+ Attribute_Name => Name_Image,
+ Expressions => Expressions (N)),
+ New_Reference_To (Rnn, Loc),
+ New_Reference_To (Lnn, Loc),
+ Make_Integer_Literal (Loc,
+ Intval => Int (Wide_Character_Encoding_Method))))),
+
+ -- Suppress checks because we know everything is properly in range
+
+ Suppress => All_Checks);
+
+ -- Final step is to rewrite the expression as a slice and analyze,
+ -- again with no checks, since we are sure that everything is OK.
+
+ Rewrite (N,
+ Make_Slice (Loc,
+ Prefix => New_Occurrence_Of (Rnn, Loc),
+ Discrete_Range =>
+ Make_Range (Loc,
+ Low_Bound => Make_Integer_Literal (Loc, 1),
+ High_Bound => New_Occurrence_Of (Lnn, Loc))));
+
+ Analyze_And_Resolve (N, Standard_Wide_String, Suppress => All_Checks);
+ end Expand_Wide_Image_Attribute;
+
+ --------------------------------------
+ -- Expand_Wide_Wide_Image_Attribute --
+ --------------------------------------
+
+ -- We expand typ'Wide_Wide_Image (X) as follows. First we insert this code:
+
+ -- Rnn : Wide_Wide_String (1 .. rt'Wide_Wide_Width);
+ -- Lnn : Natural;
+ -- String_To_Wide_Wide_String
+ -- (typ'Image (Expr), Rnn, Lnn, Wide_Character_Encoding_Method);
+
+ -- where rt is the root type of the prefix type
+
+ -- Now we replace the Wide_Wide_Image reference by
+
+ -- Rnn (1 .. Lnn)
+
+ -- This works in all cases because String_To_Wide_Wide_String converts any
+ -- wide character escape sequences resulting from the Image call to the
+ -- proper Wide_Wide_Character equivalent
+
+ -- not quite right for typ = Wide_Wide_Character ???
+
+ procedure Expand_Wide_Wide_Image_Attribute (N : Node_Id) is
+ Loc : constant Source_Ptr := Sloc (N);
+ Rtyp : constant Entity_Id := Root_Type (Entity (Prefix (N)));
+
+ Rnn : constant Entity_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_Internal_Name ('S'));
+
+ Lnn : constant Entity_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_Internal_Name ('P'));
+
+ begin
+ Insert_Actions (N, New_List (
+
+ -- Rnn : Wide_Wide_String (1 .. rt'Wide_Wide_Width);
+
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Rnn,
+ Object_Definition =>
+ Make_Subtype_Indication (Loc,
+ Subtype_Mark =>
+ New_Occurrence_Of (Standard_Wide_Wide_String, Loc),
+ Constraint =>
+ Make_Index_Or_Discriminant_Constraint (Loc,
+ Constraints => New_List (
+ Make_Range (Loc,
+ Low_Bound => Make_Integer_Literal (Loc, 1),
+ High_Bound =>
+ Make_Attribute_Reference (Loc,
+ Prefix => New_Occurrence_Of (Rtyp, Loc),
+ Attribute_Name => Name_Wide_Wide_Width)))))),
+
+ -- Lnn : Natural;
+
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Lnn,
+ Object_Definition => New_Occurrence_Of (Standard_Natural, Loc)),
+
+ -- String_To_Wide_Wide_String
+ -- (typ'Image (X), Rnn, Lnn, Wide_Character_Encoding_Method);
+
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Reference_To (RTE (RE_String_To_Wide_Wide_String), Loc),
+
+ Parameter_Associations => New_List (
+ Make_Attribute_Reference (Loc,
+ Prefix => Prefix (N),
+ Attribute_Name => Name_Image,
+ Expressions => Expressions (N)),
+ New_Reference_To (Rnn, Loc),
+ New_Reference_To (Lnn, Loc),
+ Make_Integer_Literal (Loc,
+ Intval => Int (Wide_Character_Encoding_Method))))),
+
+ -- Suppress checks because we know everything is properly in range
+
+ Suppress => All_Checks);
+
+ -- Final step is to rewrite the expression as a slice and analyze,
+ -- again with no checks, since we are sure that everything is OK.
+
+ Rewrite (N,
+ Make_Slice (Loc,
+ Prefix => New_Occurrence_Of (Rnn, Loc),
+ Discrete_Range =>
+ Make_Range (Loc,
+ Low_Bound => Make_Integer_Literal (Loc, 1),
+ High_Bound => New_Occurrence_Of (Lnn, Loc))));
+
+ Analyze_And_Resolve
+ (N, Standard_Wide_Wide_String, Suppress => All_Checks);
+ end Expand_Wide_Wide_Image_Attribute;
+
----------------------------
-- Expand_Width_Attribute --
----------------------------
diff --git a/gcc/ada/exp_imgv.ads b/gcc/ada/exp_imgv.ads
index 913920a730f..27b2452ab4e 100644
--- a/gcc/ada/exp_imgv.ads
+++ b/gcc/ada/exp_imgv.ads
@@ -73,6 +73,14 @@ package Exp_Imgv is
-- This procedure is called from Exp_Attr to expand an occurrence
-- of the attribute Image.
+ procedure Expand_Wide_Image_Attribute (N : Node_Id);
+ -- This procedure is called from Exp_Attr to expand an occurrence
+ -- of the attribute Wide_Image.
+
+ procedure Expand_Wide_Wide_Image_Attribute (N : Node_Id);
+ -- This procedure is called from Exp_Attr to expand an occurrence
+ -- of the attribute Wide_Wide_Image.
+
procedure Expand_Value_Attribute (N : Node_Id);
-- This procedure is called from Exp_Attr to expand an occurrence
-- of the attribute Value.
diff --git a/gcc/ada/opt.adb b/gcc/ada/opt.adb
index 783481245b2..df1969b4281 100644
--- a/gcc/ada/opt.adb
+++ b/gcc/ada/opt.adb
@@ -55,6 +55,7 @@ package body Opt is
Extensions_Allowed_Config := Extensions_Allowed;
External_Name_Exp_Casing_Config := External_Name_Exp_Casing;
External_Name_Imp_Casing_Config := External_Name_Imp_Casing;
+ Fast_Math_Config := Fast_Math;
Persistent_BSS_Mode_Config := Persistent_BSS_Mode;
Polling_Required_Config := Polling_Required;
Use_VADS_Size_Config := Use_VADS_Size;
@@ -75,6 +76,7 @@ package body Opt is
Extensions_Allowed := Save.Extensions_Allowed;
External_Name_Exp_Casing := Save.External_Name_Exp_Casing;
External_Name_Imp_Casing := Save.External_Name_Imp_Casing;
+ Fast_Math := Save.Fast_Math;
Persistent_BSS_Mode := Save.Persistent_BSS_Mode;
Polling_Required := Save.Polling_Required;
Use_VADS_Size := Save.Use_VADS_Size;
@@ -95,6 +97,7 @@ package body Opt is
Save.Extensions_Allowed := Extensions_Allowed;
Save.External_Name_Exp_Casing := External_Name_Exp_Casing;
Save.External_Name_Imp_Casing := External_Name_Imp_Casing;
+ Save.Fast_Math := Fast_Math;
Save.Persistent_BSS_Mode := Persistent_BSS_Mode;
Save.Polling_Required := Polling_Required;
Save.Use_VADS_Size := Use_VADS_Size;
@@ -147,11 +150,13 @@ package body Opt is
Extensions_Allowed := Extensions_Allowed_Config;
External_Name_Exp_Casing := External_Name_Exp_Casing_Config;
External_Name_Imp_Casing := External_Name_Imp_Casing_Config;
+ Fast_Math := Fast_Math_Config;
Persistent_BSS_Mode := Persistent_BSS_Mode_Config;
Use_VADS_Size := Use_VADS_Size_Config;
end if;
Exception_Locations_Suppressed := Exception_Locations_Suppressed_Config;
+ Fast_Math := Fast_Math_Config;
Polling_Required := Polling_Required_Config;
end Set_Opt_Config_Switches;
diff --git a/gcc/ada/par-ch10.adb b/gcc/ada/par-ch10.adb
index 5d86633fb0c..8fad13e3532 100644
--- a/gcc/ada/par-ch10.adb
+++ b/gcc/ada/par-ch10.adb
@@ -180,7 +180,7 @@ package body Ch10 is
Item := P_Pragma;
if Item = Error
- or else Chars (Item) > Last_Configuration_Pragma_Name
+ or else not Is_Configuration_Pragma_Name (Chars (Item))
then
Restore_Scan_State (Scan_State);
exit;
@@ -587,19 +587,17 @@ package body Ch10 is
while Token = Tok_Pragma loop
Save_Scan_State (Scan_State);
- -- If we are in syntax scan mode allowing multiple units, then
- -- start the next unit if we encounter a configuration pragma,
- -- or a source reference pragma. We take care not to actually
- -- scan the pragma in this case since we don't want it to take
- -- effect for the current unit.
+ -- If we are in syntax scan mode allowing multiple units, then start
+ -- the next unit if we encounter a configuration pragma, or a source
+ -- reference pragma. We take care not to actually scan the pragma in
+ -- this case (we don't want it to take effect for the current unit).
if Operating_Mode = Check_Syntax then
Scan; -- past Pragma
if Token = Tok_Identifier
and then
- (Token_Name in
- First_Pragma_Name .. Last_Configuration_Pragma_Name
+ (Is_Configuration_Pragma_Name (Token_Name)
or else Token_Name = Name_Source_Reference)
then
Restore_Scan_State (Scan_State); -- to Pragma
@@ -1022,9 +1020,9 @@ package body Ch10 is
Body_Node := Error; -- in case no good body found
Scan; -- past SEPARATE;
- T_Left_Paren;
+ U_Left_Paren;
Set_Name (Subunit_Node, P_Qualified_Simple_Name);
- T_Right_Paren;
+ U_Right_Paren;
if Token = Tok_Semicolon then
Error_Msg_SC ("unexpected semicolon ignored");
diff --git a/gcc/ada/par-ch2.adb b/gcc/ada/par-ch2.adb
index c778ac929bd..697cf86d834 100644
--- a/gcc/ada/par-ch2.adb
+++ b/gcc/ada/par-ch2.adb
@@ -227,8 +227,7 @@ package body Ch2 is
-- will think there are missing bodies, and try to change ; to IS, when
-- in fact the bodies ARE present, supplied by these pragmas.
- function P_Pragma return Node_Id is
-
+ function P_Pragma (Skipping : Boolean := False) return Node_Id is
Interface_Check_Required : Boolean := False;
-- Set True if check of pragma INTERFACE is required
@@ -259,10 +258,22 @@ package body Ch2 is
procedure Skip_Pragma_Semicolon is
begin
if Token /= Tok_Semicolon then
- T_Semicolon;
- Resync_Past_Semicolon;
+
+ -- If skipping the pragma, ignore a missing semicolon
+
+ if Skipping then
+ null;
+
+ -- Otherwise demand a semicolon
+
+ else
+ T_Semicolon;
+ end if;
+
+ -- Scan past semicolon if present
+
else
- Scan; -- past semicolon
+ Scan;
end if;
end Skip_Pragma_Semicolon;
@@ -284,14 +295,14 @@ package body Ch2 is
and then Token = Tok_Interface
then
Pragma_Name := Name_Interface;
- Ident_Node := Token_Node;
+ Ident_Node := Make_Identifier (Token_Ptr, Name_Interface);
Scan; -- past INTERFACE
else
Ident_Node := P_Identifier;
- Delete_Node (Ident_Node);
end if;
Set_Chars (Pragma_Node, Pragma_Name);
+ Set_Pragma_Identifier (Pragma_Node, Ident_Node);
-- See if special INTERFACE/IMPORT check is required
@@ -336,10 +347,10 @@ package body Ch2 is
Scan; -- past comma
end loop;
- -- If we have := for pragma Debug, it is worth special casing
- -- the error message (it is easy to think of pragma Debug as
- -- taking a statement, and an assignment statement is the most
- -- likely candidate for this error)
+ -- If we have := for pragma Debug, it is worth special casing the
+ -- error message (it is easy to think of pragma Debug as taking a
+ -- statement, and an assignment statement is the most likely
+ -- candidate for this error)
if Token = Tok_Colon_Equal and then Pragma_Name = Name_Debug then
Error_Msg_SC ("argument for pragma Debug must be procedure call");
@@ -394,7 +405,7 @@ package body Ch2 is
begin
while Token = Tok_Pragma loop
Error_Msg_SC ("pragma not allowed here");
- Discard_Junk_Node (P_Pragma);
+ Discard_Junk_Node (P_Pragma (Skipping => True));
end loop;
end P_Pragmas_Misplaced;
@@ -469,7 +480,6 @@ package body Ch2 is
Identifier_Seen := True;
Scan; -- past arrow
Set_Chars (Association, Chars (Identifier_Node));
- Delete_Node (Identifier_Node);
-- Case of argument with no identifier
diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb
index 910d16174fe..381ff922a48 100644
--- a/gcc/ada/par-ch3.adb
+++ b/gcc/ada/par-ch3.adb
@@ -174,7 +174,9 @@ package body Ch3 is
if Token = Tok_Identifier then
-- Ada 2005 (AI-284): Compiling in Ada95 mode we warn that INTERFACE,
- -- OVERRIDING, and SYNCHRONIZED are new reserved words.
+ -- OVERRIDING, and SYNCHRONIZED are new reserved words. Note that
+ -- in the case where these keywords are misused in Ada 95 mode,
+ -- this routine will generally not be called at all.
if Ada_Version = Ada_95
and then Warn_On_Ada_2005_Compatibility
@@ -1128,7 +1130,6 @@ package body Ch3 is
Make_Attribute_Reference (Prev_Token_Ptr,
Prefix => Prefix,
Attribute_Name => Token_Name);
- Delete_Node (Token_Node);
Scan; -- past type attribute identifier
end if;
@@ -1279,6 +1280,10 @@ package body Ch3 is
-- returns True, otherwise returns False. Includes checking for some
-- common error cases.
+ -------------
+ -- No_List --
+ -------------
+
procedure No_List is
begin
if Num_Idents > 1 then
@@ -1289,6 +1294,10 @@ package body Ch3 is
List_OK := False;
end No_List;
+ ----------------------
+ -- Token_Is_Renames --
+ ----------------------
+
function Token_Is_Renames return Boolean is
At_Colon : Saved_Scan_State;
@@ -1922,7 +1931,6 @@ package body Ch3 is
Abstract_Present => Abstract_Present (Typedef_Node),
Interface_List => Interface_List (Typedef_Node));
- Delete_Node (Typedef_Node);
return Typedecl_Node;
-- Derived type definition with record extension part
@@ -2715,27 +2723,37 @@ package body Ch3 is
Scan_State : Saved_Scan_State;
begin
- if Token /= Tok_Left_Paren then
+ -- If <> right now, then this is missing left paren
+
+ if Token = Tok_Box then
+ U_Left_Paren;
+
+ -- If not <> or left paren, then definitely no box
+
+ elsif Token /= Tok_Left_Paren then
return False;
+ -- Left paren, so might be a box after it
+
else
Save_Scan_State (Scan_State);
Scan; -- past the left paren
- if Token = Tok_Box then
- if Ada_Version = Ada_83 then
- Error_Msg_SC ("(Ada 83) unknown discriminant not allowed!");
- end if;
-
- Scan; -- past the box
- T_Right_Paren; -- must be followed by right paren
- return True;
-
- else
+ if Token /= Tok_Box then
Restore_Scan_State (Scan_State);
return False;
end if;
end if;
+
+ -- We are now pointing to the box
+
+ if Ada_Version = Ada_83 then
+ Error_Msg_SC ("(Ada 83) unknown discriminant not allowed!");
+ end if;
+
+ Scan; -- past the box
+ U_Right_Paren; -- must be followed by right paren
+ return True;
end P_Unknown_Discriminant_Part_Opt;
----------------------------------
@@ -4039,11 +4057,28 @@ package body Ch3 is
when Tok_Identifier =>
Check_Bad_Layout;
- P_Identifier_Declarations (Decls, Done, In_Spec);
+
+ -- Special check for misuse of overriding not in Ada 2005 mode
+
+ if Token_Name = Name_Overriding
+ and then not Next_Token_Is (Tok_Colon)
+ then
+ Error_Msg_SC ("overriding indicator is an Ada 2005 extension");
+ Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
+
+ Token := Tok_Overriding;
+ Append (P_Subprogram (Pf_Decl_Gins_Pbod_Rnam_Stub), Decls);
+ Done := False;
+
+ -- Normal case, no overriding, or overriding followed by colon
+
+ else
+ P_Identifier_Declarations (Decls, Done, In_Spec);
+ end if;
-- Ada2005: A subprogram declaration can start with "not" or
-- "overriding". In older versions, "overriding" is handled
- -- like an identifier, with the appropriate warning.
+ -- like an identifier, with the appropriate messages.
when Tok_Not =>
Check_Bad_Layout;
diff --git a/gcc/ada/par-ch6.adb b/gcc/ada/par-ch6.adb
index 84e16c2e635..fee646514be 100644
--- a/gcc/ada/par-ch6.adb
+++ b/gcc/ada/par-ch6.adb
@@ -176,7 +176,7 @@ package body Ch6 is
Scope.Table (Scope.Last).Ecol := Start_Column;
Scope.Table (Scope.Last).Lreq := False;
- -- Ada2005: scan leading overriding indicator
+ -- Ada2005: scan leading NOT OVERRIDING indicator
if Token = Tok_Not then
Scan; -- past NOT
@@ -184,24 +184,41 @@ package body Ch6 is
if Token = Tok_Overriding then
Scan; -- past OVERRIDING
Not_Overriding := True;
+
+ -- Overriding keyword used in non Ada 2005 mode
+
+ elsif Token = Tok_Identifier
+ and then Token_Name = Name_Overriding
+ then
+ Error_Msg_SC ("overriding indicator is an Ada 2005 extension");
+ Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
+ Scan; -- past Overriding
+ Not_Overriding := True;
+
else
Error_Msg_SC ("OVERRIDING expected!");
end if;
+ -- Ada 2005: scan leading OVERRIDING indicator
+
+ -- Note: in the case of OVERRIDING keyword used in Ada 95 mode, the
+ -- declaration circuit already gave an error message and changed the
+ -- tokem to Tok_Overriding.
+
elsif Token = Tok_Overriding then
Scan; -- past OVERRIDING
Is_Overriding := True;
end if;
if (Is_Overriding or else Not_Overriding) then
- if Ada_Version < Ada_05 then
- Error_Msg_SP (" overriding indicator is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
+
+ -- Note that if we are not in Ada_05 mode, error messages have
+ -- already been given, so no need to give another message here.
-- An overriding indicator is allowed for subprogram declarations,
-- bodies, renamings, stubs, and instantiations.
- elsif Pf_Flags /= Pf_Decl_Gins_Pbod_Rnam_Stub then
+ if Pf_Flags /= Pf_Decl_Gins_Pbod_Rnam_Stub then
Error_Msg_SC ("overriding indicator not allowed here!");
elsif Token /= Tok_Function
@@ -1000,7 +1017,8 @@ package body Ch6 is
Specification_Loop : loop
begin
if Token = Tok_Pragma then
- P_Pragmas_Misplaced;
+ Error_Msg_SC ("pragma not allowed in formal part");
+ Discard_Junk_Node (P_Pragma (Skipping => True));
end if;
Ignore (Tok_Left_Paren);
diff --git a/gcc/ada/par-prag.adb b/gcc/ada/par-prag.adb
index d51ed2ec20b..2114fd9c986 100644
--- a/gcc/ada/par-prag.adb
+++ b/gcc/ada/par-prag.adb
@@ -1028,7 +1028,7 @@ begin
end;
else
- raise Constraint_Error;
+ raise Constraint_Error;
end if;
exception
@@ -1089,9 +1089,12 @@ begin
Pragma_Extend_System |
Pragma_External |
Pragma_External_Name_Casing |
+ Pragma_Favor_Top_Level |
+ Pragma_Fast_Math |
Pragma_Finalize_Storage_Only |
Pragma_Float_Representation |
Pragma_Ident |
+ Pragma_Implemented_By_Entry |
Pragma_Implicit_Packing |
Pragma_Import |
Pragma_Import_Exception |
diff --git a/gcc/ada/par-tchk.adb b/gcc/ada/par-tchk.adb
index 6b8c46d2018..3d45932c49f 100644
--- a/gcc/ada/par-tchk.adb
+++ b/gcc/ada/par-tchk.adb
@@ -790,6 +790,32 @@ package body Tchk is
end if;
end TF_Use;
+ ------------------
+ -- U_Left_Paren --
+ ------------------
+
+ procedure U_Left_Paren is
+ begin
+ if Token = Tok_Left_Paren then
+ Scan;
+ else
+ Error_Msg_AP ("missing ""(""!");
+ end if;
+ end U_Left_Paren;
+
+ -------------------
+ -- U_Right_Paren --
+ -------------------
+
+ procedure U_Right_Paren is
+ begin
+ if Token = Tok_Right_Paren then
+ Scan;
+ else
+ Error_Msg_AP ("missing "")""!");
+ end if;
+ end U_Right_Paren;
+
-----------------
-- Wrong_Token --
-----------------
diff --git a/gcc/ada/par-util.adb b/gcc/ada/par-util.adb
index d252922116d..e4b690f1788 100644
--- a/gcc/ada/par-util.adb
+++ b/gcc/ada/par-util.adb
@@ -23,9 +23,10 @@
-- --
------------------------------------------------------------------------------
-with Csets; use Csets;
-with Stylesw; use Stylesw;
-with Uintp; use Uintp;
+with Csets; use Csets;
+with Namet.Sp; use Namet.Sp;
+with Stylesw; use Stylesw;
+with Uintp; use Uintp;
with GNAT.Spelling_Checker; use GNAT.Spelling_Checker;
@@ -587,6 +588,21 @@ package body Util is
end Merge_Identifier;
-------------------
+ -- Next_Token_Is --
+ -------------------
+
+ function Next_Token_Is (Tok : Token_Type) return Boolean is
+ Scan_State : Saved_Scan_State;
+ Result : Boolean;
+ begin
+ Save_Scan_State (Scan_State);
+ Scan;
+ Result := (Token = Tok);
+ Restore_Scan_State (Scan_State);
+ return Result;
+ end Next_Token_Is;
+
+ -------------------
-- No_Constraint --
-------------------
@@ -677,27 +693,15 @@ package body Util is
-- Check for possible misspelling
- Get_Name_String (Token_Name);
-
- declare
- AN : constant String := Name_Buffer (1 .. Name_Len);
-
- begin
- Error_Msg_Name_1 := First_Attribute_Name;
- while Error_Msg_Name_1 <= Last_Attribute_Name loop
- Get_Name_String (Error_Msg_Name_1);
-
- if Is_Bad_Spelling_Of
- (AN, Name_Buffer (1 .. Name_Len))
- then
- Error_Msg_N
- ("\possible misspelling of %", Token_Node);
- exit;
- end if;
+ Error_Msg_Name_1 := First_Attribute_Name;
+ while Error_Msg_Name_1 <= Last_Attribute_Name loop
+ if Is_Bad_Spelling_Of (Token_Name, Error_Msg_Name_1) then
+ Error_Msg_N ("\possible misspelling of %", Token_Node);
+ exit;
+ end if;
- Error_Msg_Name_1 := Error_Msg_Name_1 + 1;
- end loop;
- end;
+ Error_Msg_Name_1 := Error_Msg_Name_1 + 1;
+ end loop;
end Signal_Bad_Attribute;
-----------------------------
diff --git a/gcc/ada/par.adb b/gcc/ada/par.adb
index 9b9208ff168..e75051002eb 100644
--- a/gcc/ada/par.adb
+++ b/gcc/ada/par.adb
@@ -530,7 +530,10 @@ is
-------------
package Ch2 is
- function P_Pragma return Node_Id;
+ function P_Pragma (Skipping : Boolean := False) return Node_Id;
+ -- Scan out a pragma. If Skipping is True, then the caller is skipping
+ -- the pragma in the context of illegal placement (this is used to avoid
+ -- some junk cascaded messages).
function P_Identifier (C : Id_Check := None) return Node_Id;
-- Scans out an identifier. The parameter C determines the treatment
@@ -965,7 +968,7 @@ is
procedure T_When;
procedure T_With;
- -- Procedures have names of the form TF_xxx, where Tok_xxx is a token
+ -- Procedures having names of the form TF_xxx, where Tok_xxx is a token
-- name check that the current token matches the required token, and
-- if so, scan past it. If not, an error message is issued indicating
-- that the required token is not present (xxx expected).
@@ -987,6 +990,13 @@ is
procedure TF_Semicolon;
procedure TF_Then;
procedure TF_Use;
+
+ -- Procedures with names of the form U_xxx, where Tok_xxx is a token
+ -- name, are just like the corresponding T_xxx procedures except that
+ -- an error message, if given, is unconditional.
+
+ procedure U_Left_Paren;
+ procedure U_Right_Paren;
end Tchk;
--------------
@@ -1085,6 +1095,10 @@ is
-- conditions are met, an error message is issued, and the merge is
-- carried out, modifying the Chars field of Prev.
+ function Next_Token_Is (Tok : Token_Type) return Boolean;
+ -- Looks at token after current one and returns True if the token type
+ -- matches Tok. The scan is unconditionally restored on return.
+
procedure No_Constraint;
-- Called in a place where no constraint is allowed, but one might
-- appear due to a common error (e.g. after the type mark in a procedure
@@ -1242,7 +1256,7 @@ begin
-- Give error if bad pragma
- if Chars (P_Node) > Last_Configuration_Pragma_Name
+ if not Is_Configuration_Pragma_Name (Chars (P_Node))
and then Chars (P_Node) /= Name_Source_Reference
then
if Is_Pragma_Name (Chars (P_Node)) then
diff --git a/gcc/ada/s-wchstw.adb b/gcc/ada/s-wchstw.adb
index 2f09ba25e61..33f6674c6cb 100644
--- a/gcc/ada/s-wchstw.adb
+++ b/gcc/ada/s-wchstw.adb
@@ -121,18 +121,20 @@ package body System.WCh_StW is
-- String_To_Wide_String --
---------------------------
- function String_To_Wide_String
+ procedure String_To_Wide_String
(S : String;
- EM : WC_Encoding_Method) return Wide_String
+ R : out Wide_String;
+ L : out Natural;
+ EM : System.WCh_Con.WC_Encoding_Method)
is
- R : Wide_String (1 .. S'Length);
- RP : Natural;
SP : Natural;
V : UTF_32_Code;
begin
+ pragma Assert (S'First = 1);
+
SP := S'First;
- RP := 0;
+ L := 0;
while SP <= S'Last loop
Get_Next_Code (S, SP, V, EM);
@@ -141,36 +143,34 @@ package body System.WCh_StW is
with "out of range value for wide character";
end if;
- RP := RP + 1;
- R (RP) := Wide_Character'Val (V);
+ L := L + 1;
+ R (L) := Wide_Character'Val (V);
end loop;
-
- return R (1 .. RP);
end String_To_Wide_String;
--------------------------------
-- String_To_Wide_Wide_String --
--------------------------------
- function String_To_Wide_Wide_String
+ procedure String_To_Wide_Wide_String
(S : String;
- EM : WC_Encoding_Method) return Wide_Wide_String
+ R : out Wide_Wide_String;
+ L : out Natural;
+ EM : System.WCh_Con.WC_Encoding_Method)
is
- R : Wide_Wide_String (1 .. S'Length);
- RP : Natural;
+ pragma Assert (S'First = 1);
+
SP : Natural;
V : UTF_32_Code;
begin
SP := S'First;
- RP := 0;
+ L := 0;
while SP <= S'Last loop
Get_Next_Code (S, SP, V, EM);
- RP := RP + 1;
- R (RP) := Wide_Wide_Character'Val (V);
+ L := L + 1;
+ R (L) := Wide_Wide_Character'Val (V);
end loop;
-
- return R (1 .. RP);
end String_To_Wide_Wide_String;
end System.WCh_StW;
diff --git a/gcc/ada/s-wchstw.ads b/gcc/ada/s-wchstw.ads
index b965e2fce52..7bd3529586d 100644
--- a/gcc/ada/s-wchstw.ads
+++ b/gcc/ada/s-wchstw.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2007, 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- --
@@ -32,33 +32,39 @@
------------------------------------------------------------------------------
-- This package contains the routine used to convert strings to wide (wide)
--- strings for use by wide (wide) character attributes (value, image etc.)
+-- strings for use by wide (wide) image attribute.
with System.WCh_Con;
package System.WCh_StW is
pragma Pure;
- function String_To_Wide_String
+ procedure String_To_Wide_String
(S : String;
- EM : System.WCh_Con.WC_Encoding_Method) return Wide_String;
+ R : out Wide_String;
+ L : out Natural;
+ EM : System.WCh_Con.WC_Encoding_Method);
-- This routine simply takes its argument and converts it to wide string
- -- format. In the context of the Wide_Image attribute, the argument is
- -- the corresponding 'Image attribute. Any wide character escape sequences
- -- in the string are converted to the corresponding wide character value.
- -- No syntax checks are made, it is assumed that any such sequences are
- -- validly formed (this must be assured by the caller), and results from
- -- the fact that Wide_Image is only used on strings that have been built
- -- by the compiler, such as images of enumeration literals. If the method
- -- for encoding is a shift-in, shift-out convention, then it is assumed
- -- that normal (non-wide character) mode holds at the start and end of
- -- the argument string. EM indicates the wide character encoding method.
+ -- format, storing the result in R (1 .. L), with L being set appropriately
+ -- on return. The caller guarantees that R is long enough to accomodate the
+ -- result. This is used in the context of the Wide_Image attribute, where
+ -- the argument is the corresponding 'Image attribute. Any wide character
+ -- escape sequences in the string are converted to the corresponding wide
+ -- character value. No syntax checks are made, it is assumed that any such
+ -- sequences are validly formed (this must be assured by the caller), and
+ -- results from the fact that Wide_Image is only used on strings that have
+ -- been built by the compiler, such as images of enumeration literals. If
+ -- the method for encoding is a shift-in, shift-out convention, then it is
+ -- assumed that normal (non-wide character) mode holds at the start and end
+ -- of the argument string. EM indicates the wide character encoding method.
-- Note: in the WCEM_Brackets case, the brackets escape sequence is used
-- only for codes greater than 16#FF#.
- function String_To_Wide_Wide_String
+ procedure String_To_Wide_Wide_String
(S : String;
- EM : System.WCh_Con.WC_Encoding_Method) return Wide_Wide_String;
+ R : out Wide_Wide_String;
+ L : out Natural;
+ EM : System.WCh_Con.WC_Encoding_Method);
-- Same function with Wide_Wide_String output
end System.WCh_StW;
diff --git a/gcc/ada/s-wwdenu.adb b/gcc/ada/s-wwdenu.adb
index f79b62b2524..47848c549f4 100644
--- a/gcc/ada/s-wwdenu.adb
+++ b/gcc/ada/s-wwdenu.adb
@@ -63,12 +63,14 @@ package body System.WWd_Enum is
W := 0;
for J in Lo .. Hi loop
declare
- WS : constant Wide_Wide_String :=
- String_To_Wide_Wide_String
- (Names (Natural (IndexesT (J)) ..
- Natural (IndexesT (J + 1)) - 1), EM);
+ S : constant String :=
+ Names (Natural (IndexesT (J)) ..
+ Natural (IndexesT (J + 1)) - 1);
+ WS : Wide_Wide_String (1 .. S'Length);
+ L : Natural;
begin
- W := Natural'Max (W, WS'Length);
+ String_To_Wide_Wide_String (S, WS, L, EM);
+ W := Natural'Max (W, L);
end;
end loop;
@@ -100,12 +102,14 @@ package body System.WWd_Enum is
W := 0;
for J in Lo .. Hi loop
declare
- WS : constant Wide_Wide_String :=
- String_To_Wide_Wide_String
- (Names (Natural (IndexesT (J)) ..
- Natural (IndexesT (J + 1)) - 1), EM);
+ S : constant String :=
+ Names (Natural (IndexesT (J)) ..
+ Natural (IndexesT (J + 1)) - 1);
+ WS : Wide_Wide_String (1 .. S'Length);
+ L : Natural;
begin
- W := Natural'Max (W, WS'Length);
+ String_To_Wide_Wide_String (S, WS, L, EM);
+ W := Natural'Max (W, L);
end;
end loop;
@@ -137,12 +141,14 @@ package body System.WWd_Enum is
W := 0;
for J in Lo .. Hi loop
declare
- WS : constant Wide_Wide_String :=
- String_To_Wide_Wide_String
- (Names (Natural (IndexesT (J)) ..
- Natural (IndexesT (J + 1)) - 1), EM);
+ S : constant String :=
+ Names (Natural (IndexesT (J)) ..
+ Natural (IndexesT (J + 1)) - 1);
+ WS : Wide_Wide_String (1 .. S'Length);
+ L : Natural;
begin
- W := Natural'Max (W, WS'Length);
+ String_To_Wide_Wide_String (S, WS, L, EM);
+ W := Natural'Max (W, L);
end;
end loop;
@@ -174,12 +180,14 @@ package body System.WWd_Enum is
W := 0;
for J in Lo .. Hi loop
declare
- WS : constant Wide_String :=
- String_To_Wide_String
- (Names (Natural (IndexesT (J)) ..
- Natural (IndexesT (J + 1)) - 1), EM);
+ S : constant String :=
+ Names (Natural (IndexesT (J)) ..
+ Natural (IndexesT (J + 1)) - 1);
+ WS : Wide_String (1 .. S'Length);
+ L : Natural;
begin
- W := Natural'Max (W, WS'Length);
+ String_To_Wide_String (S, WS, L, EM);
+ W := Natural'Max (W, L);
end;
end loop;
@@ -211,12 +219,14 @@ package body System.WWd_Enum is
W := 0;
for J in Lo .. Hi loop
declare
- WS : constant Wide_String :=
- String_To_Wide_String
- (Names (Natural (IndexesT (J)) ..
- Natural (IndexesT (J + 1)) - 1), EM);
+ S : constant String :=
+ Names (Natural (IndexesT (J)) ..
+ Natural (IndexesT (J + 1)) - 1);
+ WS : Wide_String (1 .. S'Length);
+ L : Natural;
begin
- W := Natural'Max (W, WS'Length);
+ String_To_Wide_String (S, WS, L, EM);
+ W := Natural'Max (W, L);
end;
end loop;
@@ -248,12 +258,14 @@ package body System.WWd_Enum is
W := 0;
for J in Lo .. Hi loop
declare
- WS : constant Wide_String :=
- String_To_Wide_String
- (Names (Natural (IndexesT (J)) ..
- Natural (IndexesT (J + 1)) - 1), EM);
+ S : constant String :=
+ Names (Natural (IndexesT (J)) ..
+ Natural (IndexesT (J + 1)) - 1);
+ WS : Wide_String (1 .. S'Length);
+ L : Natural;
begin
- W := Natural'Max (W, WS'Length);
+ String_To_Wide_String (S, WS, L, EM);
+ W := Natural'Max (W, L);
end;
end loop;
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 8195c8bc8ad..7432a3bd04c 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -41,6 +41,7 @@ with Lib; use Lib;
with Lib.Writ; use Lib.Writ;
with Lib.Xref; use Lib.Xref;
with Namet; use Namet;
+with Namet.Sp; use Namet.Sp;
with Nlists; use Nlists;
with Nmake; use Nmake;
with Opt; use Opt;
@@ -77,8 +78,6 @@ with Uintp; use Uintp;
with Urealp; use Urealp;
with Validsw; use Validsw;
-with GNAT.Spelling_Checker; use GNAT.Spelling_Checker;
-
package body Sem_Prag is
----------------------------------------------
@@ -91,12 +90,12 @@ package body Sem_Prag is
-- form and processing:
-- pragma Export_xxx
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL]
-- [, other optional parameters ]);
-- pragma Import_xxx
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL]
-- [, other optional parameters ]);
@@ -420,7 +419,7 @@ package body Sem_Prag is
procedure Error_Pragma (Msg : String);
pragma No_Return (Error_Pragma);
- -- Outputs error message for current pragma. The message contains an %
+ -- Outputs error message for current pragma. The message contains a %
-- that will be replaced with the pragma name, and the flag is placed
-- on the pragma itself. Pragma_Exit is then raised.
@@ -1725,8 +1724,7 @@ package body Sem_Prag is
for Index1 in Names'Range loop
if Is_Bad_Spelling_Of
- (Get_Name_String (Chars (Arg)),
- Get_Name_String (Names (Index1)))
+ (Chars (Arg), Names (Index1))
then
Error_Msg_Name_1 := Names (Index1);
Error_Msg_N ("\possible misspelling of%", Arg);
@@ -2267,6 +2265,8 @@ package body Sem_Prag is
Error_Pragma ("enumeration literal not allowed for pragma%");
end if;
+ -- Check for rep item appearing too early or too late
+
if Etype (E) = Any_Type
or else Rep_Item_Too_Early (E, N)
then
@@ -2353,10 +2353,6 @@ package body Sem_Prag is
E1 := Homonym (E1);
exit when No (E1) or else Scope (E1) /= Current_Scope;
- -- Note: below we are missing a check for Rep_Item_Too_Late.
- -- That is deliberate, we cannot chain the rep item on more
- -- than one Rep_Item chain, to be fixed later ???
-
if Comes_From_Source (E1)
and then Comp_Unit = Get_Source_Unit (E1)
and then Nkind (Original_Node (Parent (E1))) /=
@@ -2821,7 +2817,6 @@ package body Sem_Prag is
if Is_Generic_Subprogram (Entity (Arg_Internal)) then
Error_Pragma
("pragma% cannot be given for generic subprogram");
-
else
Error_Pragma
("pragma% does not identify local subprogram");
@@ -3345,7 +3340,8 @@ package body Sem_Prag is
-- corresponding body, if there is one present.
procedure Set_Inline_Flags (Subp : Entity_Id);
- -- Sets Is_Inlined and Has_Pragma_Inline flags for Subp
+ -- Sets Is_Inlined and Has_Pragma_Inline flags for Subp and also
+ -- Has_Pragma_Inline_Always for the Inline_Always case.
function Inlining_Not_Possible (Subp : Entity_Id) return Boolean;
-- Returns True if it can be determined at this stage that inlining
@@ -3354,6 +3350,7 @@ package body Sem_Prag is
-- get undefined symbols at link time. This function also emits a
-- warning if front-end inlining is enabled and the pragma appears
-- too late.
+ --
-- ??? is business with link symbols still valid, or does it relate
-- to front end ZCX which is being phased out ???
@@ -3417,7 +3414,16 @@ package body Sem_Prag is
Inner_Subp : Entity_Id := Subp;
begin
+ -- Ignore if bad type, avoid cascaded error
+
if Etype (Subp) = Any_Type then
+ Applies := True;
+ return;
+
+ -- Ignore if all inlining is suppressed
+
+ elsif Suppress_All_Inlining then
+ Applies := True;
return;
-- If inlining is not possible, for now do not treat as an error
@@ -3515,10 +3521,12 @@ package body Sem_Prag is
if not Has_Pragma_Inline (Subp) then
Set_Has_Pragma_Inline (Subp);
- Set_Next_Rep_Item (N, First_Rep_Item (Subp));
- Set_First_Rep_Item (Subp, N);
Effective := True;
end if;
+
+ if Prag_Id = Pragma_Inline_Always then
+ Set_Has_Pragma_Inline_Always (Subp);
+ end if;
end Set_Inline_Flags;
-- Start of processing for Process_Inline
@@ -3565,6 +3573,7 @@ package body Sem_Prag is
elsif not Effective
and then Warn_On_Redundant_Constructs
+ and then not Suppress_All_Inlining
then
if Inlining_Not_Possible (Subp) then
Error_Msg_NE
@@ -4519,15 +4528,13 @@ package body Sem_Prag is
if not Is_Pragma_Name (Chars (N)) then
if Warn_On_Unrecognized_Pragma then
Error_Msg_Name_1 := Chars (N);
- Error_Msg_N ("?unrecognized pragma%!", N);
+ Error_Msg_N ("?unrecognized pragma%!", Pragma_Identifier (N));
for PN in First_Pragma_Name .. Last_Pragma_Name loop
- if Is_Bad_Spelling_Of
- (Get_Name_String (Chars (N)),
- Get_Name_String (PN))
- then
+ if Is_Bad_Spelling_Of (Chars (N), PN) then
Error_Msg_Name_1 := PN;
- Error_Msg_N ("\?possible misspelling of %!", N);
+ Error_Msg_N
+ ("\?possible misspelling of %!", Pragma_Identifier (N));
exit;
end if;
end loop;
@@ -4796,6 +4803,7 @@ package body Sem_Prag is
when Pragma_Assert => Assert : declare
Expr : Node_Id;
+ Eloc : Source_Ptr;
begin
Ada_2005_Pragma;
@@ -4816,23 +4824,30 @@ package body Sem_Prag is
-- null;
-- end if;
- -- The reason we do this rewriting during semantic analysis
- -- rather than as part of normal expansion is that we cannot
- -- analyze and expand the code for the boolean expression
- -- directly, or it may cause insertion of actions that would
- -- escape the attempt to suppress the assertion code.
+ -- The reason we do this rewriting during semantic analysis rather
+ -- than as part of normal expansion is that we cannot analyze and
+ -- expand the code for the boolean expression directly, or it may
+ -- cause insertion of actions that would escape the attempt to
+ -- suppress the assertion code.
+
+ -- Note that the Sloc for the if statement corresponds to the
+ -- argument condition, not the pragma itself. The reason for this
+ -- is that we may generate a warning if the condition is False at
+ -- compile time, and we do not want to delete this warning when we
+ -- delete the if statement.
Expr := Expression (Arg1);
+ Eloc := Sloc (Expr);
if Expander_Active and not Assertions_Enabled then
Rewrite (N,
- Make_If_Statement (Loc,
+ Make_If_Statement (Eloc,
Condition =>
- Make_And_Then (Loc,
- Left_Opnd => New_Occurrence_Of (Standard_False, Loc),
+ Make_And_Then (Eloc,
+ Left_Opnd => New_Occurrence_Of (Standard_False, Eloc),
Right_Opnd => Expr),
Then_Statements => New_List (
- Make_Null_Statement (Loc))));
+ Make_Null_Statement (Eloc))));
Analyze (N);
@@ -5284,7 +5299,7 @@ package body Sem_Prag is
-------------------
-- pragma Common_Object (
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Size =>] EXTERNAL_SYMBOL]);
@@ -5372,8 +5387,8 @@ package body Sem_Prag is
or else Etype (Ent) /= Etype (Next_Entity (Ent))
then
Error_Pragma_Arg
- ("record for pragma% must have two fields of same fpt type",
- Arg1);
+ ("record for pragma% must have two fields of the same "
+ & "floating-point type", Arg1);
else
Set_Has_Complex_Representation (Base_Type (E));
@@ -6179,8 +6194,8 @@ package body Sem_Prag is
----------------------
-- pragma Export_Exception (
- -- [Internal =>] LOCAL_NAME,
- -- [, [External =>] EXTERNAL_SYMBOL,]
+ -- [Internal =>] LOCAL_NAME
+ -- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Form =>] Ada | VMS]
-- [, [Code =>] static_integer_EXPRESSION]);
@@ -6219,8 +6234,8 @@ package body Sem_Prag is
---------------------
-- pragma Export_Function (
- -- [Internal =>] LOCAL_NAME,
- -- [, [External =>] EXTERNAL_SYMBOL,]
+ -- [Internal =>] LOCAL_NAME
+ -- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Parameter_Types =>] (PARAMETER_TYPES)]
-- [, [Result_Type =>] TYPE_DESIGNATOR]
-- [, [Mechanism =>] MECHANISM]
@@ -6286,7 +6301,7 @@ package body Sem_Prag is
-------------------
-- pragma Export_Object (
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Size =>] EXTERNAL_SYMBOL]);
@@ -6341,8 +6356,8 @@ package body Sem_Prag is
----------------------
-- pragma Export_Procedure (
- -- [Internal =>] LOCAL_NAME,
- -- [, [External =>] EXTERNAL_SYMBOL,]
+ -- [Internal =>] LOCAL_NAME
+ -- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Parameter_Types =>] (PARAMETER_TYPES)]
-- [, [Mechanism =>] MECHANISM]);
@@ -6419,7 +6434,7 @@ package body Sem_Prag is
-----------------------------
-- pragma Export_Valued_Procedure (
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL,]
-- [, [Parameter_Types =>] (PARAMETER_TYPES)]
-- [, [Mechanism =>] MECHANISM]);
@@ -6613,6 +6628,48 @@ package body Sem_Prag is
end case;
end External_Name_Casing;
+ --------------------------
+ -- Favor_Top_Level --
+ --------------------------
+
+ -- pragma Favor_Top_Level (type_NAME);
+
+ when Pragma_Favor_Top_Level => Favor_Top_Level : declare
+ Named_Entity : Entity_Id;
+
+ begin
+ GNAT_Pragma;
+ Check_No_Identifiers;
+ Check_Arg_Count (1);
+ Check_Arg_Is_Local_Name (Arg1);
+ Named_Entity := Entity (Expression (Arg1));
+
+ -- If it's an access-to-subprogram type (in particular, not a
+ -- subtype), set the flag on that type.
+
+ if Ekind (Named_Entity) in Access_Subprogram_Type_Kind then
+ Set_Can_Use_Internal_Rep (Named_Entity, False);
+
+ -- Otherwise it's an error (name denotes the wrong sort of entity)
+
+ else
+ Error_Pragma_Arg
+ ("access-to-subprogram type expected", Expression (Arg1));
+ end if;
+ end Favor_Top_Level;
+
+ ---------------
+ -- Fast_Math --
+ ---------------
+
+ -- pragma Fast_Math;
+
+ when Pragma_Fast_Math =>
+ GNAT_Pragma;
+ Check_No_Identifiers;
+ Check_Valid_Configuration_Pragma;
+ Fast_Math := True;
+
---------------------------
-- Finalize_Storage_Only --
---------------------------
@@ -6862,6 +6919,46 @@ package body Sem_Prag is
end;
end Ident;
+ --------------------------
+ -- Implemented_By_Entry --
+ --------------------------
+
+ -- pragma Implemented_By_Entry (DIRECT_NAME);
+
+ when Pragma_Implemented_By_Entry => Implemented_By_Entry : declare
+ Ent : Entity_Id;
+
+ begin
+ Ada_2005_Pragma;
+ Check_Arg_Count (1);
+ Check_No_Identifiers;
+ Check_Arg_Is_Identifier (Arg1);
+ Check_Arg_Is_Local_Name (Arg1);
+ Ent := Entity (Expression (Arg1));
+
+ -- Pragma Implemented_By_Entry must be applied only to protected
+ -- synchronized or task interface primitives.
+
+ if (Ekind (Ent) /= E_Function
+ and then Ekind (Ent) /= E_Procedure)
+ or else not Present (First_Formal (Ent))
+ or else not Is_Concurrent_Interface (Etype (First_Formal (Ent)))
+ then
+ Error_Pragma_Arg
+ ("pragma % must be applied to a concurrent interface " &
+ "primitive", Arg1);
+
+ else
+ if Einfo.Implemented_By_Entry (Ent)
+ and then Warn_On_Redundant_Constructs
+ then
+ Error_Pragma ("?duplicate pragma%!");
+ else
+ Set_Implemented_By_Entry (Ent);
+ end if;
+ end if;
+ end Implemented_By_Entry;
+
-----------------------
-- Implicit_Packing --
-----------------------
@@ -6878,8 +6975,8 @@ package body Sem_Prag is
------------
-- pragma Import (
- -- [ Convention =>] convention_IDENTIFIER,
- -- [ Entity =>] local_NAME
+ -- [Convention =>] convention_IDENTIFIER,
+ -- [Entity =>] local_NAME
-- [, [External_Name =>] static_string_EXPRESSION ]
-- [, [Link_Name =>] static_string_EXPRESSION ]);
@@ -6899,8 +6996,8 @@ package body Sem_Prag is
----------------------
-- pragma Import_Exception (
- -- [Internal =>] LOCAL_NAME,
- -- [, [External =>] EXTERNAL_SYMBOL,]
+ -- [Internal =>] LOCAL_NAME
+ -- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Form =>] Ada | VMS]
-- [, [Code =>] static_integer_EXPRESSION]);
@@ -7012,7 +7109,7 @@ package body Sem_Prag is
-------------------
-- pragma Import_Object (
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Size =>] EXTERNAL_SYMBOL]);
@@ -7045,7 +7142,7 @@ package body Sem_Prag is
----------------------
-- pragma Import_Procedure (
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Parameter_Types =>] (PARAMETER_TYPES)]
-- [, [Mechanism =>] MECHANISM]
@@ -7108,7 +7205,7 @@ package body Sem_Prag is
-----------------------------
-- pragma Import_Valued_Procedure (
- -- [Internal =>] LOCAL_NAME,
+ -- [Internal =>] LOCAL_NAME
-- [, [External =>] EXTERNAL_SYMBOL]
-- [, [Parameter_Types =>] (PARAMETER_TYPES)]
-- [, [Mechanism =>] MECHANISM]
@@ -8070,9 +8167,9 @@ package body Sem_Prag is
-----------------------
-- pragma Machine_Attribute (
- -- [Entity =>] LOCAL_NAME,
- -- [Attribute_Name =>] static_string_EXPRESSION
- -- [,[Info =>] static_string_EXPRESSION] );
+ -- [Entity =>] LOCAL_NAME,
+ -- [Attribute_Name =>] static_string_EXPRESSION
+ -- [, [Info =>] static_string_EXPRESSION] );
when Pragma_Machine_Attribute => Machine_Attribute : declare
Def_Id : Entity_Id;
@@ -8282,6 +8379,13 @@ package body Sem_Prag is
or else Ekind (E) = E_Generic_Procedure
then
Set_No_Return (E);
+
+ -- Set flag on any alias as well
+
+ if Is_Overloadable (E) and then Present (Alias (E)) then
+ Set_No_Return (Alias (E));
+ end if;
+
Found := True;
end if;
@@ -8550,13 +8654,13 @@ package body Sem_Prag is
No_Run_Time_Mode := True;
Configurable_Run_Time_Mode := True;
- declare
- Word32 : constant Boolean := Ttypes.System_Word_Size = 32;
- begin
- if Word32 then
- Duration_32_Bits_On_Target := True;
- end if;
- end;
+ -- Set Duration to 32 bits if word size is 32
+
+ if Ttypes.System_Word_Size = 32 then
+ Duration_32_Bits_On_Target := True;
+ end if;
+
+ -- Set appropriate restrictions
Set_Restriction (No_Finalization, N);
Set_Restriction (No_Exception_Handlers, N);
@@ -8744,12 +8848,31 @@ package body Sem_Prag is
Check_First_Subtype (Arg1);
Ent := Entity (Expression (Arg1));
- if not Is_Private_Type (Ent) then
+ if not Is_Private_Type (Ent)
+ and then not Is_Protected_Type (Ent)
+ then
Error_Pragma_Arg
- ("pragma % can only be applied to private type", Arg1);
+ ("pragma % can only be applied to private or protected type",
+ Arg1);
end if;
- Set_Known_To_Have_Preelab_Init (Ent);
+ -- Give an error if the pragma is applied to a protected type that
+ -- does not qualify (due to having entries, or due to components
+ -- that do not qualify).
+
+ if Is_Protected_Type (Ent)
+ and then not Has_Preelaborable_Initialization (Ent)
+ then
+ Error_Msg_N
+ ("protected type & does not have preelaborable " &
+ "initialization", Ent);
+
+ -- Otherwise mark the type as definitely having preelaborable
+ -- initialization.
+
+ else
+ Set_Known_To_Have_Preelab_Init (Ent);
+ end if;
if Has_Pragma_Preelab_Init (Ent)
and then Warn_On_Redundant_Constructs
@@ -11277,10 +11400,13 @@ package body Sem_Prag is
Pragma_Extend_System => -1,
Pragma_Extensions_Allowed => -1,
Pragma_External => -1,
+ Pragma_Favor_Top_Level => -1,
Pragma_External_Name_Casing => -1,
+ Pragma_Fast_Math => -1,
Pragma_Finalize_Storage_Only => 0,
Pragma_Float_Representation => 0,
Pragma_Ident => -1,
+ Pragma_Implemented_By_Entry => -1,
Pragma_Implicit_Packing => 0,
Pragma_Import => +2,
Pragma_Import_Exception => 0,
diff --git a/gcc/ada/snames.adb b/gcc/ada/snames.adb
index a6693a73af6..b02f7645154 100644
--- a/gcc/ada/snames.adb
+++ b/gcc/ada/snames.adb
@@ -93,8 +93,9 @@ package body Snames is
"_disp_asynchronous_select#" &
"_disp_conditional_select#" &
"_disp_get_prim_op_kind#" &
- "_disp_timed_select#" &
"_disp_get_task_id#" &
+ "_disp_requeue#" &
+ "_disp_timed_select#" &
"initialize#" &
"adjust#" &
"finalize#" &
@@ -194,6 +195,7 @@ package body Snames is
"extend_system#" &
"extensions_allowed#" &
"external_name_casing#" &
+ "favor_top_level#" &
"float_representation#" &
"implicit_packing#" &
"initialize_scalars#" &
@@ -261,6 +263,7 @@ package body Snames is
"external#" &
"finalize_storage_only#" &
"ident#" &
+ "implemented_by_entry#" &
"import#" &
"import_exception#" &
"import_function#" &
@@ -456,6 +459,7 @@ package body Snames is
"epsilon#" &
"exponent#" &
"external_tag#" &
+ "fast_math#" &
"first#" &
"first_bit#" &
"fixed_value#" &
@@ -569,7 +573,6 @@ package body Snames is
"priority_queuing#" &
"edf_across_priorities#" &
"fifo_within_priorities#" &
- "non_preemptive_within_priorities#" &
"round_robin_within_priorities#" &
"access_check#" &
"accessibility_check#" &
@@ -927,6 +930,8 @@ package body Snames is
begin
if N = Name_AST_Entry then
return Pragma_AST_Entry;
+ elsif N = Name_Fast_Math then
+ return Pragma_Fast_Math;
elsif N = Name_Interface then
return Pragma_Interface;
elsif N = Name_Priority then
@@ -955,8 +960,9 @@ package body Snames is
-- Get_Task_Dispatching_Policy_Id --
------------------------------------
- function Get_Task_Dispatching_Policy_Id (N : Name_Id)
- return Task_Dispatching_Policy_Id is
+ function Get_Task_Dispatching_Policy_Id
+ (N : Name_Id) return Task_Dispatching_Policy_Id
+ is
begin
return Task_Dispatching_Policy_Id'Val
(N - First_Task_Dispatching_Policy_Name);
@@ -972,10 +978,8 @@ package body Snames is
begin
P_Index := Preset_Names'First;
-
loop
Name_Len := 0;
-
while Preset_Names (P_Index) /= '#' loop
Name_Len := Name_Len + 1;
Name_Buffer (Name_Len) := Preset_Names (P_Index);
@@ -1024,6 +1028,16 @@ package body Snames is
return N in First_Attribute_Name .. Last_Attribute_Name;
end Is_Attribute_Name;
+ ----------------------------------
+ -- Is_Configuration_Pragma_Name --
+ ----------------------------------
+
+ function Is_Configuration_Pragma_Name (N : Name_Id) return Boolean is
+ begin
+ return N in First_Pragma_Name .. Last_Configuration_Pragma_Name
+ or else N = Name_Fast_Math;
+ end Is_Configuration_Pragma_Name;
+
------------------------
-- Is_Convention_Name --
------------------------
@@ -1109,6 +1123,7 @@ package body Snames is
begin
return N in First_Pragma_Name .. Last_Pragma_Name
or else N = Name_AST_Entry
+ or else N = Name_Fast_Math
or else N = Name_Interface
or else N = Name_Priority
or else N = Name_Storage_Size
diff --git a/gcc/ada/snames.ads b/gcc/ada/snames.ads
index f2e7be91568..494e79f1223 100644
--- a/gcc/ada/snames.ads
+++ b/gcc/ada/snames.ads
@@ -42,6 +42,7 @@ package Snames is
-- WARNING: There is a C file, a-snames.h which duplicates some of the
-- definitions in this file and must be kept properly synchronized.
+-- If you change this package, you should run xsnames.
------------------
-- Preset Names --
@@ -173,142 +174,139 @@ package Snames is
Name_uTask_Name : constant Name_Id := N + 030;
Name_uTrace_Sp : constant Name_Id := N + 031;
- -- Names of routines used in the expansion of asynchronous, conditional
- -- and timed dispatching selects.
+ -- Names of predefined primitives used in the expansion of dispatching
+ -- requeue and select statements, Abort, 'Callable and 'Terminated.
Name_uDisp_Asynchronous_Select : constant Name_Id := N + 032;
Name_uDisp_Conditional_Select : constant Name_Id := N + 033;
Name_uDisp_Get_Prim_Op_Kind : constant Name_Id := N + 034;
- Name_uDisp_Timed_Select : constant Name_Id := N + 035;
-
- -- Names of routines used in the expansion of Abort, attributes 'Callable
- -- and 'Terminated for task interface class-wide types.
-
- Name_uDisp_Get_Task_Id : constant Name_Id := N + 036;
+ Name_uDisp_Get_Task_Id : constant Name_Id := N + 035;
+ Name_uDisp_Requeue : constant Name_Id := N + 036;
+ Name_uDisp_Timed_Select : constant Name_Id := N + 037;
-- Names of routines in Ada.Finalization, needed by expander
- Name_Initialize : constant Name_Id := N + 037;
- Name_Adjust : constant Name_Id := N + 038;
- Name_Finalize : constant Name_Id := N + 039;
+ Name_Initialize : constant Name_Id := N + 038;
+ Name_Adjust : constant Name_Id := N + 039;
+ Name_Finalize : constant Name_Id := N + 040;
-- Names of fields declared in System.Finalization_Implementation,
-- needed by the expander when generating code for finalization.
- Name_Next : constant Name_Id := N + 040;
- Name_Prev : constant Name_Id := N + 041;
+ Name_Next : constant Name_Id := N + 041;
+ Name_Prev : constant Name_Id := N + 042;
-- Names of TSS routines for implementation of DSA over PolyORB
- Name_uTypeCode : constant Name_Id := N + 042;
- Name_uFrom_Any : constant Name_Id := N + 043;
- Name_uTo_Any : constant Name_Id := N + 044;
+ Name_uTypeCode : constant Name_Id := N + 043;
+ Name_uFrom_Any : constant Name_Id := N + 044;
+ Name_uTo_Any : constant Name_Id := N + 045;
-- Names of allocation routines, also needed by expander
- Name_Allocate : constant Name_Id := N + 045;
- Name_Deallocate : constant Name_Id := N + 046;
- Name_Dereference : constant Name_Id := N + 047;
+ Name_Allocate : constant Name_Id := N + 046;
+ Name_Deallocate : constant Name_Id := N + 047;
+ Name_Dereference : constant Name_Id := N + 048;
-- Names of Text_IO generic subpackages (see Rtsfind.Text_IO_Kludge)
- First_Text_IO_Package : constant Name_Id := N + 048;
- Name_Decimal_IO : constant Name_Id := N + 048;
- Name_Enumeration_IO : constant Name_Id := N + 049;
- Name_Fixed_IO : constant Name_Id := N + 050;
- Name_Float_IO : constant Name_Id := N + 051;
- Name_Integer_IO : constant Name_Id := N + 052;
- Name_Modular_IO : constant Name_Id := N + 053;
- Last_Text_IO_Package : constant Name_Id := N + 053;
+ First_Text_IO_Package : constant Name_Id := N + 049;
+ Name_Decimal_IO : constant Name_Id := N + 049;
+ Name_Enumeration_IO : constant Name_Id := N + 050;
+ Name_Fixed_IO : constant Name_Id := N + 051;
+ Name_Float_IO : constant Name_Id := N + 052;
+ Name_Integer_IO : constant Name_Id := N + 053;
+ Name_Modular_IO : constant Name_Id := N + 054;
+ Last_Text_IO_Package : constant Name_Id := N + 054;
subtype Text_IO_Package_Name is Name_Id
range First_Text_IO_Package .. Last_Text_IO_Package;
-- Some miscellaneous names used for error detection/recovery
- Name_Const : constant Name_Id := N + 054;
- Name_Error : constant Name_Id := N + 055;
- Name_Go : constant Name_Id := N + 056;
- Name_Put : constant Name_Id := N + 057;
- Name_Put_Line : constant Name_Id := N + 058;
- Name_To : constant Name_Id := N + 059;
+ Name_Const : constant Name_Id := N + 055;
+ Name_Error : constant Name_Id := N + 056;
+ Name_Go : constant Name_Id := N + 057;
+ Name_Put : constant Name_Id := N + 058;
+ Name_Put_Line : constant Name_Id := N + 059;
+ Name_To : constant Name_Id := N + 060;
-- Names for packages that are treated specially by the compiler
- Name_Exception_Traces : constant Name_Id := N + 060;
- Name_Finalization : constant Name_Id := N + 061;
- Name_Finalization_Root : constant Name_Id := N + 062;
- Name_Interfaces : constant Name_Id := N + 063;
- Name_Most_Recent_Exception : constant Name_Id := N + 064;
- Name_Standard : constant Name_Id := N + 065;
- Name_System : constant Name_Id := N + 066;
- Name_Text_IO : constant Name_Id := N + 067;
- Name_Wide_Text_IO : constant Name_Id := N + 068;
- Name_Wide_Wide_Text_IO : constant Name_Id := N + 069;
+ Name_Exception_Traces : constant Name_Id := N + 061;
+ Name_Finalization : constant Name_Id := N + 062;
+ Name_Finalization_Root : constant Name_Id := N + 063;
+ Name_Interfaces : constant Name_Id := N + 064;
+ Name_Most_Recent_Exception : constant Name_Id := N + 065;
+ Name_Standard : constant Name_Id := N + 066;
+ Name_System : constant Name_Id := N + 067;
+ Name_Text_IO : constant Name_Id := N + 068;
+ Name_Wide_Text_IO : constant Name_Id := N + 069;
+ Name_Wide_Wide_Text_IO : constant Name_Id := N + 070;
-- Names of implementations of the distributed systems annex
- First_PCS_Name : constant Name_Id := N + 070;
- Name_No_DSA : constant Name_Id := N + 070;
- Name_GARLIC_DSA : constant Name_Id := N + 071;
- Name_PolyORB_DSA : constant Name_Id := N + 072;
- Last_PCS_Name : constant Name_Id := N + 072;
+ First_PCS_Name : constant Name_Id := N + 071;
+ Name_No_DSA : constant Name_Id := N + 071;
+ Name_GARLIC_DSA : constant Name_Id := N + 072;
+ Name_PolyORB_DSA : constant Name_Id := N + 073;
+ Last_PCS_Name : constant Name_Id := N + 073;
subtype PCS_Names is Name_Id
range First_PCS_Name .. Last_PCS_Name;
-- Names of identifiers used in expanding distribution stubs
- Name_Addr : constant Name_Id := N + 073;
- Name_Async : constant Name_Id := N + 074;
- Name_Get_Active_Partition_ID : constant Name_Id := N + 075;
- Name_Get_RCI_Package_Receiver : constant Name_Id := N + 076;
- Name_Get_RCI_Package_Ref : constant Name_Id := N + 077;
- Name_Origin : constant Name_Id := N + 078;
- Name_Params : constant Name_Id := N + 079;
- Name_Partition : constant Name_Id := N + 080;
- Name_Partition_Interface : constant Name_Id := N + 081;
- Name_Ras : constant Name_Id := N + 082;
- Name_uCall : constant Name_Id := N + 083;
- Name_RCI_Name : constant Name_Id := N + 084;
- Name_Receiver : constant Name_Id := N + 085;
- Name_Result : constant Name_Id := N + 086;
- Name_Rpc : constant Name_Id := N + 087;
- Name_Subp_Id : constant Name_Id := N + 088;
- Name_Operation : constant Name_Id := N + 089;
- Name_Argument : constant Name_Id := N + 090;
- Name_Arg_Modes : constant Name_Id := N + 091;
- Name_Handler : constant Name_Id := N + 092;
- Name_Target : constant Name_Id := N + 093;
- Name_Req : constant Name_Id := N + 094;
- Name_Obj_TypeCode : constant Name_Id := N + 095;
- Name_Stub : constant Name_Id := N + 096;
+ Name_Addr : constant Name_Id := N + 074;
+ Name_Async : constant Name_Id := N + 075;
+ Name_Get_Active_Partition_ID : constant Name_Id := N + 076;
+ Name_Get_RCI_Package_Receiver : constant Name_Id := N + 077;
+ Name_Get_RCI_Package_Ref : constant Name_Id := N + 078;
+ Name_Origin : constant Name_Id := N + 079;
+ Name_Params : constant Name_Id := N + 080;
+ Name_Partition : constant Name_Id := N + 081;
+ Name_Partition_Interface : constant Name_Id := N + 082;
+ Name_Ras : constant Name_Id := N + 083;
+ Name_uCall : constant Name_Id := N + 084;
+ Name_RCI_Name : constant Name_Id := N + 085;
+ Name_Receiver : constant Name_Id := N + 086;
+ Name_Result : constant Name_Id := N + 087;
+ Name_Rpc : constant Name_Id := N + 088;
+ Name_Subp_Id : constant Name_Id := N + 089;
+ Name_Operation : constant Name_Id := N + 090;
+ Name_Argument : constant Name_Id := N + 091;
+ Name_Arg_Modes : constant Name_Id := N + 092;
+ Name_Handler : constant Name_Id := N + 093;
+ Name_Target : constant Name_Id := N + 094;
+ Name_Req : constant Name_Id := N + 095;
+ Name_Obj_TypeCode : constant Name_Id := N + 096;
+ Name_Stub : constant Name_Id := N + 097;
-- Operator Symbol entries. The actual names have an upper case O at
-- the start in place of the Op_ prefix (e.g. the actual name that
-- corresponds to Name_Op_Abs is "Oabs".
- First_Operator_Name : constant Name_Id := N + 097;
- Name_Op_Abs : constant Name_Id := N + 097; -- "abs"
- Name_Op_And : constant Name_Id := N + 098; -- "and"
- Name_Op_Mod : constant Name_Id := N + 099; -- "mod"
- Name_Op_Not : constant Name_Id := N + 100; -- "not"
- Name_Op_Or : constant Name_Id := N + 101; -- "or"
- Name_Op_Rem : constant Name_Id := N + 102; -- "rem"
- Name_Op_Xor : constant Name_Id := N + 103; -- "xor"
- Name_Op_Eq : constant Name_Id := N + 104; -- "="
- Name_Op_Ne : constant Name_Id := N + 105; -- "/="
- Name_Op_Lt : constant Name_Id := N + 106; -- "<"
- Name_Op_Le : constant Name_Id := N + 107; -- "<="
- Name_Op_Gt : constant Name_Id := N + 108; -- ">"
- Name_Op_Ge : constant Name_Id := N + 109; -- ">="
- Name_Op_Add : constant Name_Id := N + 110; -- "+"
- Name_Op_Subtract : constant Name_Id := N + 111; -- "-"
- Name_Op_Concat : constant Name_Id := N + 112; -- "&"
- Name_Op_Multiply : constant Name_Id := N + 113; -- "*"
- Name_Op_Divide : constant Name_Id := N + 114; -- "/"
- Name_Op_Expon : constant Name_Id := N + 115; -- "**"
- Last_Operator_Name : constant Name_Id := N + 115;
+ First_Operator_Name : constant Name_Id := N + 098;
+ Name_Op_Abs : constant Name_Id := N + 098; -- "abs"
+ Name_Op_And : constant Name_Id := N + 099; -- "and"
+ Name_Op_Mod : constant Name_Id := N + 100; -- "mod"
+ Name_Op_Not : constant Name_Id := N + 101; -- "not"
+ Name_Op_Or : constant Name_Id := N + 102; -- "or"
+ Name_Op_Rem : constant Name_Id := N + 103; -- "rem"
+ Name_Op_Xor : constant Name_Id := N + 104; -- "xor"
+ Name_Op_Eq : constant Name_Id := N + 105; -- "="
+ Name_Op_Ne : constant Name_Id := N + 106; -- "/="
+ Name_Op_Lt : constant Name_Id := N + 107; -- "<"
+ Name_Op_Le : constant Name_Id := N + 108; -- "<="
+ Name_Op_Gt : constant Name_Id := N + 109; -- ">"
+ Name_Op_Ge : constant Name_Id := N + 110; -- ">="
+ Name_Op_Add : constant Name_Id := N + 111; -- "+"
+ Name_Op_Subtract : constant Name_Id := N + 112; -- "-"
+ Name_Op_Concat : constant Name_Id := N + 113; -- "&"
+ Name_Op_Multiply : constant Name_Id := N + 114; -- "*"
+ Name_Op_Divide : constant Name_Id := N + 115; -- "/"
+ Name_Op_Expon : constant Name_Id := N + 116; -- "**"
+ Last_Operator_Name : constant Name_Id := N + 116;
-- Names for all pragmas recognized by GNAT. The entries with the comment
-- "Ada 83" are pragmas that are defined in Ada 83, but not in Ada 95.
@@ -331,193 +329,203 @@ package Snames is
-- only in GNAT for the AAMP. They are ignored in other versions with
-- appropriate warnings.
- First_Pragma_Name : constant Name_Id := N + 116;
+ First_Pragma_Name : constant Name_Id := N + 117;
-- Configuration pragmas are grouped at start
- Name_Ada_83 : constant Name_Id := N + 116; -- GNAT
- Name_Ada_95 : constant Name_Id := N + 117; -- GNAT
- Name_Ada_05 : constant Name_Id := N + 118; -- GNAT
- Name_Ada_2005 : constant Name_Id := N + 119; -- GNAT
- Name_Assertion_Policy : constant Name_Id := N + 120; -- Ada 05
- Name_C_Pass_By_Copy : constant Name_Id := N + 121; -- GNAT
- Name_Check_Name : constant Name_Id := N + 122; -- GNAT
- Name_Compile_Time_Error : constant Name_Id := N + 123; -- GNAT
- Name_Compile_Time_Warning : constant Name_Id := N + 124; -- GNAT
- Name_Compiler_Unit : constant Name_Id := N + 125; -- GNAT
- Name_Component_Alignment : constant Name_Id := N + 126; -- GNAT
- Name_Convention_Identifier : constant Name_Id := N + 127; -- GNAT
- Name_Debug_Policy : constant Name_Id := N + 128; -- GNAT
- Name_Detect_Blocking : constant Name_Id := N + 129; -- Ada 05
- Name_Discard_Names : constant Name_Id := N + 130;
- Name_Elaboration_Checks : constant Name_Id := N + 131; -- GNAT
- Name_Eliminate : constant Name_Id := N + 132; -- GNAT
- Name_Extend_System : constant Name_Id := N + 133; -- GNAT
- Name_Extensions_Allowed : constant Name_Id := N + 134; -- GNAT
- Name_External_Name_Casing : constant Name_Id := N + 135; -- GNAT
- Name_Float_Representation : constant Name_Id := N + 136; -- GNAT
- Name_Implicit_Packing : constant Name_Id := N + 137; -- GNAT
- Name_Initialize_Scalars : constant Name_Id := N + 138; -- GNAT
- Name_Interrupt_State : constant Name_Id := N + 139; -- GNAT
- Name_License : constant Name_Id := N + 140; -- GNAT
- Name_Locking_Policy : constant Name_Id := N + 141;
- Name_Long_Float : constant Name_Id := N + 142; -- VMS
- Name_No_Run_Time : constant Name_Id := N + 143; -- GNAT
- Name_No_Strict_Aliasing : constant Name_Id := N + 144; -- GNAT
- Name_Normalize_Scalars : constant Name_Id := N + 145;
- Name_Polling : constant Name_Id := N + 146; -- GNAT
- Name_Persistent_BSS : constant Name_Id := N + 147; -- GNAT
- Name_Priority_Specific_Dispatching : constant Name_Id := N + 148; -- Ada 05
- Name_Profile : constant Name_Id := N + 149; -- Ada 05
- Name_Profile_Warnings : constant Name_Id := N + 150; -- GNAT
- Name_Propagate_Exceptions : constant Name_Id := N + 151; -- GNAT
- Name_Queuing_Policy : constant Name_Id := N + 152;
- Name_Ravenscar : constant Name_Id := N + 153; -- GNAT
- Name_Restricted_Run_Time : constant Name_Id := N + 154; -- GNAT
- Name_Restrictions : constant Name_Id := N + 155;
- Name_Restriction_Warnings : constant Name_Id := N + 156; -- GNAT
- Name_Reviewable : constant Name_Id := N + 157;
- Name_Source_File_Name : constant Name_Id := N + 158; -- GNAT
- Name_Source_File_Name_Project : constant Name_Id := N + 159; -- GNAT
- Name_Style_Checks : constant Name_Id := N + 160; -- GNAT
- Name_Suppress : constant Name_Id := N + 161;
- Name_Suppress_Exception_Locations : constant Name_Id := N + 162; -- GNAT
- Name_Task_Dispatching_Policy : constant Name_Id := N + 163;
- Name_Universal_Data : constant Name_Id := N + 164; -- AAMP
- Name_Unsuppress : constant Name_Id := N + 165; -- GNAT
- Name_Use_VADS_Size : constant Name_Id := N + 166; -- GNAT
- Name_Validity_Checks : constant Name_Id := N + 167; -- GNAT
- Name_Warnings : constant Name_Id := N + 168; -- GNAT
- Name_Wide_Character_Encoding : constant Name_Id := N + 169; -- GNAT
- Last_Configuration_Pragma_Name : constant Name_Id := N + 169;
+ Name_Ada_83 : constant Name_Id := N + 117; -- GNAT
+ Name_Ada_95 : constant Name_Id := N + 118; -- GNAT
+ Name_Ada_05 : constant Name_Id := N + 119; -- GNAT
+ Name_Ada_2005 : constant Name_Id := N + 120; -- GNAT
+ Name_Assertion_Policy : constant Name_Id := N + 121; -- Ada 05
+ Name_C_Pass_By_Copy : constant Name_Id := N + 122; -- GNAT
+ Name_Check_Name : constant Name_Id := N + 123; -- GNAT
+ Name_Compile_Time_Error : constant Name_Id := N + 124; -- GNAT
+ Name_Compile_Time_Warning : constant Name_Id := N + 125; -- GNAT
+ Name_Compiler_Unit : constant Name_Id := N + 126; -- GNAT
+ Name_Component_Alignment : constant Name_Id := N + 127; -- GNAT
+ Name_Convention_Identifier : constant Name_Id := N + 128; -- GNAT
+ Name_Debug_Policy : constant Name_Id := N + 129; -- GNAT
+ Name_Detect_Blocking : constant Name_Id := N + 130; -- Ada 05
+ Name_Discard_Names : constant Name_Id := N + 131;
+ Name_Elaboration_Checks : constant Name_Id := N + 132; -- GNAT
+ Name_Eliminate : constant Name_Id := N + 133; -- GNAT
+ Name_Extend_System : constant Name_Id := N + 134; -- GNAT
+ Name_Extensions_Allowed : constant Name_Id := N + 135; -- GNAT
+ Name_External_Name_Casing : constant Name_Id := N + 136; -- GNAT
+ Name_Favor_Top_Level : constant Name_Id := N + 137; -- GNAT
+
+ -- Note: Fast_Math is not in this list because its name matches -- GNAT
+ -- the name of the corresponding attribute. However, it is
+ -- included in the definition of the type Pragma_Id, and the
+ -- functions Get_Pragma_Id, Is_[Configuration_]Pragma_Id, and
+ -- correctly recognize and process Fast_Math.
+
+ Name_Float_Representation : constant Name_Id := N + 138; -- GNAT
+ Name_Implicit_Packing : constant Name_Id := N + 139; -- GNAT
+ Name_Initialize_Scalars : constant Name_Id := N + 140; -- GNAT
+ Name_Interrupt_State : constant Name_Id := N + 141; -- GNAT
+ Name_License : constant Name_Id := N + 142; -- GNAT
+ Name_Locking_Policy : constant Name_Id := N + 143;
+ Name_Long_Float : constant Name_Id := N + 144; -- VMS
+ Name_No_Run_Time : constant Name_Id := N + 145; -- GNAT
+ Name_No_Strict_Aliasing : constant Name_Id := N + 146; -- GNAT
+ Name_Normalize_Scalars : constant Name_Id := N + 147;
+ Name_Polling : constant Name_Id := N + 148; -- GNAT
+ Name_Persistent_BSS : constant Name_Id := N + 149; -- GNAT
+ Name_Priority_Specific_Dispatching : constant Name_Id := N + 150; -- Ada 05
+ Name_Profile : constant Name_Id := N + 151; -- Ada 05
+ Name_Profile_Warnings : constant Name_Id := N + 152; -- GNAT
+ Name_Propagate_Exceptions : constant Name_Id := N + 153; -- GNAT
+ Name_Queuing_Policy : constant Name_Id := N + 154;
+ Name_Ravenscar : constant Name_Id := N + 155; -- GNAT
+ Name_Restricted_Run_Time : constant Name_Id := N + 156; -- GNAT
+ Name_Restrictions : constant Name_Id := N + 157;
+ Name_Restriction_Warnings : constant Name_Id := N + 158; -- GNAT
+ Name_Reviewable : constant Name_Id := N + 159;
+ Name_Source_File_Name : constant Name_Id := N + 160; -- GNAT
+ Name_Source_File_Name_Project : constant Name_Id := N + 161; -- GNAT
+ Name_Style_Checks : constant Name_Id := N + 162; -- GNAT
+ Name_Suppress : constant Name_Id := N + 163;
+ Name_Suppress_Exception_Locations : constant Name_Id := N + 164; -- GNAT
+ Name_Task_Dispatching_Policy : constant Name_Id := N + 165;
+ Name_Universal_Data : constant Name_Id := N + 166; -- AAMP
+ Name_Unsuppress : constant Name_Id := N + 167; -- GNAT
+ Name_Use_VADS_Size : constant Name_Id := N + 168; -- GNAT
+ Name_Validity_Checks : constant Name_Id := N + 169; -- GNAT
+ Name_Warnings : constant Name_Id := N + 170; -- GNAT
+ Name_Wide_Character_Encoding : constant Name_Id := N + 171; -- GNAT
+ Last_Configuration_Pragma_Name : constant Name_Id := N + 171;
-- Remaining pragma names
- Name_Abort_Defer : constant Name_Id := N + 170; -- GNAT
- Name_All_Calls_Remote : constant Name_Id := N + 171;
- Name_Annotate : constant Name_Id := N + 172; -- GNAT
-
- -- Note: AST_Entry is not in this list because its name matches the
- -- name of the corresponding attribute. However, it is included in the
- -- definition of the type Pragma_Id, and the functions Get_Pragma_Id
- -- and Check_Pragma_Id correctly recognize and process Name_AST_Entry.
- -- AST_Entry is a VMS specific pragma.
-
- Name_Assert : constant Name_Id := N + 173; -- Ada 05
- Name_Asynchronous : constant Name_Id := N + 174;
- Name_Atomic : constant Name_Id := N + 175;
- Name_Atomic_Components : constant Name_Id := N + 176;
- Name_Attach_Handler : constant Name_Id := N + 177;
- Name_CIL_Constructor : constant Name_Id := N + 178; -- GNAT
- Name_Comment : constant Name_Id := N + 179; -- GNAT
- Name_Common_Object : constant Name_Id := N + 180; -- GNAT
- Name_Complete_Representation : constant Name_Id := N + 181; -- GNAT
- Name_Complex_Representation : constant Name_Id := N + 182; -- GNAT
- Name_Controlled : constant Name_Id := N + 183;
- Name_Convention : constant Name_Id := N + 184;
- Name_CPP_Class : constant Name_Id := N + 185; -- GNAT
- Name_CPP_Constructor : constant Name_Id := N + 186; -- GNAT
- Name_CPP_Virtual : constant Name_Id := N + 187; -- GNAT
- Name_CPP_Vtable : constant Name_Id := N + 188; -- GNAT
- Name_Debug : constant Name_Id := N + 189; -- GNAT
- Name_Elaborate : constant Name_Id := N + 190; -- Ada 83
- Name_Elaborate_All : constant Name_Id := N + 191;
- Name_Elaborate_Body : constant Name_Id := N + 192;
- Name_Export : constant Name_Id := N + 193;
- Name_Export_Exception : constant Name_Id := N + 194; -- VMS
- Name_Export_Function : constant Name_Id := N + 195; -- GNAT
- Name_Export_Object : constant Name_Id := N + 196; -- GNAT
- Name_Export_Procedure : constant Name_Id := N + 197; -- GNAT
- Name_Export_Value : constant Name_Id := N + 198; -- GNAT
- Name_Export_Valued_Procedure : constant Name_Id := N + 199; -- GNAT
- Name_External : constant Name_Id := N + 200; -- GNAT
- Name_Finalize_Storage_Only : constant Name_Id := N + 201; -- GNAT
- Name_Ident : constant Name_Id := N + 202; -- VMS
- Name_Import : constant Name_Id := N + 203;
- Name_Import_Exception : constant Name_Id := N + 204; -- VMS
- Name_Import_Function : constant Name_Id := N + 205; -- GNAT
- Name_Import_Object : constant Name_Id := N + 206; -- GNAT
- Name_Import_Procedure : constant Name_Id := N + 207; -- GNAT
- Name_Import_Valued_Procedure : constant Name_Id := N + 208; -- GNAT
- Name_Inline : constant Name_Id := N + 209;
- Name_Inline_Always : constant Name_Id := N + 210; -- GNAT
- Name_Inline_Generic : constant Name_Id := N + 211; -- GNAT
- Name_Inspection_Point : constant Name_Id := N + 212;
- Name_Interface_Name : constant Name_Id := N + 213; -- GNAT
- Name_Interrupt_Handler : constant Name_Id := N + 214;
- Name_Interrupt_Priority : constant Name_Id := N + 215;
- Name_Java_Constructor : constant Name_Id := N + 216; -- GNAT
- Name_Java_Interface : constant Name_Id := N + 217; -- GNAT
- Name_Keep_Names : constant Name_Id := N + 218; -- GNAT
- Name_Link_With : constant Name_Id := N + 219; -- GNAT
- Name_Linker_Alias : constant Name_Id := N + 220; -- GNAT
- Name_Linker_Constructor : constant Name_Id := N + 221; -- GNAT
- Name_Linker_Destructor : constant Name_Id := N + 222; -- GNAT
- Name_Linker_Options : constant Name_Id := N + 223;
- Name_Linker_Section : constant Name_Id := N + 224; -- GNAT
- Name_List : constant Name_Id := N + 225;
- Name_Machine_Attribute : constant Name_Id := N + 226; -- GNAT
- Name_Main : constant Name_Id := N + 227; -- GNAT
- Name_Main_Storage : constant Name_Id := N + 228; -- GNAT
- Name_Memory_Size : constant Name_Id := N + 229; -- Ada 83
- Name_No_Body : constant Name_Id := N + 230; -- GNAT
- Name_No_Return : constant Name_Id := N + 231; -- GNAT
- Name_Obsolescent : constant Name_Id := N + 232; -- GNAT
- Name_Optimize : constant Name_Id := N + 233;
- Name_Pack : constant Name_Id := N + 234;
- Name_Page : constant Name_Id := N + 235;
- Name_Passive : constant Name_Id := N + 236; -- GNAT
- Name_Preelaborable_Initialization : constant Name_Id := N + 237; -- Ada 05
- Name_Preelaborate : constant Name_Id := N + 238;
- Name_Preelaborate_05 : constant Name_Id := N + 239; -- GNAT
-
- -- Note: Priority is not in this list because its name matches the
- -- name of the corresponding attribute. However, it is included in the
- -- definition of the type Pragma_Id, and the functions Get_Pragma_Id
- -- and Check_Pragma_Id correctly recognize and process Priority.
- -- Priority is a standard Ada 95 pragma.
-
- Name_Psect_Object : constant Name_Id := N + 240; -- VMS
- Name_Pure : constant Name_Id := N + 241;
- Name_Pure_05 : constant Name_Id := N + 242; -- GNAT
- Name_Pure_Function : constant Name_Id := N + 243; -- GNAT
- Name_Remote_Call_Interface : constant Name_Id := N + 244;
- Name_Remote_Types : constant Name_Id := N + 245;
- Name_Share_Generic : constant Name_Id := N + 246; -- GNAT
- Name_Shared : constant Name_Id := N + 247; -- Ada 83
- Name_Shared_Passive : constant Name_Id := N + 248;
-
- -- Note: Storage_Size is not in this list because its name matches the
- -- name of the corresponding attribute. However, it is included in the
- -- definition of the type Attribute_Id, and the functions Get_Pragma_Id
- -- and Check_Pragma_Id correctly recognize and process Name_Storage_Size.
-
- -- Note: Storage_Unit is also omitted from the list because of a clash
- -- with an attribute name, and is treated similarly.
-
- Name_Source_Reference : constant Name_Id := N + 249; -- GNAT
- Name_Static_Elaboration_Desired : constant Name_Id := N + 250; -- GNAT
- Name_Stream_Convert : constant Name_Id := N + 251; -- GNAT
- Name_Subtitle : constant Name_Id := N + 252; -- GNAT
- Name_Suppress_All : constant Name_Id := N + 253; -- GNAT
- Name_Suppress_Debug_Info : constant Name_Id := N + 254; -- GNAT
- Name_Suppress_Initialization : constant Name_Id := N + 255; -- GNAT
- Name_System_Name : constant Name_Id := N + 256; -- Ada 83
- Name_Task_Info : constant Name_Id := N + 257; -- GNAT
- Name_Task_Name : constant Name_Id := N + 258; -- GNAT
- Name_Task_Storage : constant Name_Id := N + 259; -- VMS
- Name_Time_Slice : constant Name_Id := N + 260; -- GNAT
- Name_Title : constant Name_Id := N + 261; -- GNAT
- Name_Unchecked_Union : constant Name_Id := N + 262; -- GNAT
- Name_Unimplemented_Unit : constant Name_Id := N + 263; -- GNAT
- Name_Universal_Aliasing : constant Name_Id := N + 264; -- GNAT
- Name_Unreferenced : constant Name_Id := N + 265; -- GNAT
- Name_Unreferenced_Objects : constant Name_Id := N + 266; -- GNAT
- Name_Unreserve_All_Interrupts : constant Name_Id := N + 267; -- GNAT
- Name_Volatile : constant Name_Id := N + 268;
- Name_Volatile_Components : constant Name_Id := N + 269;
- Name_Weak_External : constant Name_Id := N + 270; -- GNAT
- Last_Pragma_Name : constant Name_Id := N + 270;
+ Name_Abort_Defer : constant Name_Id := N + 172; -- GNAT
+ Name_All_Calls_Remote : constant Name_Id := N + 173;
+ Name_Annotate : constant Name_Id := N + 174; -- GNAT
+
+ -- Note: AST_Entry is not in this list because its name matches -- VMS
+ -- the name of the corresponding attribute. However, it is
+ -- included in the definition of the type Pragma_Id, and the
+ -- functions Get_Pragma_Id and Is_Pragma_Id correctly recognize
+ -- and process Name_AST_Entry.
+
+ Name_Assert : constant Name_Id := N + 175; -- Ada 05
+ Name_Asynchronous : constant Name_Id := N + 176;
+ Name_Atomic : constant Name_Id := N + 177;
+ Name_Atomic_Components : constant Name_Id := N + 178;
+ Name_Attach_Handler : constant Name_Id := N + 179;
+ Name_CIL_Constructor : constant Name_Id := N + 180; -- GNAT
+ Name_Comment : constant Name_Id := N + 181; -- GNAT
+ Name_Common_Object : constant Name_Id := N + 182; -- GNAT
+ Name_Complete_Representation : constant Name_Id := N + 183; -- GNAT
+ Name_Complex_Representation : constant Name_Id := N + 184; -- GNAT
+ Name_Controlled : constant Name_Id := N + 185;
+ Name_Convention : constant Name_Id := N + 186;
+ Name_CPP_Class : constant Name_Id := N + 187; -- GNAT
+ Name_CPP_Constructor : constant Name_Id := N + 188; -- GNAT
+ Name_CPP_Virtual : constant Name_Id := N + 189; -- GNAT
+ Name_CPP_Vtable : constant Name_Id := N + 190; -- GNAT
+ Name_Debug : constant Name_Id := N + 191; -- GNAT
+ Name_Elaborate : constant Name_Id := N + 192; -- Ada 83
+ Name_Elaborate_All : constant Name_Id := N + 193;
+ Name_Elaborate_Body : constant Name_Id := N + 194;
+ Name_Export : constant Name_Id := N + 195;
+ Name_Export_Exception : constant Name_Id := N + 196; -- VMS
+ Name_Export_Function : constant Name_Id := N + 197; -- GNAT
+ Name_Export_Object : constant Name_Id := N + 198; -- GNAT
+ Name_Export_Procedure : constant Name_Id := N + 199; -- GNAT
+ Name_Export_Value : constant Name_Id := N + 200; -- GNAT
+ Name_Export_Valued_Procedure : constant Name_Id := N + 201; -- GNAT
+ Name_External : constant Name_Id := N + 202; -- GNAT
+ Name_Finalize_Storage_Only : constant Name_Id := N + 203; -- GNAT
+ Name_Ident : constant Name_Id := N + 204; -- VMS
+ Name_Implemented_By_Entry : constant Name_Id := N + 205; -- Ada 05
+ Name_Import : constant Name_Id := N + 206;
+ Name_Import_Exception : constant Name_Id := N + 207; -- VMS
+ Name_Import_Function : constant Name_Id := N + 208; -- GNAT
+ Name_Import_Object : constant Name_Id := N + 209; -- GNAT
+ Name_Import_Procedure : constant Name_Id := N + 210; -- GNAT
+ Name_Import_Valued_Procedure : constant Name_Id := N + 211; -- GNAT
+ Name_Inline : constant Name_Id := N + 212;
+ Name_Inline_Always : constant Name_Id := N + 213; -- GNAT
+ Name_Inline_Generic : constant Name_Id := N + 214; -- GNAT
+ Name_Inspection_Point : constant Name_Id := N + 215;
+ Name_Interface_Name : constant Name_Id := N + 216; -- GNAT
+ Name_Interrupt_Handler : constant Name_Id := N + 217;
+ Name_Interrupt_Priority : constant Name_Id := N + 218;
+ Name_Java_Constructor : constant Name_Id := N + 219; -- GNAT
+ Name_Java_Interface : constant Name_Id := N + 220; -- GNAT
+ Name_Keep_Names : constant Name_Id := N + 221; -- GNAT
+ Name_Link_With : constant Name_Id := N + 222; -- GNAT
+ Name_Linker_Alias : constant Name_Id := N + 223; -- GNAT
+ Name_Linker_Constructor : constant Name_Id := N + 224; -- GNAT
+ Name_Linker_Destructor : constant Name_Id := N + 225; -- GNAT
+ Name_Linker_Options : constant Name_Id := N + 226;
+ Name_Linker_Section : constant Name_Id := N + 227; -- GNAT
+ Name_List : constant Name_Id := N + 228;
+ Name_Machine_Attribute : constant Name_Id := N + 229; -- GNAT
+ Name_Main : constant Name_Id := N + 230; -- GNAT
+ Name_Main_Storage : constant Name_Id := N + 231; -- GNAT
+ Name_Memory_Size : constant Name_Id := N + 232; -- Ada 83
+ Name_No_Body : constant Name_Id := N + 233; -- GNAT
+ Name_No_Return : constant Name_Id := N + 234; -- GNAT
+ Name_Obsolescent : constant Name_Id := N + 235; -- GNAT
+ Name_Optimize : constant Name_Id := N + 236;
+ Name_Pack : constant Name_Id := N + 237;
+ Name_Page : constant Name_Id := N + 238;
+ Name_Passive : constant Name_Id := N + 239; -- GNAT
+ Name_Preelaborable_Initialization : constant Name_Id := N + 240; -- Ada 05
+ Name_Preelaborate : constant Name_Id := N + 241;
+ Name_Preelaborate_05 : constant Name_Id := N + 242; -- GNAT
+
+ -- Note: Priority is not in this list because its name matches
+ -- the name of the corresponding attribute. However, it is
+ -- included in the definition of the type Pragma_Id, and the
+ -- functions Get_Pragma_Id and Is_Pragma_Id correctly recognize
+ -- and process Priority. Priority is a standard Ada 95 pragma.
+
+ Name_Psect_Object : constant Name_Id := N + 243; -- VMS
+ Name_Pure : constant Name_Id := N + 244;
+ Name_Pure_05 : constant Name_Id := N + 245; -- GNAT
+ Name_Pure_Function : constant Name_Id := N + 246; -- GNAT
+ Name_Remote_Call_Interface : constant Name_Id := N + 247;
+ Name_Remote_Types : constant Name_Id := N + 248;
+ Name_Share_Generic : constant Name_Id := N + 249; -- GNAT
+ Name_Shared : constant Name_Id := N + 250; -- Ada 83
+ Name_Shared_Passive : constant Name_Id := N + 251;
+
+ -- Note: Storage_Size is not in this list because its name
+ -- matches the name of the corresponding attribute. However,
+ -- it is included in the definition of the type Attribute_Id,
+ -- and the functions Get_Pragma_Id and Is_Pragma_Id correctly
+ -- recognize and process Name_Storage_Size.
+
+ -- Note: Storage_Unit is also omitted from the list because
+ -- of a clash with an attribute name, and is treated similarly.
+
+ Name_Source_Reference : constant Name_Id := N + 252; -- GNAT
+ Name_Static_Elaboration_Desired : constant Name_Id := N + 253; -- GNAT
+ Name_Stream_Convert : constant Name_Id := N + 254; -- GNAT
+ Name_Subtitle : constant Name_Id := N + 255; -- GNAT
+ Name_Suppress_All : constant Name_Id := N + 256; -- GNAT
+ Name_Suppress_Debug_Info : constant Name_Id := N + 257; -- GNAT
+ Name_Suppress_Initialization : constant Name_Id := N + 258; -- GNAT
+ Name_System_Name : constant Name_Id := N + 259; -- Ada 83
+ Name_Task_Info : constant Name_Id := N + 260; -- GNAT
+ Name_Task_Name : constant Name_Id := N + 261; -- GNAT
+ Name_Task_Storage : constant Name_Id := N + 262; -- VMS
+ Name_Time_Slice : constant Name_Id := N + 263; -- GNAT
+ Name_Title : constant Name_Id := N + 264; -- GNAT
+ Name_Unchecked_Union : constant Name_Id := N + 265; -- GNAT
+ Name_Unimplemented_Unit : constant Name_Id := N + 266; -- GNAT
+ Name_Universal_Aliasing : constant Name_Id := N + 267; -- GNAT
+ Name_Unreferenced : constant Name_Id := N + 268; -- GNAT
+ Name_Unreferenced_Objects : constant Name_Id := N + 269; -- GNAT
+ Name_Unreserve_All_Interrupts : constant Name_Id := N + 270; -- GNAT
+ Name_Volatile : constant Name_Id := N + 271;
+ Name_Volatile_Components : constant Name_Id := N + 272;
+ Name_Weak_External : constant Name_Id := N + 273; -- GNAT
+ Last_Pragma_Name : constant Name_Id := N + 273;
-- Language convention names for pragma Convention/Export/Import/Interface
-- Note that Name_C is not included in this list, since it was already
@@ -528,119 +536,119 @@ package Snames is
-- Entry and Protected, this is because these conventions cannot be
-- specified by a pragma.
- First_Convention_Name : constant Name_Id := N + 271;
- Name_Ada : constant Name_Id := N + 271;
- Name_Assembler : constant Name_Id := N + 272;
- Name_CIL : constant Name_Id := N + 273;
- Name_COBOL : constant Name_Id := N + 274;
- Name_CPP : constant Name_Id := N + 275;
- Name_Fortran : constant Name_Id := N + 276;
- Name_Intrinsic : constant Name_Id := N + 277;
- Name_Java : constant Name_Id := N + 278;
- Name_Stdcall : constant Name_Id := N + 279;
- Name_Stubbed : constant Name_Id := N + 280;
- Last_Convention_Name : constant Name_Id := N + 280;
+ First_Convention_Name : constant Name_Id := N + 274;
+ Name_Ada : constant Name_Id := N + 274;
+ Name_Assembler : constant Name_Id := N + 275;
+ Name_CIL : constant Name_Id := N + 276;
+ Name_COBOL : constant Name_Id := N + 277;
+ Name_CPP : constant Name_Id := N + 278;
+ Name_Fortran : constant Name_Id := N + 279;
+ Name_Intrinsic : constant Name_Id := N + 280;
+ Name_Java : constant Name_Id := N + 281;
+ Name_Stdcall : constant Name_Id := N + 282;
+ Name_Stubbed : constant Name_Id := N + 283;
+ Last_Convention_Name : constant Name_Id := N + 283;
-- The following names are preset as synonyms for Assembler
- Name_Asm : constant Name_Id := N + 281;
- Name_Assembly : constant Name_Id := N + 282;
+ Name_Asm : constant Name_Id := N + 284;
+ Name_Assembly : constant Name_Id := N + 285;
-- The following names are preset as synonyms for C
- Name_Default : constant Name_Id := N + 283;
+ Name_Default : constant Name_Id := N + 286;
-- Name_Exernal (previously defined as pragma)
-- The following names are preset as synonyms for CPP
- Name_C_Plus_Plus : constant Name_Id := N + 284;
+ Name_C_Plus_Plus : constant Name_Id := N + 287;
-- The following names are present as synonyms for Stdcall
- Name_DLL : constant Name_Id := N + 285;
- Name_Win32 : constant Name_Id := N + 286;
+ Name_DLL : constant Name_Id := N + 288;
+ Name_Win32 : constant Name_Id := N + 289;
-- Other special names used in processing pragmas
- Name_As_Is : constant Name_Id := N + 287;
- Name_Attribute_Name : constant Name_Id := N + 288;
- Name_Body_File_Name : constant Name_Id := N + 289;
- Name_Boolean_Entry_Barriers : constant Name_Id := N + 290;
- Name_Check : constant Name_Id := N + 291;
- Name_Casing : constant Name_Id := N + 292;
- Name_Code : constant Name_Id := N + 293;
- Name_Component : constant Name_Id := N + 294;
- Name_Component_Size_4 : constant Name_Id := N + 295;
- Name_Copy : constant Name_Id := N + 296;
- Name_D_Float : constant Name_Id := N + 297;
- Name_Descriptor : constant Name_Id := N + 298;
- Name_Dot_Replacement : constant Name_Id := N + 299;
- Name_Dynamic : constant Name_Id := N + 300;
- Name_Entity : constant Name_Id := N + 301;
- Name_Entry_Count : constant Name_Id := N + 302;
- Name_External_Name : constant Name_Id := N + 303;
- Name_First_Optional_Parameter : constant Name_Id := N + 304;
- Name_Form : constant Name_Id := N + 305;
- Name_G_Float : constant Name_Id := N + 306;
- Name_Gcc : constant Name_Id := N + 307;
- Name_Gnat : constant Name_Id := N + 308;
- Name_GPL : constant Name_Id := N + 309;
- Name_IEEE_Float : constant Name_Id := N + 310;
- Name_Ignore : constant Name_Id := N + 311;
- Name_Info : constant Name_Id := N + 312;
- Name_Internal : constant Name_Id := N + 313;
- Name_Link_Name : constant Name_Id := N + 314;
- Name_Lowercase : constant Name_Id := N + 315;
- Name_Max_Entry_Queue_Depth : constant Name_Id := N + 316;
- Name_Max_Entry_Queue_Length : constant Name_Id := N + 317;
- Name_Max_Size : constant Name_Id := N + 318;
- Name_Mechanism : constant Name_Id := N + 319;
- Name_Message : constant Name_Id := N + 320;
- Name_Mixedcase : constant Name_Id := N + 321;
- Name_Modified_GPL : constant Name_Id := N + 322;
- Name_Name : constant Name_Id := N + 323;
- Name_NCA : constant Name_Id := N + 324;
- Name_No : constant Name_Id := N + 325;
- Name_No_Dependence : constant Name_Id := N + 326;
- Name_No_Dynamic_Attachment : constant Name_Id := N + 327;
- Name_No_Dynamic_Interrupts : constant Name_Id := N + 328;
- Name_No_Requeue : constant Name_Id := N + 329;
- Name_No_Requeue_Statements : constant Name_Id := N + 330;
- Name_No_Task_Attributes : constant Name_Id := N + 331;
- Name_No_Task_Attributes_Package : constant Name_Id := N + 332;
- Name_On : constant Name_Id := N + 333;
- Name_Parameter_Types : constant Name_Id := N + 334;
- Name_Reference : constant Name_Id := N + 335;
- Name_Restricted : constant Name_Id := N + 336;
- Name_Result_Mechanism : constant Name_Id := N + 337;
- Name_Result_Type : constant Name_Id := N + 338;
- Name_Runtime : constant Name_Id := N + 339;
- Name_SB : constant Name_Id := N + 340;
- Name_Secondary_Stack_Size : constant Name_Id := N + 341;
- Name_Section : constant Name_Id := N + 342;
- Name_Semaphore : constant Name_Id := N + 343;
- Name_Simple_Barriers : constant Name_Id := N + 344;
- Name_Spec_File_Name : constant Name_Id := N + 345;
- Name_State : constant Name_Id := N + 346;
- Name_Static : constant Name_Id := N + 347;
- Name_Stack_Size : constant Name_Id := N + 348;
- Name_Subunit_File_Name : constant Name_Id := N + 349;
- Name_Task_Stack_Size_Default : constant Name_Id := N + 350;
- Name_Task_Type : constant Name_Id := N + 351;
- Name_Time_Slicing_Enabled : constant Name_Id := N + 352;
- Name_Top_Guard : constant Name_Id := N + 353;
- Name_UBA : constant Name_Id := N + 354;
- Name_UBS : constant Name_Id := N + 355;
- Name_UBSB : constant Name_Id := N + 356;
- Name_Unit_Name : constant Name_Id := N + 357;
- Name_Unknown : constant Name_Id := N + 358;
- Name_Unrestricted : constant Name_Id := N + 359;
- Name_Uppercase : constant Name_Id := N + 360;
- Name_User : constant Name_Id := N + 361;
- Name_VAX_Float : constant Name_Id := N + 362;
- Name_VMS : constant Name_Id := N + 363;
- Name_Vtable_Ptr : constant Name_Id := N + 364;
- Name_Working_Storage : constant Name_Id := N + 365;
+ Name_As_Is : constant Name_Id := N + 290;
+ Name_Attribute_Name : constant Name_Id := N + 291;
+ Name_Body_File_Name : constant Name_Id := N + 292;
+ Name_Boolean_Entry_Barriers : constant Name_Id := N + 293;
+ Name_Check : constant Name_Id := N + 294;
+ Name_Casing : constant Name_Id := N + 295;
+ Name_Code : constant Name_Id := N + 296;
+ Name_Component : constant Name_Id := N + 297;
+ Name_Component_Size_4 : constant Name_Id := N + 298;
+ Name_Copy : constant Name_Id := N + 299;
+ Name_D_Float : constant Name_Id := N + 300;
+ Name_Descriptor : constant Name_Id := N + 301;
+ Name_Dot_Replacement : constant Name_Id := N + 302;
+ Name_Dynamic : constant Name_Id := N + 303;
+ Name_Entity : constant Name_Id := N + 304;
+ Name_Entry_Count : constant Name_Id := N + 305;
+ Name_External_Name : constant Name_Id := N + 306;
+ Name_First_Optional_Parameter : constant Name_Id := N + 307;
+ Name_Form : constant Name_Id := N + 308;
+ Name_G_Float : constant Name_Id := N + 309;
+ Name_Gcc : constant Name_Id := N + 310;
+ Name_Gnat : constant Name_Id := N + 311;
+ Name_GPL : constant Name_Id := N + 312;
+ Name_IEEE_Float : constant Name_Id := N + 313;
+ Name_Ignore : constant Name_Id := N + 314;
+ Name_Info : constant Name_Id := N + 315;
+ Name_Internal : constant Name_Id := N + 316;
+ Name_Link_Name : constant Name_Id := N + 317;
+ Name_Lowercase : constant Name_Id := N + 318;
+ Name_Max_Entry_Queue_Depth : constant Name_Id := N + 319;
+ Name_Max_Entry_Queue_Length : constant Name_Id := N + 320;
+ Name_Max_Size : constant Name_Id := N + 321;
+ Name_Mechanism : constant Name_Id := N + 322;
+ Name_Message : constant Name_Id := N + 323;
+ Name_Mixedcase : constant Name_Id := N + 324;
+ Name_Modified_GPL : constant Name_Id := N + 325;
+ Name_Name : constant Name_Id := N + 326;
+ Name_NCA : constant Name_Id := N + 327;
+ Name_No : constant Name_Id := N + 328;
+ Name_No_Dependence : constant Name_Id := N + 329;
+ Name_No_Dynamic_Attachment : constant Name_Id := N + 330;
+ Name_No_Dynamic_Interrupts : constant Name_Id := N + 331;
+ Name_No_Requeue : constant Name_Id := N + 332;
+ Name_No_Requeue_Statements : constant Name_Id := N + 333;
+ Name_No_Task_Attributes : constant Name_Id := N + 334;
+ Name_No_Task_Attributes_Package : constant Name_Id := N + 335;
+ Name_On : constant Name_Id := N + 336;
+ Name_Parameter_Types : constant Name_Id := N + 337;
+ Name_Reference : constant Name_Id := N + 338;
+ Name_Restricted : constant Name_Id := N + 339;
+ Name_Result_Mechanism : constant Name_Id := N + 340;
+ Name_Result_Type : constant Name_Id := N + 341;
+ Name_Runtime : constant Name_Id := N + 342;
+ Name_SB : constant Name_Id := N + 343;
+ Name_Secondary_Stack_Size : constant Name_Id := N + 344;
+ Name_Section : constant Name_Id := N + 345;
+ Name_Semaphore : constant Name_Id := N + 346;
+ Name_Simple_Barriers : constant Name_Id := N + 347;
+ Name_Spec_File_Name : constant Name_Id := N + 348;
+ Name_State : constant Name_Id := N + 349;
+ Name_Static : constant Name_Id := N + 350;
+ Name_Stack_Size : constant Name_Id := N + 351;
+ Name_Subunit_File_Name : constant Name_Id := N + 352;
+ Name_Task_Stack_Size_Default : constant Name_Id := N + 353;
+ Name_Task_Type : constant Name_Id := N + 354;
+ Name_Time_Slicing_Enabled : constant Name_Id := N + 355;
+ Name_Top_Guard : constant Name_Id := N + 356;
+ Name_UBA : constant Name_Id := N + 357;
+ Name_UBS : constant Name_Id := N + 358;
+ Name_UBSB : constant Name_Id := N + 359;
+ Name_Unit_Name : constant Name_Id := N + 360;
+ Name_Unknown : constant Name_Id := N + 361;
+ Name_Unrestricted : constant Name_Id := N + 362;
+ Name_Uppercase : constant Name_Id := N + 363;
+ Name_User : constant Name_Id := N + 364;
+ Name_VAX_Float : constant Name_Id := N + 365;
+ Name_VMS : constant Name_Id := N + 366;
+ Name_Vtable_Ptr : constant Name_Id := N + 367;
+ Name_Working_Storage : constant Name_Id := N + 368;
-- 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
@@ -654,169 +662,170 @@ 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 + 366;
- Name_Abort_Signal : constant Name_Id := N + 366; -- GNAT
- Name_Access : constant Name_Id := N + 367;
- Name_Address : constant Name_Id := N + 368;
- Name_Address_Size : constant Name_Id := N + 369; -- GNAT
- Name_Aft : constant Name_Id := N + 370;
- Name_Alignment : constant Name_Id := N + 371;
- Name_Asm_Input : constant Name_Id := N + 372; -- GNAT
- Name_Asm_Output : constant Name_Id := N + 373; -- GNAT
- Name_AST_Entry : constant Name_Id := N + 374; -- VMS
- Name_Bit : constant Name_Id := N + 375; -- GNAT
- Name_Bit_Order : constant Name_Id := N + 376;
- Name_Bit_Position : constant Name_Id := N + 377; -- GNAT
- Name_Body_Version : constant Name_Id := N + 378;
- Name_Callable : constant Name_Id := N + 379;
- Name_Caller : constant Name_Id := N + 380;
- Name_Code_Address : constant Name_Id := N + 381; -- GNAT
- Name_Component_Size : constant Name_Id := N + 382;
- Name_Compose : constant Name_Id := N + 383;
- Name_Constrained : constant Name_Id := N + 384;
- Name_Count : constant Name_Id := N + 385;
- Name_Default_Bit_Order : constant Name_Id := N + 386; -- GNAT
- Name_Definite : constant Name_Id := N + 387;
- Name_Delta : constant Name_Id := N + 388;
- Name_Denorm : constant Name_Id := N + 389;
- Name_Digits : constant Name_Id := N + 390;
- Name_Elaborated : constant Name_Id := N + 391; -- GNAT
- Name_Emax : constant Name_Id := N + 392; -- Ada 83
- Name_Enabled : constant Name_Id := N + 393; -- GNAT
- Name_Enum_Rep : constant Name_Id := N + 394; -- GNAT
- Name_Epsilon : constant Name_Id := N + 395; -- Ada 83
- Name_Exponent : constant Name_Id := N + 396;
- Name_External_Tag : constant Name_Id := N + 397;
- Name_First : constant Name_Id := N + 398;
- Name_First_Bit : constant Name_Id := N + 399;
- Name_Fixed_Value : constant Name_Id := N + 400; -- GNAT
- Name_Fore : constant Name_Id := N + 401;
- Name_Has_Access_Values : constant Name_Id := N + 402; -- GNAT
- Name_Has_Discriminants : constant Name_Id := N + 403; -- GNAT
- Name_Identity : constant Name_Id := N + 404;
- Name_Img : constant Name_Id := N + 405; -- GNAT
- Name_Integer_Value : constant Name_Id := N + 406; -- GNAT
- Name_Large : constant Name_Id := N + 407; -- Ada 83
- Name_Last : constant Name_Id := N + 408;
- Name_Last_Bit : constant Name_Id := N + 409;
- Name_Leading_Part : constant Name_Id := N + 410;
- Name_Length : constant Name_Id := N + 411;
- Name_Machine_Emax : constant Name_Id := N + 412;
- Name_Machine_Emin : constant Name_Id := N + 413;
- Name_Machine_Mantissa : constant Name_Id := N + 414;
- Name_Machine_Overflows : constant Name_Id := N + 415;
- Name_Machine_Radix : constant Name_Id := N + 416;
- Name_Machine_Rounding : constant Name_Id := N + 417; -- Ada 05
- Name_Machine_Rounds : constant Name_Id := N + 418;
- Name_Machine_Size : constant Name_Id := N + 419; -- GNAT
- Name_Mantissa : constant Name_Id := N + 420; -- Ada 83
- Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 421;
- Name_Maximum_Alignment : constant Name_Id := N + 422; -- GNAT
- Name_Mechanism_Code : constant Name_Id := N + 423; -- GNAT
- Name_Mod : constant Name_Id := N + 424; -- Ada 05
- Name_Model_Emin : constant Name_Id := N + 425;
- Name_Model_Epsilon : constant Name_Id := N + 426;
- Name_Model_Mantissa : constant Name_Id := N + 427;
- Name_Model_Small : constant Name_Id := N + 428;
- Name_Modulus : constant Name_Id := N + 429;
- Name_Null_Parameter : constant Name_Id := N + 430; -- GNAT
- Name_Object_Size : constant Name_Id := N + 431; -- GNAT
- Name_Partition_ID : constant Name_Id := N + 432;
- Name_Passed_By_Reference : constant Name_Id := N + 433; -- GNAT
- Name_Pool_Address : constant Name_Id := N + 434;
- Name_Pos : constant Name_Id := N + 435;
- Name_Position : constant Name_Id := N + 436;
- Name_Priority : constant Name_Id := N + 437; -- Ada 05
- Name_Range : constant Name_Id := N + 438;
- Name_Range_Length : constant Name_Id := N + 439; -- GNAT
- Name_Round : constant Name_Id := N + 440;
- Name_Safe_Emax : constant Name_Id := N + 441; -- Ada 83
- Name_Safe_First : constant Name_Id := N + 442;
- Name_Safe_Large : constant Name_Id := N + 443; -- Ada 83
- Name_Safe_Last : constant Name_Id := N + 444;
- Name_Safe_Small : constant Name_Id := N + 445; -- Ada 83
- Name_Scale : constant Name_Id := N + 446;
- Name_Scaling : constant Name_Id := N + 447;
- Name_Signed_Zeros : constant Name_Id := N + 448;
- Name_Size : constant Name_Id := N + 449;
- Name_Small : constant Name_Id := N + 450;
- Name_Storage_Size : constant Name_Id := N + 451;
- Name_Storage_Unit : constant Name_Id := N + 452; -- GNAT
- Name_Stream_Size : constant Name_Id := N + 453; -- Ada 05
- Name_Tag : constant Name_Id := N + 454;
- Name_Target_Name : constant Name_Id := N + 455; -- GNAT
- Name_Terminated : constant Name_Id := N + 456;
- Name_To_Address : constant Name_Id := N + 457; -- GNAT
- Name_Type_Class : constant Name_Id := N + 458; -- GNAT
- Name_UET_Address : constant Name_Id := N + 459; -- GNAT
- Name_Unbiased_Rounding : constant Name_Id := N + 460;
- Name_Unchecked_Access : constant Name_Id := N + 461;
- Name_Unconstrained_Array : constant Name_Id := N + 462;
- Name_Universal_Literal_String : constant Name_Id := N + 463; -- GNAT
- Name_Unrestricted_Access : constant Name_Id := N + 464; -- GNAT
- Name_VADS_Size : constant Name_Id := N + 465; -- GNAT
- Name_Val : constant Name_Id := N + 466;
- Name_Valid : constant Name_Id := N + 467;
- Name_Value_Size : constant Name_Id := N + 468; -- GNAT
- Name_Version : constant Name_Id := N + 469;
- Name_Wchar_T_Size : constant Name_Id := N + 470; -- GNAT
- Name_Wide_Wide_Width : constant Name_Id := N + 471; -- Ada 05
- Name_Wide_Width : constant Name_Id := N + 472;
- Name_Width : constant Name_Id := N + 473;
- Name_Word_Size : constant Name_Id := N + 474; -- GNAT
+ First_Attribute_Name : constant Name_Id := N + 369;
+ Name_Abort_Signal : constant Name_Id := N + 369; -- GNAT
+ Name_Access : constant Name_Id := N + 370;
+ Name_Address : constant Name_Id := N + 371;
+ Name_Address_Size : constant Name_Id := N + 372; -- GNAT
+ Name_Aft : constant Name_Id := N + 373;
+ Name_Alignment : constant Name_Id := N + 374;
+ Name_Asm_Input : constant Name_Id := N + 375; -- GNAT
+ Name_Asm_Output : constant Name_Id := N + 376; -- GNAT
+ Name_AST_Entry : constant Name_Id := N + 377; -- VMS
+ Name_Bit : constant Name_Id := N + 378; -- GNAT
+ Name_Bit_Order : constant Name_Id := N + 379;
+ Name_Bit_Position : constant Name_Id := N + 380; -- GNAT
+ Name_Body_Version : constant Name_Id := N + 381;
+ Name_Callable : constant Name_Id := N + 382;
+ Name_Caller : constant Name_Id := N + 383;
+ Name_Code_Address : constant Name_Id := N + 384; -- GNAT
+ Name_Component_Size : constant Name_Id := N + 385;
+ Name_Compose : constant Name_Id := N + 386;
+ Name_Constrained : constant Name_Id := N + 387;
+ Name_Count : constant Name_Id := N + 388;
+ Name_Default_Bit_Order : constant Name_Id := N + 389; -- GNAT
+ Name_Definite : constant Name_Id := N + 390;
+ Name_Delta : constant Name_Id := N + 391;
+ Name_Denorm : constant Name_Id := N + 392;
+ Name_Digits : constant Name_Id := N + 393;
+ Name_Elaborated : constant Name_Id := N + 394; -- GNAT
+ Name_Emax : constant Name_Id := N + 395; -- Ada 83
+ Name_Enabled : constant Name_Id := N + 396; -- GNAT
+ Name_Enum_Rep : constant Name_Id := N + 397; -- GNAT
+ Name_Epsilon : constant Name_Id := N + 398; -- Ada 83
+ Name_Exponent : constant Name_Id := N + 399;
+ Name_External_Tag : constant Name_Id := N + 400;
+ Name_Fast_Math : constant Name_Id := N + 401; -- GNAT
+ Name_First : constant Name_Id := N + 402;
+ Name_First_Bit : constant Name_Id := N + 403;
+ Name_Fixed_Value : constant Name_Id := N + 404; -- GNAT
+ Name_Fore : constant Name_Id := N + 405;
+ Name_Has_Access_Values : constant Name_Id := N + 406; -- GNAT
+ Name_Has_Discriminants : constant Name_Id := N + 407; -- GNAT
+ Name_Identity : constant Name_Id := N + 408;
+ Name_Img : constant Name_Id := N + 409; -- GNAT
+ Name_Integer_Value : constant Name_Id := N + 410; -- GNAT
+ Name_Large : constant Name_Id := N + 411; -- Ada 83
+ Name_Last : constant Name_Id := N + 412;
+ Name_Last_Bit : constant Name_Id := N + 413;
+ Name_Leading_Part : constant Name_Id := N + 414;
+ Name_Length : constant Name_Id := N + 415;
+ Name_Machine_Emax : constant Name_Id := N + 416;
+ Name_Machine_Emin : constant Name_Id := N + 417;
+ Name_Machine_Mantissa : constant Name_Id := N + 418;
+ Name_Machine_Overflows : constant Name_Id := N + 419;
+ Name_Machine_Radix : constant Name_Id := N + 420;
+ Name_Machine_Rounding : constant Name_Id := N + 421; -- Ada 05
+ Name_Machine_Rounds : constant Name_Id := N + 422;
+ Name_Machine_Size : constant Name_Id := N + 423; -- GNAT
+ Name_Mantissa : constant Name_Id := N + 424; -- Ada 83
+ Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 425;
+ Name_Maximum_Alignment : constant Name_Id := N + 426; -- GNAT
+ Name_Mechanism_Code : constant Name_Id := N + 427; -- GNAT
+ Name_Mod : constant Name_Id := N + 428; -- Ada 05
+ Name_Model_Emin : constant Name_Id := N + 429;
+ Name_Model_Epsilon : constant Name_Id := N + 430;
+ Name_Model_Mantissa : constant Name_Id := N + 431;
+ Name_Model_Small : constant Name_Id := N + 432;
+ Name_Modulus : constant Name_Id := N + 433;
+ Name_Null_Parameter : constant Name_Id := N + 434; -- GNAT
+ Name_Object_Size : constant Name_Id := N + 435; -- GNAT
+ Name_Partition_ID : constant Name_Id := N + 436;
+ Name_Passed_By_Reference : constant Name_Id := N + 437; -- GNAT
+ Name_Pool_Address : constant Name_Id := N + 438;
+ Name_Pos : constant Name_Id := N + 439;
+ Name_Position : constant Name_Id := N + 440;
+ Name_Priority : constant Name_Id := N + 441; -- Ada 05
+ Name_Range : constant Name_Id := N + 442;
+ Name_Range_Length : constant Name_Id := N + 443; -- GNAT
+ Name_Round : constant Name_Id := N + 444;
+ Name_Safe_Emax : constant Name_Id := N + 445; -- Ada 83
+ Name_Safe_First : constant Name_Id := N + 446;
+ Name_Safe_Large : constant Name_Id := N + 447; -- Ada 83
+ Name_Safe_Last : constant Name_Id := N + 448;
+ Name_Safe_Small : constant Name_Id := N + 449; -- Ada 83
+ Name_Scale : constant Name_Id := N + 450;
+ Name_Scaling : constant Name_Id := N + 451;
+ Name_Signed_Zeros : constant Name_Id := N + 452;
+ Name_Size : constant Name_Id := N + 453;
+ Name_Small : constant Name_Id := N + 454;
+ Name_Storage_Size : constant Name_Id := N + 455;
+ Name_Storage_Unit : constant Name_Id := N + 456; -- GNAT
+ Name_Stream_Size : constant Name_Id := N + 457; -- Ada 05
+ Name_Tag : constant Name_Id := N + 458;
+ Name_Target_Name : constant Name_Id := N + 459; -- GNAT
+ Name_Terminated : constant Name_Id := N + 460;
+ Name_To_Address : constant Name_Id := N + 461; -- GNAT
+ Name_Type_Class : constant Name_Id := N + 462; -- GNAT
+ Name_UET_Address : constant Name_Id := N + 463; -- GNAT
+ Name_Unbiased_Rounding : constant Name_Id := N + 464;
+ Name_Unchecked_Access : constant Name_Id := N + 465;
+ Name_Unconstrained_Array : constant Name_Id := N + 466;
+ Name_Universal_Literal_String : constant Name_Id := N + 467; -- GNAT
+ Name_Unrestricted_Access : constant Name_Id := N + 468; -- GNAT
+ Name_VADS_Size : constant Name_Id := N + 469; -- GNAT
+ Name_Val : constant Name_Id := N + 470;
+ Name_Valid : constant Name_Id := N + 471;
+ Name_Value_Size : constant Name_Id := N + 472; -- GNAT
+ Name_Version : constant Name_Id := N + 473;
+ Name_Wchar_T_Size : constant Name_Id := N + 474; -- GNAT
+ Name_Wide_Wide_Width : constant Name_Id := N + 475; -- Ada 05
+ Name_Wide_Width : constant Name_Id := N + 476;
+ Name_Width : constant Name_Id := N + 477;
+ Name_Word_Size : constant Name_Id := N + 478; -- GNAT
-- Attributes that designate attributes returning renamable functions,
-- i.e. functions that return other than a universal value and that
-- have non-universal arguments.
- First_Renamable_Function_Attribute : constant Name_Id := N + 475;
- Name_Adjacent : constant Name_Id := N + 475;
- Name_Ceiling : constant Name_Id := N + 476;
- Name_Copy_Sign : constant Name_Id := N + 477;
- Name_Floor : constant Name_Id := N + 478;
- Name_Fraction : constant Name_Id := N + 479;
- Name_Image : constant Name_Id := N + 480;
- Name_Input : constant Name_Id := N + 481;
- Name_Machine : constant Name_Id := N + 482;
- Name_Max : constant Name_Id := N + 483;
- Name_Min : constant Name_Id := N + 484;
- Name_Model : constant Name_Id := N + 485;
- Name_Pred : constant Name_Id := N + 486;
- Name_Remainder : constant Name_Id := N + 487;
- Name_Rounding : constant Name_Id := N + 488;
- Name_Succ : constant Name_Id := N + 489;
- Name_Truncation : constant Name_Id := N + 490;
- Name_Value : constant Name_Id := N + 491;
- Name_Wide_Image : constant Name_Id := N + 492;
- Name_Wide_Wide_Image : constant Name_Id := N + 493;
- Name_Wide_Value : constant Name_Id := N + 494;
- Name_Wide_Wide_Value : constant Name_Id := N + 495;
- Last_Renamable_Function_Attribute : constant Name_Id := N + 495;
+ First_Renamable_Function_Attribute : constant Name_Id := N + 479;
+ Name_Adjacent : constant Name_Id := N + 479;
+ Name_Ceiling : constant Name_Id := N + 480;
+ Name_Copy_Sign : constant Name_Id := N + 481;
+ Name_Floor : constant Name_Id := N + 482;
+ Name_Fraction : constant Name_Id := N + 483;
+ Name_Image : constant Name_Id := N + 484;
+ Name_Input : constant Name_Id := N + 485;
+ Name_Machine : constant Name_Id := N + 486;
+ Name_Max : constant Name_Id := N + 487;
+ Name_Min : constant Name_Id := N + 488;
+ Name_Model : constant Name_Id := N + 489;
+ Name_Pred : constant Name_Id := N + 490;
+ Name_Remainder : constant Name_Id := N + 491;
+ Name_Rounding : constant Name_Id := N + 492;
+ Name_Succ : constant Name_Id := N + 493;
+ Name_Truncation : constant Name_Id := N + 494;
+ Name_Value : constant Name_Id := N + 495;
+ Name_Wide_Image : constant Name_Id := N + 496;
+ Name_Wide_Wide_Image : constant Name_Id := N + 497;
+ Name_Wide_Value : constant Name_Id := N + 498;
+ Name_Wide_Wide_Value : constant Name_Id := N + 499;
+ Last_Renamable_Function_Attribute : constant Name_Id := N + 499;
-- Attributes that designate procedures
- First_Procedure_Attribute : constant Name_Id := N + 496;
- Name_Output : constant Name_Id := N + 496;
- Name_Read : constant Name_Id := N + 497;
- Name_Write : constant Name_Id := N + 498;
- Last_Procedure_Attribute : constant Name_Id := N + 498;
+ First_Procedure_Attribute : constant Name_Id := N + 500;
+ Name_Output : constant Name_Id := N + 500;
+ Name_Read : constant Name_Id := N + 501;
+ Name_Write : constant Name_Id := N + 502;
+ Last_Procedure_Attribute : constant Name_Id := N + 502;
-- Remaining attributes are ones that return entities
- First_Entity_Attribute_Name : constant Name_Id := N + 499;
- Name_Elab_Body : constant Name_Id := N + 499; -- GNAT
- Name_Elab_Spec : constant Name_Id := N + 500; -- GNAT
- Name_Storage_Pool : constant Name_Id := N + 501;
+ First_Entity_Attribute_Name : constant Name_Id := N + 503;
+ Name_Elab_Body : constant Name_Id := N + 503; -- GNAT
+ Name_Elab_Spec : constant Name_Id := N + 504; -- GNAT
+ Name_Storage_Pool : constant Name_Id := N + 505;
-- These attributes are the ones that return types
- First_Type_Attribute_Name : constant Name_Id := N + 502;
- Name_Base : constant Name_Id := N + 502;
- Name_Class : constant Name_Id := N + 503;
- Name_Stub_Type : constant Name_Id := N + 504;
- Last_Type_Attribute_Name : constant Name_Id := N + 504;
- Last_Entity_Attribute_Name : constant Name_Id := N + 504;
- Last_Attribute_Name : constant Name_Id := N + 504;
+ First_Type_Attribute_Name : constant Name_Id := N + 506;
+ Name_Base : constant Name_Id := N + 506;
+ Name_Class : constant Name_Id := N + 507;
+ Name_Stub_Type : constant Name_Id := N + 508;
+ Last_Type_Attribute_Name : constant Name_Id := N + 508;
+ Last_Entity_Attribute_Name : constant Name_Id := N + 508;
+ Last_Attribute_Name : constant Name_Id := N + 508;
-- Names of recognized locking policy identifiers
@@ -824,10 +833,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 + 505;
- Name_Ceiling_Locking : constant Name_Id := N + 505;
- Name_Inheritance_Locking : constant Name_Id := N + 506;
- Last_Locking_Policy_Name : constant Name_Id := N + 506;
+ First_Locking_Policy_Name : constant Name_Id := N + 509;
+ Name_Ceiling_Locking : constant Name_Id := N + 509;
+ Name_Inheritance_Locking : constant Name_Id := N + 510;
+ Last_Locking_Policy_Name : constant Name_Id := N + 510;
-- Names of recognized queuing policy identifiers
@@ -835,10 +844,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 + 507;
- Name_FIFO_Queuing : constant Name_Id := N + 507;
- Name_Priority_Queuing : constant Name_Id := N + 508;
- Last_Queuing_Policy_Name : constant Name_Id := N + 508;
+ First_Queuing_Policy_Name : constant Name_Id := N + 511;
+ Name_FIFO_Queuing : constant Name_Id := N + 511;
+ Name_Priority_Queuing : constant Name_Id := N + 512;
+ Last_Queuing_Policy_Name : constant Name_Id := N + 512;
-- Names of recognized task dispatching policy identifiers
@@ -846,272 +855,273 @@ package Snames is
-- name (e.g. F for FIFO_Within_Priorities). If new policy names
-- are added, the first character must be distinct.
- First_Task_Dispatching_Policy_Name : constant Name_Id := N + 509;
- Name_EDF_Across_Priorities : constant Name_Id := N + 509;
- Name_FIFO_Within_Priorities : constant Name_Id := N + 510;
- Name_Non_Preemptive_Within_Priorities : constant Name_Id := N + 511;
- Name_Round_Robin_Within_Priorities : constant Name_Id := N + 512;
- Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 512;
+ First_Task_Dispatching_Policy_Name : constant Name_Id := N + 513;
+ Name_EDF_Across_Priorities : constant Name_Id := N + 513;
+ Name_FIFO_Within_Priorities : constant Name_Id := N + 514;
+ Name_Non_Preemptive_Within_Priorities
+ : constant Name_Id := N + 513;
+ Name_Round_Robin_Within_Priorities : constant Name_Id := N + 515;
+ Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 515;
-- Names of recognized checks for pragma Suppress
- First_Check_Name : constant Name_Id := N + 513;
- Name_Access_Check : constant Name_Id := N + 513;
- Name_Accessibility_Check : constant Name_Id := N + 514;
- Name_Alignment_Check : constant Name_Id := N + 515; -- GNAT
- Name_Discriminant_Check : constant Name_Id := N + 516;
- Name_Division_Check : constant Name_Id := N + 517;
- Name_Elaboration_Check : constant Name_Id := N + 518;
- Name_Index_Check : constant Name_Id := N + 519;
- Name_Length_Check : constant Name_Id := N + 520;
- Name_Overflow_Check : constant Name_Id := N + 521;
- Name_Range_Check : constant Name_Id := N + 522;
- Name_Storage_Check : constant Name_Id := N + 523;
- Name_Tag_Check : constant Name_Id := N + 524;
- Name_Validity_Check : constant Name_Id := N + 525; -- GNAT
- Name_All_Checks : constant Name_Id := N + 526;
- Last_Check_Name : constant Name_Id := N + 526;
+ First_Check_Name : constant Name_Id := N + 516;
+ Name_Access_Check : constant Name_Id := N + 516;
+ Name_Accessibility_Check : constant Name_Id := N + 517;
+ Name_Alignment_Check : constant Name_Id := N + 518; -- GNAT
+ Name_Discriminant_Check : constant Name_Id := N + 519;
+ Name_Division_Check : constant Name_Id := N + 520;
+ Name_Elaboration_Check : constant Name_Id := N + 521;
+ Name_Index_Check : constant Name_Id := N + 522;
+ Name_Length_Check : constant Name_Id := N + 523;
+ Name_Overflow_Check : constant Name_Id := N + 524;
+ Name_Range_Check : constant Name_Id := N + 525;
+ Name_Storage_Check : constant Name_Id := N + 526;
+ Name_Tag_Check : constant Name_Id := N + 527;
+ Name_Validity_Check : constant Name_Id := N + 528; -- GNAT
+ Name_All_Checks : constant Name_Id := N + 529;
+ Last_Check_Name : constant Name_Id := N + 529;
-- Names corresponding to reserved keywords, excluding those already
-- declared in the attribute list (Access, Delta, Digits, Mod, Range).
- Name_Abort : constant Name_Id := N + 527;
- Name_Abs : constant Name_Id := N + 528;
- Name_Accept : constant Name_Id := N + 529;
- Name_And : constant Name_Id := N + 530;
- Name_All : constant Name_Id := N + 531;
- Name_Array : constant Name_Id := N + 532;
- Name_At : constant Name_Id := N + 533;
- Name_Begin : constant Name_Id := N + 534;
- Name_Body : constant Name_Id := N + 535;
- Name_Case : constant Name_Id := N + 536;
- Name_Constant : constant Name_Id := N + 537;
- Name_Declare : constant Name_Id := N + 538;
- Name_Delay : constant Name_Id := N + 539;
- Name_Do : constant Name_Id := N + 540;
- Name_Else : constant Name_Id := N + 541;
- Name_Elsif : constant Name_Id := N + 542;
- Name_End : constant Name_Id := N + 543;
- Name_Entry : constant Name_Id := N + 544;
- Name_Exception : constant Name_Id := N + 545;
- Name_Exit : constant Name_Id := N + 546;
- Name_For : constant Name_Id := N + 547;
- Name_Function : constant Name_Id := N + 548;
- Name_Generic : constant Name_Id := N + 549;
- Name_Goto : constant Name_Id := N + 550;
- Name_If : constant Name_Id := N + 551;
- Name_In : constant Name_Id := N + 552;
- Name_Is : constant Name_Id := N + 553;
- Name_Limited : constant Name_Id := N + 554;
- Name_Loop : constant Name_Id := N + 555;
- Name_New : constant Name_Id := N + 556;
- Name_Not : constant Name_Id := N + 557;
- Name_Null : constant Name_Id := N + 558;
- Name_Of : constant Name_Id := N + 559;
- Name_Or : constant Name_Id := N + 560;
- Name_Others : constant Name_Id := N + 561;
- Name_Out : constant Name_Id := N + 562;
- Name_Package : constant Name_Id := N + 563;
- Name_Pragma : constant Name_Id := N + 564;
- Name_Private : constant Name_Id := N + 565;
- Name_Procedure : constant Name_Id := N + 566;
- Name_Raise : constant Name_Id := N + 567;
- Name_Record : constant Name_Id := N + 568;
- Name_Rem : constant Name_Id := N + 569;
- Name_Renames : constant Name_Id := N + 570;
- Name_Return : constant Name_Id := N + 571;
- Name_Reverse : constant Name_Id := N + 572;
- Name_Select : constant Name_Id := N + 573;
- Name_Separate : constant Name_Id := N + 574;
- Name_Subtype : constant Name_Id := N + 575;
- Name_Task : constant Name_Id := N + 576;
- Name_Terminate : constant Name_Id := N + 577;
- Name_Then : constant Name_Id := N + 578;
- Name_Type : constant Name_Id := N + 579;
- Name_Use : constant Name_Id := N + 580;
- Name_When : constant Name_Id := N + 581;
- Name_While : constant Name_Id := N + 582;
- Name_With : constant Name_Id := N + 583;
- Name_Xor : constant Name_Id := N + 584;
+ Name_Abort : constant Name_Id := N + 530;
+ Name_Abs : constant Name_Id := N + 531;
+ Name_Accept : constant Name_Id := N + 532;
+ Name_And : constant Name_Id := N + 533;
+ Name_All : constant Name_Id := N + 534;
+ Name_Array : constant Name_Id := N + 535;
+ Name_At : constant Name_Id := N + 536;
+ Name_Begin : constant Name_Id := N + 537;
+ Name_Body : constant Name_Id := N + 538;
+ Name_Case : constant Name_Id := N + 539;
+ Name_Constant : constant Name_Id := N + 540;
+ Name_Declare : constant Name_Id := N + 541;
+ Name_Delay : constant Name_Id := N + 542;
+ Name_Do : constant Name_Id := N + 543;
+ Name_Else : constant Name_Id := N + 544;
+ Name_Elsif : constant Name_Id := N + 545;
+ Name_End : constant Name_Id := N + 546;
+ Name_Entry : constant Name_Id := N + 547;
+ Name_Exception : constant Name_Id := N + 548;
+ Name_Exit : constant Name_Id := N + 549;
+ Name_For : constant Name_Id := N + 550;
+ Name_Function : constant Name_Id := N + 551;
+ Name_Generic : constant Name_Id := N + 552;
+ Name_Goto : constant Name_Id := N + 553;
+ Name_If : constant Name_Id := N + 554;
+ Name_In : constant Name_Id := N + 555;
+ Name_Is : constant Name_Id := N + 556;
+ Name_Limited : constant Name_Id := N + 557;
+ Name_Loop : constant Name_Id := N + 558;
+ Name_New : constant Name_Id := N + 559;
+ Name_Not : constant Name_Id := N + 560;
+ Name_Null : constant Name_Id := N + 561;
+ Name_Of : constant Name_Id := N + 562;
+ Name_Or : constant Name_Id := N + 563;
+ Name_Others : constant Name_Id := N + 564;
+ Name_Out : constant Name_Id := N + 565;
+ Name_Package : constant Name_Id := N + 566;
+ Name_Pragma : constant Name_Id := N + 567;
+ Name_Private : constant Name_Id := N + 568;
+ Name_Procedure : constant Name_Id := N + 569;
+ Name_Raise : constant Name_Id := N + 570;
+ Name_Record : constant Name_Id := N + 571;
+ Name_Rem : constant Name_Id := N + 572;
+ Name_Renames : constant Name_Id := N + 573;
+ Name_Return : constant Name_Id := N + 574;
+ Name_Reverse : constant Name_Id := N + 575;
+ Name_Select : constant Name_Id := N + 576;
+ Name_Separate : constant Name_Id := N + 577;
+ Name_Subtype : constant Name_Id := N + 578;
+ Name_Task : constant Name_Id := N + 579;
+ Name_Terminate : constant Name_Id := N + 580;
+ Name_Then : constant Name_Id := N + 581;
+ Name_Type : constant Name_Id := N + 582;
+ Name_Use : constant Name_Id := N + 583;
+ Name_When : constant Name_Id := N + 584;
+ Name_While : constant Name_Id := N + 585;
+ Name_With : constant Name_Id := N + 586;
+ Name_Xor : constant Name_Id := N + 587;
-- 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 + 585;
- Name_Divide : constant Name_Id := N + 585;
- Name_Enclosing_Entity : constant Name_Id := N + 586;
- Name_Exception_Information : constant Name_Id := N + 587;
- Name_Exception_Message : constant Name_Id := N + 588;
- Name_Exception_Name : constant Name_Id := N + 589;
- Name_File : constant Name_Id := N + 590;
- Name_Generic_Dispatching_Constructor : constant Name_Id := N + 591;
- Name_Import_Address : constant Name_Id := N + 592;
- Name_Import_Largest_Value : constant Name_Id := N + 593;
- Name_Import_Value : constant Name_Id := N + 594;
- Name_Is_Negative : constant Name_Id := N + 595;
- Name_Line : constant Name_Id := N + 596;
- Name_Rotate_Left : constant Name_Id := N + 597;
- Name_Rotate_Right : constant Name_Id := N + 598;
- Name_Shift_Left : constant Name_Id := N + 599;
- Name_Shift_Right : constant Name_Id := N + 600;
- Name_Shift_Right_Arithmetic : constant Name_Id := N + 601;
- Name_Source_Location : constant Name_Id := N + 602;
- Name_Unchecked_Conversion : constant Name_Id := N + 603;
- Name_Unchecked_Deallocation : constant Name_Id := N + 604;
- Name_To_Pointer : constant Name_Id := N + 605;
- Last_Intrinsic_Name : constant Name_Id := N + 605;
+ First_Intrinsic_Name : constant Name_Id := N + 588;
+ Name_Divide : constant Name_Id := N + 588;
+ Name_Enclosing_Entity : constant Name_Id := N + 589;
+ Name_Exception_Information : constant Name_Id := N + 590;
+ Name_Exception_Message : constant Name_Id := N + 591;
+ Name_Exception_Name : constant Name_Id := N + 592;
+ Name_File : constant Name_Id := N + 593;
+ Name_Generic_Dispatching_Constructor : constant Name_Id := N + 594;
+ Name_Import_Address : constant Name_Id := N + 595;
+ Name_Import_Largest_Value : constant Name_Id := N + 596;
+ Name_Import_Value : constant Name_Id := N + 597;
+ Name_Is_Negative : constant Name_Id := N + 598;
+ Name_Line : constant Name_Id := N + 599;
+ Name_Rotate_Left : constant Name_Id := N + 600;
+ Name_Rotate_Right : constant Name_Id := N + 601;
+ Name_Shift_Left : constant Name_Id := N + 602;
+ Name_Shift_Right : constant Name_Id := N + 603;
+ Name_Shift_Right_Arithmetic : constant Name_Id := N + 604;
+ Name_Source_Location : constant Name_Id := N + 605;
+ Name_Unchecked_Conversion : constant Name_Id := N + 606;
+ Name_Unchecked_Deallocation : constant Name_Id := N + 607;
+ Name_To_Pointer : constant Name_Id := N + 608;
+ Last_Intrinsic_Name : constant Name_Id := N + 608;
-- Names used in processing intrinsic calls
- Name_Free : constant Name_Id := N + 606;
+ Name_Free : constant Name_Id := N + 609;
-- Reserved words used only in Ada 95
- First_95_Reserved_Word : constant Name_Id := N + 607;
- Name_Abstract : constant Name_Id := N + 607;
- Name_Aliased : constant Name_Id := N + 608;
- Name_Protected : constant Name_Id := N + 609;
- Name_Until : constant Name_Id := N + 610;
- Name_Requeue : constant Name_Id := N + 611;
- Name_Tagged : constant Name_Id := N + 612;
- Last_95_Reserved_Word : constant Name_Id := N + 612;
+ First_95_Reserved_Word : constant Name_Id := N + 610;
+ Name_Abstract : constant Name_Id := N + 610;
+ Name_Aliased : constant Name_Id := N + 611;
+ Name_Protected : constant Name_Id := N + 612;
+ Name_Until : constant Name_Id := N + 613;
+ Name_Requeue : constant Name_Id := N + 614;
+ Name_Tagged : constant Name_Id := N + 615;
+ Last_95_Reserved_Word : constant Name_Id := N + 615;
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 + 613;
+ Name_Raise_Exception : constant Name_Id := N + 616;
-- Additional reserved words and identifiers used in GNAT Project Files
-- Note that Name_External is already previously declared
- Name_Ada_Roots : constant Name_Id := N + 614;
- Name_Archive_Builder : constant Name_Id := N + 615;
- Name_Archive_Indexer : constant Name_Id := N + 616;
- Name_Archive_Suffix : constant Name_Id := N + 617;
- Name_Binder : constant Name_Id := N + 618;
- Name_Binder_Prefix : constant Name_Id := N + 619;
- Name_Body_Suffix : constant Name_Id := N + 620;
- Name_Builder : constant Name_Id := N + 621;
- Name_Builder_Switches : constant Name_Id := N + 622;
- Name_Compiler : constant Name_Id := N + 623;
- Name_Compiler_Kind : constant Name_Id := N + 624;
- Name_Config_Body_File_Name : constant Name_Id := N + 625;
- Name_Config_Body_File_Name_Pattern : constant Name_Id := N + 626;
- Name_Config_File_Switches : constant Name_Id := N + 627;
- Name_Config_File_Unique : constant Name_Id := N + 628;
- Name_Config_Spec_File_Name : constant Name_Id := N + 629;
- Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + 630;
- Name_Cross_Reference : constant Name_Id := N + 631;
- Name_Default_Language : constant Name_Id := N + 632;
- Name_Default_Switches : constant Name_Id := N + 633;
- Name_Dependency_Driver : constant Name_Id := N + 634;
- Name_Dependency_File_Kind : constant Name_Id := N + 635;
- Name_Dependency_Switches : constant Name_Id := N + 636;
- Name_Driver : constant Name_Id := N + 637;
- Name_Excluded_Source_Dirs : constant Name_Id := N + 638;
- Name_Excluded_Source_Files : constant Name_Id := N + 639;
- Name_Exec_Dir : constant Name_Id := N + 640;
- Name_Executable : constant Name_Id := N + 641;
- Name_Executable_Suffix : constant Name_Id := N + 642;
- Name_Extends : constant Name_Id := N + 643;
- Name_Externally_Built : constant Name_Id := N + 644;
- Name_Finder : constant Name_Id := N + 645;
- Name_Global_Configuration_Pragmas : constant Name_Id := N + 646;
- Name_Global_Config_File : constant Name_Id := N + 647;
- Name_Gnatls : constant Name_Id := N + 648;
- Name_Gnatstub : constant Name_Id := N + 649;
- Name_Implementation : constant Name_Id := N + 650;
- Name_Implementation_Exceptions : constant Name_Id := N + 651;
- Name_Implementation_Suffix : constant Name_Id := N + 652;
- Name_Include_Switches : constant Name_Id := N + 653;
- Name_Include_Path : constant Name_Id := N + 654;
- Name_Include_Path_File : constant Name_Id := N + 655;
- Name_Language_Kind : constant Name_Id := N + 656;
- Name_Language_Processing : constant Name_Id := N + 657;
- Name_Languages : constant Name_Id := N + 658;
- Name_Library_Ali_Dir : constant Name_Id := N + 659;
- Name_Library_Auto_Init : constant Name_Id := N + 660;
- Name_Library_Auto_Init_Supported : constant Name_Id := N + 661;
- Name_Library_Builder : constant Name_Id := N + 662;
- Name_Library_Dir : constant Name_Id := N + 663;
- Name_Library_GCC : constant Name_Id := N + 664;
- Name_Library_Interface : constant Name_Id := N + 665;
- Name_Library_Kind : constant Name_Id := N + 666;
- Name_Library_Name : constant Name_Id := N + 667;
- Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + 668;
- Name_Library_Options : constant Name_Id := N + 669;
- Name_Library_Partial_Linker : constant Name_Id := N + 670;
- Name_Library_Reference_Symbol_File : constant Name_Id := N + 671;
- Name_Library_Src_Dir : constant Name_Id := N + 672;
- Name_Library_Support : constant Name_Id := N + 673;
- Name_Library_Symbol_File : constant Name_Id := N + 674;
- Name_Library_Symbol_Policy : constant Name_Id := N + 675;
- Name_Library_Version : constant Name_Id := N + 676;
- Name_Library_Version_Switches : constant Name_Id := N + 677;
- Name_Linker : constant Name_Id := N + 678;
- Name_Linker_Executable_Option : constant Name_Id := N + 679;
- Name_Linker_Lib_Dir_Option : constant Name_Id := N + 680;
- Name_Linker_Lib_Name_Option : constant Name_Id := N + 681;
- Name_Local_Config_File : constant Name_Id := N + 682;
- Name_Local_Configuration_Pragmas : constant Name_Id := N + 683;
- Name_Locally_Removed_Files : constant Name_Id := N + 684;
- Name_Mapping_File_Switches : constant Name_Id := N + 685;
- Name_Mapping_Spec_Suffix : constant Name_Id := N + 686;
- Name_Mapping_Body_Suffix : constant Name_Id := N + 687;
- Name_Metrics : constant Name_Id := N + 688;
- Name_Naming : constant Name_Id := N + 689;
- Name_Objects_Path : constant Name_Id := N + 690;
- Name_Objects_Path_File : constant Name_Id := N + 691;
- Name_Object_Dir : constant Name_Id := N + 692;
- Name_Pic_Option : constant Name_Id := N + 693;
- Name_Pretty_Printer : constant Name_Id := N + 694;
- Name_Prefix : constant Name_Id := N + 695;
- Name_Project : constant Name_Id := N + 696;
- Name_Roots : constant Name_Id := N + 697;
- Name_Required_Switches : constant Name_Id := N + 698;
- Name_Run_Path_Option : constant Name_Id := N + 699;
- Name_Runtime_Project : constant Name_Id := N + 700;
- Name_Shared_Library_Minimum_Switches : constant Name_Id := N + 701;
- Name_Shared_Library_Prefix : constant Name_Id := N + 702;
- Name_Shared_Library_Suffix : constant Name_Id := N + 703;
- Name_Separate_Suffix : constant Name_Id := N + 704;
- Name_Source_Dirs : constant Name_Id := N + 705;
- Name_Source_Files : constant Name_Id := N + 706;
- Name_Source_List_File : constant Name_Id := N + 707;
- Name_Spec : constant Name_Id := N + 708;
- Name_Spec_Suffix : constant Name_Id := N + 709;
- Name_Specification : constant Name_Id := N + 710;
- Name_Specification_Exceptions : constant Name_Id := N + 711;
- Name_Specification_Suffix : constant Name_Id := N + 712;
- Name_Stack : constant Name_Id := N + 713;
- Name_Switches : constant Name_Id := N + 714;
- Name_Symbolic_Link_Supported : constant Name_Id := N + 715;
- Name_Toolchain_Description : constant Name_Id := N + 716;
- Name_Toolchain_Version : constant Name_Id := N + 717;
- Name_Runtime_Library_Dir : constant Name_Id := N + 718;
+ Name_Ada_Roots : constant Name_Id := N + 617;
+ Name_Archive_Builder : constant Name_Id := N + 618;
+ Name_Archive_Indexer : constant Name_Id := N + 619;
+ Name_Archive_Suffix : constant Name_Id := N + 620;
+ Name_Binder : constant Name_Id := N + 621;
+ Name_Binder_Prefix : constant Name_Id := N + 622;
+ Name_Body_Suffix : constant Name_Id := N + 623;
+ Name_Builder : constant Name_Id := N + 624;
+ Name_Builder_Switches : constant Name_Id := N + 625;
+ Name_Compiler : constant Name_Id := N + 626;
+ Name_Compiler_Kind : constant Name_Id := N + 627;
+ Name_Config_Body_File_Name : constant Name_Id := N + 628;
+ Name_Config_Body_File_Name_Pattern : constant Name_Id := N + 629;
+ Name_Config_File_Switches : constant Name_Id := N + 630;
+ Name_Config_File_Unique : constant Name_Id := N + 631;
+ Name_Config_Spec_File_Name : constant Name_Id := N + 632;
+ Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + 633;
+ Name_Cross_Reference : constant Name_Id := N + 634;
+ Name_Default_Language : constant Name_Id := N + 635;
+ Name_Default_Switches : constant Name_Id := N + 636;
+ Name_Dependency_Driver : constant Name_Id := N + 637;
+ Name_Dependency_File_Kind : constant Name_Id := N + 638;
+ Name_Dependency_Switches : constant Name_Id := N + 639;
+ Name_Driver : constant Name_Id := N + 640;
+ Name_Excluded_Source_Dirs : constant Name_Id := N + 641;
+ Name_Excluded_Source_Files : constant Name_Id := N + 642;
+ Name_Exec_Dir : constant Name_Id := N + 643;
+ Name_Executable : constant Name_Id := N + 644;
+ Name_Executable_Suffix : constant Name_Id := N + 645;
+ Name_Extends : constant Name_Id := N + 646;
+ Name_Externally_Built : constant Name_Id := N + 647;
+ Name_Finder : constant Name_Id := N + 648;
+ Name_Global_Configuration_Pragmas : constant Name_Id := N + 649;
+ Name_Global_Config_File : constant Name_Id := N + 650;
+ Name_Gnatls : constant Name_Id := N + 651;
+ Name_Gnatstub : constant Name_Id := N + 652;
+ Name_Implementation : constant Name_Id := N + 653;
+ Name_Implementation_Exceptions : constant Name_Id := N + 654;
+ Name_Implementation_Suffix : constant Name_Id := N + 655;
+ Name_Include_Switches : constant Name_Id := N + 656;
+ Name_Include_Path : constant Name_Id := N + 657;
+ Name_Include_Path_File : constant Name_Id := N + 658;
+ Name_Language_Kind : constant Name_Id := N + 659;
+ Name_Language_Processing : constant Name_Id := N + 660;
+ Name_Languages : constant Name_Id := N + 661;
+ Name_Library_Ali_Dir : constant Name_Id := N + 662;
+ Name_Library_Auto_Init : constant Name_Id := N + 663;
+ Name_Library_Auto_Init_Supported : constant Name_Id := N + 664;
+ Name_Library_Builder : constant Name_Id := N + 665;
+ Name_Library_Dir : constant Name_Id := N + 666;
+ Name_Library_GCC : constant Name_Id := N + 667;
+ Name_Library_Interface : constant Name_Id := N + 668;
+ Name_Library_Kind : constant Name_Id := N + 669;
+ Name_Library_Name : constant Name_Id := N + 670;
+ Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + 671;
+ Name_Library_Options : constant Name_Id := N + 672;
+ Name_Library_Partial_Linker : constant Name_Id := N + 673;
+ Name_Library_Reference_Symbol_File : constant Name_Id := N + 674;
+ Name_Library_Src_Dir : constant Name_Id := N + 675;
+ Name_Library_Support : constant Name_Id := N + 676;
+ Name_Library_Symbol_File : constant Name_Id := N + 677;
+ Name_Library_Symbol_Policy : constant Name_Id := N + 678;
+ Name_Library_Version : constant Name_Id := N + 679;
+ Name_Library_Version_Switches : constant Name_Id := N + 680;
+ Name_Linker : constant Name_Id := N + 681;
+ Name_Linker_Executable_Option : constant Name_Id := N + 682;
+ Name_Linker_Lib_Dir_Option : constant Name_Id := N + 683;
+ Name_Linker_Lib_Name_Option : constant Name_Id := N + 684;
+ Name_Local_Config_File : constant Name_Id := N + 685;
+ Name_Local_Configuration_Pragmas : constant Name_Id := N + 686;
+ Name_Locally_Removed_Files : constant Name_Id := N + 687;
+ Name_Mapping_File_Switches : constant Name_Id := N + 688;
+ Name_Mapping_Spec_Suffix : constant Name_Id := N + 689;
+ Name_Mapping_Body_Suffix : constant Name_Id := N + 690;
+ Name_Metrics : constant Name_Id := N + 691;
+ Name_Naming : constant Name_Id := N + 692;
+ Name_Objects_Path : constant Name_Id := N + 693;
+ Name_Objects_Path_File : constant Name_Id := N + 694;
+ Name_Object_Dir : constant Name_Id := N + 695;
+ Name_Pic_Option : constant Name_Id := N + 696;
+ Name_Pretty_Printer : constant Name_Id := N + 697;
+ Name_Prefix : constant Name_Id := N + 698;
+ Name_Project : constant Name_Id := N + 699;
+ Name_Roots : constant Name_Id := N + 700;
+ Name_Required_Switches : constant Name_Id := N + 701;
+ Name_Run_Path_Option : constant Name_Id := N + 702;
+ Name_Runtime_Project : constant Name_Id := N + 703;
+ Name_Shared_Library_Minimum_Switches : constant Name_Id := N + 704;
+ Name_Shared_Library_Prefix : constant Name_Id := N + 705;
+ Name_Shared_Library_Suffix : constant Name_Id := N + 706;
+ Name_Separate_Suffix : constant Name_Id := N + 707;
+ Name_Source_Dirs : constant Name_Id := N + 708;
+ Name_Source_Files : constant Name_Id := N + 709;
+ Name_Source_List_File : constant Name_Id := N + 710;
+ Name_Spec : constant Name_Id := N + 711;
+ Name_Spec_Suffix : constant Name_Id := N + 712;
+ Name_Specification : constant Name_Id := N + 713;
+ Name_Specification_Exceptions : constant Name_Id := N + 714;
+ Name_Specification_Suffix : constant Name_Id := N + 715;
+ Name_Stack : constant Name_Id := N + 716;
+ Name_Switches : constant Name_Id := N + 717;
+ Name_Symbolic_Link_Supported : constant Name_Id := N + 718;
+ Name_Toolchain_Description : constant Name_Id := N + 719;
+ Name_Toolchain_Version : constant Name_Id := N + 720;
+ Name_Runtime_Library_Dir : constant Name_Id := N + 721;
-- Other miscellaneous names used in front end
- Name_Unaligned_Valid : constant Name_Id := N + 719;
+ Name_Unaligned_Valid : constant Name_Id := N + 722;
-- Ada 2005 reserved words
- First_2005_Reserved_Word : constant Name_Id := N + 720;
- Name_Interface : constant Name_Id := N + 720;
- Name_Overriding : constant Name_Id := N + 721;
- Name_Synchronized : constant Name_Id := N + 722;
- Last_2005_Reserved_Word : constant Name_Id := N + 722;
+ First_2005_Reserved_Word : constant Name_Id := N + 723;
+ Name_Interface : constant Name_Id := N + 723;
+ Name_Overriding : constant Name_Id := N + 724;
+ Name_Synchronized : constant Name_Id := N + 725;
+ Last_2005_Reserved_Word : constant Name_Id := N + 725;
subtype Ada_2005_Reserved_Words is
Name_Id range First_2005_Reserved_Word .. Last_2005_Reserved_Word;
-- Mark last defined name for consistency check in Snames body
- Last_Predefined_Name : constant Name_Id := N + 722;
+ Last_Predefined_Name : constant Name_Id := N + 725;
---------------------------------------
-- Subtypes Defining Name Categories --
@@ -1160,6 +1170,7 @@ package Snames is
Attribute_Epsilon,
Attribute_Exponent,
Attribute_External_Tag,
+ Attribute_Fast_Math,
Attribute_First,
Attribute_First_Bit,
Attribute_Fixed_Value,
@@ -1286,12 +1297,14 @@ package Snames is
type Convention_Id is (
- -- The conventions that are defined by the RM come first
+ -- The native-to-Ada (non-foreign) conventions come first. These include
+ -- the ones defined in the RM, plus Stubbed.
Convention_Ada,
Convention_Intrinsic,
Convention_Entry,
Convention_Protected,
+ Convention_Stubbed,
-- The remaining conventions are foreign language conventions
@@ -1302,8 +1315,7 @@ package Snames is
Convention_CPP,
Convention_Fortran,
Convention_Java,
- Convention_Stdcall, -- also DLL, Win32
- Convention_Stubbed);
+ Convention_Stdcall); -- also DLL, Win32
-- Note: Convention C_Pass_By_Copy is allowed only for record
-- types (where it is treated like C except that the appropriate
@@ -1314,7 +1326,7 @@ package Snames is
-- Plenty of space for expansion
subtype Foreign_Convention is
- Convention_Id range Convention_Assembler .. Convention_Stdcall;
+ Convention_Id range Convention_Assembler .. Convention_Id'Last;
-----------------------------------
-- Locking Policy ID Definitions --
@@ -1352,6 +1364,7 @@ package Snames is
Pragma_Extend_System,
Pragma_Extensions_Allowed,
Pragma_External_Name_Casing,
+ Pragma_Favor_Top_Level,
Pragma_Float_Representation,
Pragma_Implicit_Packing,
Pragma_Initialize_Scalars,
@@ -1422,6 +1435,7 @@ package Snames is
Pragma_External,
Pragma_Finalize_Storage_Only,
Pragma_Ident,
+ Pragma_Implemented_By_Entry,
Pragma_Import,
Pragma_Import_Exception,
Pragma_Import_Function,
@@ -1496,6 +1510,7 @@ package Snames is
-- match existing attribute names.
Pragma_AST_Entry,
+ Pragma_Fast_Math,
Pragma_Interface,
Pragma_Priority,
Pragma_Storage_Size,
@@ -1578,10 +1593,18 @@ package Snames is
-- Test to see if the name N is the name of an operator symbol
function Is_Pragma_Name (N : Name_Id) return Boolean;
- -- Test to see if the name N is the name of a recognized pragma. Note
- -- that pragmas AST_Entry, Priority, Storage_Size, and Storage_Unit are
- -- recognized as pragmas by this function even though their names are
- -- separate from the other pragma names.
+ -- Test to see if the name N is the name of a recognized pragma. Note that
+ -- pragmas AST_Entry, Fast_Math, Priority, Storage_Size, and Storage_Unit
+ -- are recognized as pragmas by this function even though their names are
+ -- separate from the other pragma names. For this reason, clients should
+ -- always use this function, rather than do range tests on Name_Id values.
+
+ function Is_Configuration_Pragma_Name (N : Name_Id) return Boolean;
+ -- Test to see if the name N is the name of a recognized configuration
+ -- pragma. Note that pragma Fast_Math is recognized as a configuration
+ -- pragma by this function even though its name is separate from other
+ -- configuration pragma names. For this reason, clients should always
+ -- use this function, rather than do range tests on Name_Id values.
function Is_Queuing_Policy_Name (N : Name_Id) return Boolean;
-- Test to see if the name N is the name of a recognized queuing policy
@@ -1620,18 +1643,17 @@ package Snames is
-- to call this function with a name that is not the name of a check.
function Get_Task_Dispatching_Policy_Id
- (N : Name_Id)
- return Task_Dispatching_Policy_Id;
- -- Returns Id of task dispatching policy corresponding to given name.
- -- It is an error to call this function with a name that is not the
- -- name of a check.
+ (N : Name_Id) return Task_Dispatching_Policy_Id;
+ -- Returns Id of task dispatching policy corresponding to given name. It
+ -- is an error to call this function with a name that is not the name of
+ -- a defined check.
procedure Record_Convention_Identifier
(Id : Name_Id;
Convention : Convention_Id);
-- A call to this procedure, resulting from an occurrence of a pragma
- -- Convention_Identifier, records that from now on an occurrence of
- -- Id will be recognized as a name for the specified convention.
+ -- Convention_Identifier, records that from now on an occurrence of Id
+ -- will be recognized as a name for the specified convention.
private
pragma Inline (Is_Attribute_Name);
diff --git a/gcc/ada/snames.h b/gcc/ada/snames.h
index f94e0a2ef64..131ed99b4c9 100644
--- a/gcc/ada/snames.h
+++ b/gcc/ada/snames.h
@@ -76,113 +76,114 @@ extern unsigned char Get_Attribute_Id (int);
#define Attr_Epsilon 29
#define Attr_Exponent 30
#define Attr_External_Tag 31
-#define Attr_First 32
-#define Attr_First_Bit 33
-#define Attr_Fixed_Value 34
-#define Attr_Fore 35
-#define Attr_Has_Access_Values 36
-#define Attr_Has_Discriminants 37
-#define Attr_Identity 38
-#define Attr_Img 39
-#define Attr_Integer_Value 40
-#define Attr_Large 41
-#define Attr_Last 42
-#define Attr_Last_Bit 43
-#define Attr_Leading_Part 44
-#define Attr_Length 45
-#define Attr_Machine_Emax 46
-#define Attr_Machine_Emin 47
-#define Attr_Machine_Mantissa 48
-#define Attr_Machine_Overflows 49
-#define Attr_Machine_Radix 50
-#define Attr_Machine_Rounding 51
-#define Attr_Machine_Rounds 52
-#define Attr_Machine_Size 53
-#define Attr_Mantissa 54
-#define Attr_Max_Size_In_Storage_Elements 55
-#define Attr_Maximum_Alignment 56
-#define Attr_Mechanism_Code 57
-#define Attr_Mod 58
-#define Attr_Model_Emin 59
-#define Attr_Model_Epsilon 60
-#define Attr_Model_Mantissa 61
-#define Attr_Model_Small 62
-#define Attr_Modulus 63
-#define Attr_Null_Parameter 64
-#define Attr_Object_Size 65
-#define Attr_Partition_ID 66
-#define Attr_Passed_By_Reference 67
-#define Attr_Pool_Address 68
-#define Attr_Pos 69
-#define Attr_Position 70
-#define Attr_Priority 71
-#define Attr_Range 72
-#define Attr_Range_Length 73
-#define Attr_Round 74
-#define Attr_Safe_Emax 75
-#define Attr_Safe_First 76
-#define Attr_Safe_Large 77
-#define Attr_Safe_Last 78
-#define Attr_Safe_Small 79
-#define Attr_Scale 80
-#define Attr_Scaling 81
-#define Attr_Signed_Zeros 82
-#define Attr_Size 83
-#define Attr_Small 84
-#define Attr_Storage_Size 85
-#define Attr_Storage_Unit 86
-#define Attr_Stream_Size 87
-#define Attr_Tag 88
-#define Attr_Target_Name 89
-#define Attr_Terminated 90
-#define Attr_To_Address 91
-#define Attr_Type_Class 92
-#define Attr_UET_Address 93
-#define Attr_Unbiased_Rounding 94
-#define Attr_Unchecked_Access 95
-#define Attr_Unconstrained_Array 96
-#define Attr_Universal_Literal_String 97
-#define Attr_Unrestricted_Access 98
-#define Attr_VADS_Size 99
-#define Attr_Val 100
-#define Attr_Valid 101
-#define Attr_Value_Size 102
-#define Attr_Version 103
-#define Attr_Wchar_T_Size 104
-#define Attr_Wide_Wide_Width 105
-#define Attr_Wide_Width 106
-#define Attr_Width 107
-#define Attr_Word_Size 108
-#define Attr_Adjacent 109
-#define Attr_Ceiling 110
-#define Attr_Copy_Sign 111
-#define Attr_Floor 112
-#define Attr_Fraction 113
-#define Attr_Image 114
-#define Attr_Input 115
-#define Attr_Machine 116
-#define Attr_Max 117
-#define Attr_Min 118
-#define Attr_Model 119
-#define Attr_Pred 120
-#define Attr_Remainder 121
-#define Attr_Rounding 122
-#define Attr_Succ 123
-#define Attr_Truncation 124
-#define Attr_Value 125
-#define Attr_Wide_Image 126
-#define Attr_Wide_Wide_Image 127
-#define Attr_Wide_Value 128
-#define Attr_Wide_Wide_Value 129
-#define Attr_Output 130
-#define Attr_Read 131
-#define Attr_Write 132
-#define Attr_Elab_Body 133
-#define Attr_Elab_Spec 134
-#define Attr_Storage_Pool 135
-#define Attr_Base 136
-#define Attr_Class 137
-#define Attr_Stub_Type 138
+#define Attr_Fast_Math 32
+#define Attr_First 33
+#define Attr_First_Bit 34
+#define Attr_Fixed_Value 35
+#define Attr_Fore 36
+#define Attr_Has_Access_Values 37
+#define Attr_Has_Discriminants 38
+#define Attr_Identity 39
+#define Attr_Img 40
+#define Attr_Integer_Value 41
+#define Attr_Large 42
+#define Attr_Last 43
+#define Attr_Last_Bit 44
+#define Attr_Leading_Part 45
+#define Attr_Length 46
+#define Attr_Machine_Emax 47
+#define Attr_Machine_Emin 48
+#define Attr_Machine_Mantissa 49
+#define Attr_Machine_Overflows 50
+#define Attr_Machine_Radix 51
+#define Attr_Machine_Rounding 52
+#define Attr_Machine_Rounds 53
+#define Attr_Machine_Size 54
+#define Attr_Mantissa 55
+#define Attr_Max_Size_In_Storage_Elements 56
+#define Attr_Maximum_Alignment 57
+#define Attr_Mechanism_Code 58
+#define Attr_Mod 59
+#define Attr_Model_Emin 60
+#define Attr_Model_Epsilon 61
+#define Attr_Model_Mantissa 62
+#define Attr_Model_Small 63
+#define Attr_Modulus 64
+#define Attr_Null_Parameter 65
+#define Attr_Object_Size 66
+#define Attr_Partition_ID 67
+#define Attr_Passed_By_Reference 68
+#define Attr_Pool_Address 69
+#define Attr_Pos 70
+#define Attr_Position 71
+#define Attr_Priority 72
+#define Attr_Range 73
+#define Attr_Range_Length 74
+#define Attr_Round 75
+#define Attr_Safe_Emax 76
+#define Attr_Safe_First 77
+#define Attr_Safe_Large 78
+#define Attr_Safe_Last 79
+#define Attr_Safe_Small 80
+#define Attr_Scale 81
+#define Attr_Scaling 82
+#define Attr_Signed_Zeros 83
+#define Attr_Size 84
+#define Attr_Small 85
+#define Attr_Storage_Size 86
+#define Attr_Storage_Unit 87
+#define Attr_Stream_Size 88
+#define Attr_Tag 89
+#define Attr_Target_Name 90
+#define Attr_Terminated 91
+#define Attr_To_Address 92
+#define Attr_Type_Class 93
+#define Attr_UET_Address 94
+#define Attr_Unbiased_Rounding 95
+#define Attr_Unchecked_Access 96
+#define Attr_Unconstrained_Array 97
+#define Attr_Universal_Literal_String 98
+#define Attr_Unrestricted_Access 99
+#define Attr_VADS_Size 100
+#define Attr_Val 101
+#define Attr_Valid 102
+#define Attr_Value_Size 103
+#define Attr_Version 104
+#define Attr_Wchar_T_Size 105
+#define Attr_Wide_Wide_Width 106
+#define Attr_Wide_Width 107
+#define Attr_Width 108
+#define Attr_Word_Size 109
+#define Attr_Adjacent 110
+#define Attr_Ceiling 111
+#define Attr_Copy_Sign 112
+#define Attr_Floor 113
+#define Attr_Fraction 114
+#define Attr_Image 115
+#define Attr_Input 116
+#define Attr_Machine 117
+#define Attr_Max 118
+#define Attr_Min 119
+#define Attr_Model 120
+#define Attr_Pred 121
+#define Attr_Remainder 122
+#define Attr_Rounding 123
+#define Attr_Succ 124
+#define Attr_Truncation 125
+#define Attr_Value 126
+#define Attr_Wide_Image 127
+#define Attr_Wide_Wide_Image 128
+#define Attr_Wide_Value 129
+#define Attr_Wide_Wide_Value 130
+#define Attr_Output 131
+#define Attr_Read 132
+#define Attr_Write 133
+#define Attr_Elab_Body 134
+#define Attr_Elab_Spec 135
+#define Attr_Storage_Pool 136
+#define Attr_Base 137
+#define Attr_Class 138
+#define Attr_Stub_Type 139
/* Define the numeric values for the conventions. */
@@ -190,15 +191,15 @@ extern unsigned char Get_Attribute_Id (int);
#define Convention_Intrinsic 1
#define Convention_Entry 2
#define Convention_Protected 3
-#define Convention_Assembler 4
-#define Convention_C 5
-#define Convention_CIL 6
-#define Convention_COBOL 7
-#define Convention_CPP 8
-#define Convention_Fortran 9
-#define Convention_Java 10
-#define Convention_Stdcall 11
-#define Convention_Stubbed 12
+#define Convention_Stubbed 4
+#define Convention_Assembler 5
+#define Convention_C 6
+#define Convention_CIL 7
+#define Convention_COBOL 8
+#define Convention_CPP 9
+#define Convention_Fortran 10
+#define Convention_Java 11
+#define Convention_Stdcall 12
/* Define the function to check if a Name_Id value is a valid pragma */
@@ -235,145 +236,148 @@ extern unsigned char Get_Pragma_Id (int);
#define Pragma_Extend_System 17
#define Pragma_Extensions_Allowed 18
#define Pragma_External_Name_Casing 19
-#define Pragma_Float_Representation 20
-#define Pragma_Implicit_Packing 21
-#define Pragma_Initialize_Scalars 22
-#define Pragma_Interrupt_State 23
-#define Pragma_License 24
-#define Pragma_Locking_Policy 25
-#define Pragma_Long_Float 26
-#define Pragma_No_Run_Time 27
-#define Pragma_No_Strict_Aliasing 28
-#define Pragma_Normalize_Scalars 29
-#define Pragma_Polling 30
-#define Pragma_Persistent_BSS 31
-#define Pragma_Priority_Specific_Dispatching 32
-#define Pragma_Profile 33
-#define Pragma_Profile_Warnings 34
-#define Pragma_Propagate_Exceptions 35
-#define Pragma_Queuing_Policy 36
-#define Pragma_Ravenscar 37
-#define Pragma_Restricted_Run_Time 38
-#define Pragma_Restrictions 39
-#define Pragma_Restriction_Warnings 40
-#define Pragma_Reviewable 41
-#define Pragma_Source_File_Name 42
-#define Pragma_Source_File_Name_Project 43
-#define Pragma_Style_Checks 44
-#define Pragma_Suppress 45
-#define Pragma_Suppress_Exception_Locations 46
-#define Pragma_Task_Dispatching_Policy 47
-#define Pragma_Universal_Data 48
-#define Pragma_Unsuppress 49
-#define Pragma_Use_VADS_Size 50
-#define Pragma_Validity_Checks 51
-#define Pragma_Warnings 52
-#define Pragma_Wide_Character_Encoding 53
-#define Pragma_Abort_Defer 54
-#define Pragma_All_Calls_Remote 55
-#define Pragma_Annotate 56
-#define Pragma_Assert 57
-#define Pragma_Asynchronous 58
-#define Pragma_Atomic 59
-#define Pragma_Atomic_Components 60
-#define Pragma_Attach_Handler 61
-#define Pragma_CIL_Constructor 62
-#define Pragma_Comment 63
-#define Pragma_Common_Object 64
-#define Pragma_Complete_Representation 65
-#define Pragma_Complex_Representation 66
-#define Pragma_Controlled 67
-#define Pragma_Convention 68
-#define Pragma_CPP_Class 69
-#define Pragma_CPP_Constructor 70
-#define Pragma_CPP_Virtual 71
-#define Pragma_CPP_Vtable 72
-#define Pragma_Debug 73
-#define Pragma_Elaborate 74
-#define Pragma_Elaborate_All 75
-#define Pragma_Elaborate_Body 76
-#define Pragma_Export 77
-#define Pragma_Export_Exception 78
-#define Pragma_Export_Function 79
-#define Pragma_Export_Object 80
-#define Pragma_Export_Procedure 81
-#define Pragma_Export_Value 82
-#define Pragma_Export_Valued_Procedure 83
-#define Pragma_External 84
-#define Pragma_Finalize_Storage_Only 85
-#define Pragma_Ident 86
-#define Pragma_Import 87
-#define Pragma_Import_Exception 88
-#define Pragma_Import_Function 89
-#define Pragma_Import_Object 90
-#define Pragma_Import_Procedure 91
-#define Pragma_Import_Valued_Procedure 92
-#define Pragma_Inline 93
-#define Pragma_Inline_Always 94
-#define Pragma_Inline_Generic 95
-#define Pragma_Inspection_Point 96
-#define Pragma_Interface_Name 97
-#define Pragma_Interrupt_Handler 98
-#define Pragma_Interrupt_Priority 99
-#define Pragma_Java_Constructor 100
-#define Pragma_Java_Interface 101
-#define Pragma_Keep_Names 102
-#define Pragma_Link_With 103
-#define Pragma_Linker_Alias 104
-#define Pragma_Linker_Constructor 105
-#define Pragma_Linker_Destructor 106
-#define Pragma_Linker_Options 107
-#define Pragma_Linker_Section 108
-#define Pragma_List 109
-#define Pragma_Machine_Attribute 110
-#define Pragma_Main 111
-#define Pragma_Main_Storage 112
-#define Pragma_Memory_Size 113
-#define Pragma_No_Body 114
-#define Pragma_No_Return 115
-#define Pragma_Obsolescent 116
-#define Pragma_Optimize 117
-#define Pragma_Pack 118
-#define Pragma_Page 119
-#define Pragma_Passive 120
-#define Pragma_Preelaborable_Initialization 121
-#define Pragma_Preelaborate 122
-#define Pragma_Preelaborate_05 123
-#define Pragma_Psect_Object 124
-#define Pragma_Pure 125
-#define Pragma_Pure_05 126
-#define Pragma_Pure_Function 127
-#define Pragma_Remote_Call_Interface 128
-#define Pragma_Remote_Types 129
-#define Pragma_Share_Generic 130
-#define Pragma_Shared 131
-#define Pragma_Shared_Passive 132
-#define Pragma_Source_Reference 133
-#define Pragma_Static_Elaboration_Desired 134
-#define Pragma_Stream_Convert 135
-#define Pragma_Subtitle 136
-#define Pragma_Suppress_All 137
-#define Pragma_Suppress_Debug_Info 138
-#define Pragma_Suppress_Initialization 139
-#define Pragma_System_Name 140
-#define Pragma_Task_Info 141
-#define Pragma_Task_Name 142
-#define Pragma_Task_Storage 143
-#define Pragma_Time_Slice 144
-#define Pragma_Title 145
-#define Pragma_Unchecked_Union 146
-#define Pragma_Unimplemented_Unit 147
-#define Pragma_Universal_Aliasing 148
-#define Pragma_Unreferenced 149
-#define Pragma_Unreferenced_Objects 150
-#define Pragma_Unreserve_All_Interrupts 151
-#define Pragma_Volatile 152
-#define Pragma_Volatile_Components 153
-#define Pragma_Weak_External 154
-#define Pragma_AST_Entry 155
-#define Pragma_Interface 156
-#define Pragma_Priority 157
-#define Pragma_Storage_Size 158
-#define Pragma_Storage_Unit 159
+#define Pragma_Favor_Top_Level 20
+#define Pragma_Float_Representation 21
+#define Pragma_Implicit_Packing 22
+#define Pragma_Initialize_Scalars 23
+#define Pragma_Interrupt_State 24
+#define Pragma_License 25
+#define Pragma_Locking_Policy 26
+#define Pragma_Long_Float 27
+#define Pragma_No_Run_Time 28
+#define Pragma_No_Strict_Aliasing 29
+#define Pragma_Normalize_Scalars 30
+#define Pragma_Polling 31
+#define Pragma_Persistent_BSS 32
+#define Pragma_Priority_Specific_Dispatching 33
+#define Pragma_Profile 34
+#define Pragma_Profile_Warnings 35
+#define Pragma_Propagate_Exceptions 36
+#define Pragma_Queuing_Policy 37
+#define Pragma_Ravenscar 38
+#define Pragma_Restricted_Run_Time 39
+#define Pragma_Restrictions 40
+#define Pragma_Restriction_Warnings 41
+#define Pragma_Reviewable 42
+#define Pragma_Source_File_Name 43
+#define Pragma_Source_File_Name_Project 44
+#define Pragma_Style_Checks 45
+#define Pragma_Suppress 46
+#define Pragma_Suppress_Exception_Locations 47
+#define Pragma_Task_Dispatching_Policy 48
+#define Pragma_Universal_Data 49
+#define Pragma_Unsuppress 50
+#define Pragma_Use_VADS_Size 51
+#define Pragma_Validity_Checks 52
+#define Pragma_Warnings 53
+#define Pragma_Wide_Character_Encoding 54
+#define Pragma_Abort_Defer 55
+#define Pragma_All_Calls_Remote 56
+#define Pragma_Annotate 57
+#define Pragma_Assert 58
+#define Pragma_Asynchronous 59
+#define Pragma_Atomic 60
+#define Pragma_Atomic_Components 61
+#define Pragma_Attach_Handler 62
+#define Pragma_CIL_Constructor 63
+#define Pragma_Comment 64
+#define Pragma_Common_Object 65
+#define Pragma_Complete_Representation 66
+#define Pragma_Complex_Representation 67
+#define Pragma_Controlled 68
+#define Pragma_Convention 69
+#define Pragma_CPP_Class 70
+#define Pragma_CPP_Constructor 71
+#define Pragma_CPP_Virtual 72
+#define Pragma_CPP_Vtable 73
+#define Pragma_Debug 74
+#define Pragma_Elaborate 75
+#define Pragma_Elaborate_All 76
+#define Pragma_Elaborate_Body 77
+#define Pragma_Export 78
+#define Pragma_Export_Exception 79
+#define Pragma_Export_Function 80
+#define Pragma_Export_Object 81
+#define Pragma_Export_Procedure 82
+#define Pragma_Export_Value 83
+#define Pragma_Export_Valued_Procedure 84
+#define Pragma_External 85
+#define Pragma_Finalize_Storage_Only 86
+#define Pragma_Ident 87
+#define Pragma_Implemented_By_Entry 88
+#define Pragma_Import 89
+#define Pragma_Import_Exception 90
+#define Pragma_Import_Function 91
+#define Pragma_Import_Object 92
+#define Pragma_Import_Procedure 93
+#define Pragma_Import_Valued_Procedure 94
+#define Pragma_Inline 95
+#define Pragma_Inline_Always 96
+#define Pragma_Inline_Generic 97
+#define Pragma_Inspection_Point 98
+#define Pragma_Interface_Name 99
+#define Pragma_Interrupt_Handler 100
+#define Pragma_Interrupt_Priority 101
+#define Pragma_Java_Constructor 102
+#define Pragma_Java_Interface 103
+#define Pragma_Keep_Names 104
+#define Pragma_Link_With 105
+#define Pragma_Linker_Alias 106
+#define Pragma_Linker_Constructor 107
+#define Pragma_Linker_Destructor 108
+#define Pragma_Linker_Options 109
+#define Pragma_Linker_Section 110
+#define Pragma_List 111
+#define Pragma_Machine_Attribute 112
+#define Pragma_Main 113
+#define Pragma_Main_Storage 114
+#define Pragma_Memory_Size 115
+#define Pragma_No_Body 116
+#define Pragma_No_Return 117
+#define Pragma_Obsolescent 118
+#define Pragma_Optimize 119
+#define Pragma_Pack 120
+#define Pragma_Page 121
+#define Pragma_Passive 122
+#define Pragma_Preelaborable_Initialization 123
+#define Pragma_Preelaborate 124
+#define Pragma_Preelaborate_05 125
+#define Pragma_Psect_Object 126
+#define Pragma_Pure 127
+#define Pragma_Pure_05 128
+#define Pragma_Pure_Function 129
+#define Pragma_Remote_Call_Interface 130
+#define Pragma_Remote_Types 131
+#define Pragma_Share_Generic 132
+#define Pragma_Shared 133
+#define Pragma_Shared_Passive 134
+#define Pragma_Source_Reference 135
+#define Pragma_Static_Elaboration_Desired 136
+#define Pragma_Stream_Convert 137
+#define Pragma_Subtitle 138
+#define Pragma_Suppress_All 139
+#define Pragma_Suppress_Debug_Info 140
+#define Pragma_Suppress_Initialization 141
+#define Pragma_System_Name 142
+#define Pragma_Task_Info 143
+#define Pragma_Task_Name 144
+#define Pragma_Task_Storage 145
+#define Pragma_Time_Slice 146
+#define Pragma_Title 147
+#define Pragma_Unchecked_Union 148
+#define Pragma_Unimplemented_Unit 149
+#define Pragma_Universal_Aliasing 150
+#define Pragma_Unreferenced 151
+#define Pragma_Unreferenced_Objects 152
+#define Pragma_Unreserve_All_Interrupts 153
+#define Pragma_Volatile 154
+#define Pragma_Volatile_Components 155
+#define Pragma_Weak_External 156
+#define Pragma_AST_Entry 157
+#define Pragma_Fast_Math 158
+#define Pragma_Interface 159
+#define Pragma_Priority 160
+#define Pragma_Storage_Size 161
+#define Pragma_Storage_Unit 162
/* End of snames.h (C version of Snames package spec) */