Commit e10dab7f by Javier Miranda Committed by Arnaud Charlet

exp_attr.adb (N_Pragma): Chars field removed.

2008-03-26  Javier Miranda  <miranda@adacore.com>
	    Robert Dewar  <dewar@adacore.com>

	* exp_attr.adb (N_Pragma): Chars field removed.
	(Expand_N_Attribute_Reference): If the designated type associated with
	attribute 'Unrestricted_Access is a subprogram entity then replace it
	by an E_Subprogram_Type itype.
	Implement attribute Old

	* sem_attr.ads (Attribute_Class_Array): Move to snames.ads

	* sem_attr.adb (Build_Access_Subprogram_Itype): Add documentation.
	Replace call to
	New_Internal_Entity by call to Create_Itype to centralize calls
	building itypes, ad propagate the convention of the designated
	subprogram. In addition, disable the machinery cleaning constant
	indications from all entities in current scope when 'Unrestricted_Access
	corresponds with a node initializing a dispatch table slot.
	(Analyze_Attribute): Parameterless attributes returning a string or a
	type will not be called with improper arguments, so we can remove junk
	code that was dealing with this case.
	Implement attribute Old

	* snames.ads, snames.h, snames.adb: Add entries for attribute Old
	Add entry for pragma Optimize_Alignment
	New standard names Sync and Synchronize

From-SVN: r133559
parent acf63f8c
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2008, 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- --
......@@ -49,6 +49,7 @@ with Restrict; use Restrict;
with Rident; use Rident;
with Rtsfind; use Rtsfind;
with Sem; use Sem;
with Sem_Ch6; use Sem_Ch6;
with Sem_Ch7; use Sem_Ch7;
with Sem_Ch8; use Sem_Ch8;
with Sem_Eval; use Sem_Eval;
......@@ -611,6 +612,121 @@ package body Exp_Attr is
Ref_Object : constant Node_Id := Get_Referenced_Object (Pref);
begin
-- In order to improve the text of error messages, the designated
-- type of access-to-subprogram itypes is set by the semantics as
-- the associated subprogram entity (see sem_attr). Now we replace
-- such node with the proper E_Subprogram_Type itype.
if Id = Attribute_Unrestricted_Access
and then Is_Subprogram (Directly_Designated_Type (Typ))
then
-- The following assertion ensures that this special management
-- is done only for "Address!(Prim'Unrestricted_Access)" nodes.
-- At this stage other cases in which the designated type is
-- still a subprogram (instead of an E_Subprogram_Type) are
-- wrong because the semantics must have overriden the type of
-- the node with the type imposed by the context.
pragma Assert (Nkind (Parent (N)) = N_Unchecked_Type_Conversion
and then Etype (Parent (N)) = RTE (RE_Address));
declare
Subp : constant Entity_Id := Directly_Designated_Type (Typ);
Extra : Entity_Id := Empty;
New_Formal : Entity_Id;
Old_Formal : Entity_Id := First_Formal (Subp);
Subp_Typ : Entity_Id;
begin
Subp_Typ := Create_Itype (E_Subprogram_Type, N);
Set_Etype (Subp_Typ, Etype (Subp));
Set_Returns_By_Ref (Subp_Typ, Returns_By_Ref (Subp));
if Present (Old_Formal) then
New_Formal := New_Copy (Old_Formal);
Set_First_Entity (Subp_Typ, New_Formal);
loop
Set_Scope (New_Formal, Subp_Typ);
-- Handle itypes
if Is_Itype (Etype (New_Formal)) then
Extra := New_Copy (Etype (New_Formal));
if Ekind (Extra) = E_Record_Subtype
or else Ekind (Extra) = E_Class_Wide_Subtype
then
Set_Cloned_Subtype (Extra,
Etype (New_Formal));
end if;
Set_Etype (New_Formal, Extra);
Set_Scope (Etype (New_Formal), Subp_Typ);
end if;
Extra := New_Formal;
Next_Formal (Old_Formal);
exit when No (Old_Formal);
Set_Next_Entity (New_Formal,
New_Copy (Old_Formal));
Next_Entity (New_Formal);
end loop;
Set_Next_Entity (New_Formal, Empty);
Set_Last_Entity (Subp_Typ, Extra);
end if;
-- Now that the explicit formals have been duplicated,
-- any extra formals needed by the subprogram must be
-- created.
if Present (Extra) then
Set_Extra_Formal (Extra, Empty);
end if;
Create_Extra_Formals (Subp_Typ);
Set_Directly_Designated_Type (Typ, Subp_Typ);
-- Complete decoration of access-to-subprogram itype to
-- indicate to the backend that this itype corresponds to
-- a statically allocated dispatch table.
-- ??? more comments on structure here, three level parent
-- references are worrisome!
if Nkind (Ref_Object) in N_Has_Entity
and then Is_Dispatching_Operation (Entity (Ref_Object))
and then Present (Parent (Parent (N)))
and then Nkind (Parent (Parent (N))) = N_Aggregate
and then Present (Parent (Parent (Parent (N))))
then
declare
P : constant Node_Id :=
Parent (Parent (Parent (N)));
Prim : constant Entity_Id := Entity (Ref_Object);
begin
Set_Is_Static_Dispatch_Table_Entity (Typ,
(Is_Predefined_Dispatching_Operation (Prim)
and then Nkind (P) = N_Object_Declaration
and then Is_Static_Dispatch_Table_Entity
(Defining_Identifier (P)))
or else
(not Is_Predefined_Dispatching_Operation (Prim)
and then Nkind (P) = N_Aggregate
and then Present (Parent (P))
and then Nkind (Parent (P))
= N_Object_Declaration
and then Is_Static_Dispatch_Table_Entity
(Defining_Identifier (Parent (P)))));
end;
end if;
end;
end if;
if Is_Access_Protected_Subprogram_Type (Btyp) then
Expand_Access_To_Protected_Op (N, Pref, Typ);
......@@ -1208,18 +1324,20 @@ package body Exp_Attr is
-- Protected case
if Is_Protected_Type (Conctype) then
if Abort_Allowed
or else Restriction_Active (No_Entry_Queue) = False
or else Number_Entries (Conctype) > 1
then
Name :=
New_Reference_To
(RTE (RE_Protected_Entry_Caller), Loc);
else
Name :=
New_Reference_To
(RTE (RE_Protected_Single_Entry_Caller), Loc);
end if;
case Corresponding_Runtime_Package (Conctype) is
when System_Tasking_Protected_Objects_Entries =>
Name :=
New_Reference_To
(RTE (RE_Protected_Entry_Caller), Loc);
when System_Tasking_Protected_Objects_Single_Entry =>
Name :=
New_Reference_To
(RTE (RE_Protected_Single_Entry_Caller), Loc);
when others =>
raise Program_Error;
end case;
Rewrite (N,
Unchecked_Convert_To (Id_Kind,
......@@ -1488,31 +1606,35 @@ package body Exp_Attr is
if Is_Protected_Type (Conctyp) then
if Abort_Allowed
or else Restriction_Active (No_Entry_Queue) = False
or else Number_Entries (Conctyp) > 1
then
Name := New_Reference_To (RTE (RE_Protected_Count), Loc);
Call :=
Make_Function_Call (Loc,
Name => Name,
Parameter_Associations => New_List (
New_Reference_To (
Object_Ref (
Corresponding_Body (Parent (Conctyp))), Loc),
Entry_Index_Expression (
Loc, Entity (Entnam), Index, Scope (Entity (Entnam)))));
else
Name := New_Reference_To (RTE (RE_Protected_Count_Entry), Loc);
Call := Make_Function_Call (Loc,
Name => Name,
Parameter_Associations => New_List (
New_Reference_To (
Object_Ref (
Corresponding_Body (Parent (Conctyp))), Loc)));
end if;
case Corresponding_Runtime_Package (Conctyp) is
when System_Tasking_Protected_Objects_Entries =>
Name := New_Reference_To (RTE (RE_Protected_Count), Loc);
Call :=
Make_Function_Call (Loc,
Name => Name,
Parameter_Associations => New_List (
New_Reference_To (
Object_Ref (
Corresponding_Body (Parent (Conctyp))), Loc),
Entry_Index_Expression (Loc,
Entity (Entnam), Index, Scope (Entity (Entnam)))));
when System_Tasking_Protected_Objects_Single_Entry =>
Name := New_Reference_To
(RTE (RE_Protected_Count_Entry), Loc);
Call :=
Make_Function_Call (Loc,
Name => Name,
Parameter_Associations => New_List (
New_Reference_To (
Object_Ref (
Corresponding_Body (Parent (Conctyp))), Loc)));
when others =>
raise Program_Error;
end case;
-- Task case
......@@ -2726,6 +2848,41 @@ package body Exp_Attr is
-- The processing for Object_Size shares the processing for Size
---------
-- Old --
---------
when Attribute_Old => Old : declare
Tnn : constant Entity_Id :=
Make_Defining_Identifier (Loc,
Chars => New_Internal_Name ('T'));
Subp : Node_Id;
Asn_Stm : Node_Id;
begin
Subp := N;
loop
Subp := Parent (Subp);
exit when Nkind (Subp) = N_Subprogram_Body;
end loop;
Asn_Stm :=
Make_Object_Declaration (Loc,
Defining_Identifier => Tnn,
Constant_Present => True,
Object_Definition => New_Occurrence_Of (Etype (N), Loc),
Expression => Pref);
if Is_Empty_List (Declarations (Subp)) then
Set_Declarations (Subp, New_List (Asn_Stm));
Analyze (Asn_Stm);
else
Insert_Action (First (Declarations (Subp)), Asn_Stm);
end if;
Rewrite (N, New_Occurrence_Of (Tnn, Loc));
end Old;
------------
-- Output --
------------
......@@ -5177,8 +5334,9 @@ package body Exp_Attr is
N := First_Rep_Item (Implementation_Base_Type (T));
while Present (N) loop
if Nkind (N) = N_Pragma and then Chars (N) = Name_Stream_Convert then
if Nkind (N) = N_Pragma
and then Pragma_Name (N) = Name_Stream_Convert
then
-- For tagged types this pragma is not inherited, so we
-- must verify that it is defined for the given type and
-- not an ancestor.
......
......@@ -35,6 +35,7 @@ with Exp_Dist; use Exp_Dist;
with Exp_Util; use Exp_Util;
with Expander; use Expander;
with Freeze; use Freeze;
with Itypes; use Itypes;
with Lib; use Lib;
with Lib.Xref; use Lib.Xref;
with Nlists; use Nlists;
......@@ -447,18 +448,41 @@ package body Sem_Attr is
-- subprogram itself as the designated type. Type-checking in
-- this case compares the signatures of the designated types.
-- Note: This fragment of the tree is temporarily malformed
-- because the correct tree requires an E_Subprogram_Type entity
-- as the designated type. In most cases this designated type is
-- later overriden by the semantics with the type imposed by the
-- context during the resolution phase. In the specific case of
-- the expression Address!(Prim'Unrestricted_Access), used to
-- initialize slots of dispatch tables, this work will be done by
-- the expander (see Exp_Aggr).
-- The reason to temporarily add this kind of node to the tree
-- instead of a proper E_Subprogram_Type itype, is the following:
-- in case of errors found in the source file we report better
-- error messages. For example, instead of generating the
-- following error:
-- "expected access to subprogram with profile
-- defined at line X"
-- we currently generate:
-- "expected access to function Z defined at line X"
Set_Etype (N, Any_Type);
if not Is_Overloaded (P) then
Check_Local_Access (Entity (P));
if not Is_Intrinsic_Subprogram (Entity (P)) then
Acc_Type :=
New_Internal_Entity
(Get_Kind (Entity (P)), Current_Scope, Loc, 'A');
Acc_Type := Create_Itype (Get_Kind (Entity (P)), N);
Set_Is_Public (Acc_Type, False);
Set_Etype (Acc_Type, Acc_Type);
Set_Convention (Acc_Type, Convention (Entity (P)));
Set_Directly_Designated_Type (Acc_Type, Entity (P));
Set_Etype (N, Acc_Type);
Freeze_Before (N, Acc_Type);
end if;
else
......@@ -467,12 +491,13 @@ package body Sem_Attr is
Check_Local_Access (It.Nam);
if not Is_Intrinsic_Subprogram (It.Nam) then
Acc_Type :=
New_Internal_Entity
(Get_Kind (It.Nam), Current_Scope, Loc, 'A');
Acc_Type := Create_Itype (Get_Kind (It.Nam), N);
Set_Is_Public (Acc_Type, False);
Set_Etype (Acc_Type, Acc_Type);
Set_Convention (Acc_Type, Convention (It.Nam));
Set_Directly_Designated_Type (Acc_Type, It.Nam);
Add_One_Interp (N, Acc_Type, Acc_Type);
Freeze_Before (N, Acc_Type);
end if;
Get_Next_Interp (Index, It);
......@@ -502,9 +527,7 @@ package body Sem_Attr is
(Nkind (Par) = N_Component_Association
or else Nkind (Par) in N_Subexpr)
loop
if Nkind (Par) = N_Aggregate
or else Nkind (Par) = N_Extension_Aggregate
then
if Nkind_In (Par, N_Aggregate, N_Extension_Aggregate) then
if Etype (Par) = Typ then
Set_Has_Self_Reference (Par);
return True;
......@@ -552,7 +575,23 @@ package body Sem_Attr is
-- could modify local variables to be passed out of scope
if Aname = Name_Unrestricted_Access then
Kill_Current_Values;
-- Do not kill values on nodes initializing dispatch tables
-- slots. The construct Address!(Prim'Unrestricted_Access)
-- is currently generated by the expander only for this
-- purpose. Done to keep the quality of warnings currently
-- generated by the compiler (otherwise any declaration of
-- a tagged type cleans constant indications from its scope).
if Nkind (Parent (N)) = N_Unchecked_Type_Conversion
and then Etype (Parent (N)) = RTE (RE_Address)
and then Is_Dispatching_Operation
(Directly_Designated_Type (Etype (N)))
then
null;
else
Kill_Current_Values;
end if;
end if;
return;
......@@ -626,10 +665,9 @@ package body Sem_Attr is
if not In_Default_Expression
and then not Has_Completion (Scop)
and then
Nkind (Parent (N)) /= N_Discriminant_Association
and then
Nkind (Parent (N)) /= N_Index_Or_Discriminant_Constraint
and then not
Nkind_In (Parent (N), N_Discriminant_Association,
N_Index_Or_Discriminant_Constraint)
then
Error_Msg_N
("current instance attribute must appear alone", N);
......@@ -726,8 +764,8 @@ package body Sem_Attr is
Kill_Current_Values (Ent);
exit;
elsif Nkind (PP) = N_Selected_Component
or else Nkind (PP) = N_Indexed_Component
elsif Nkind_In (PP, N_Selected_Component,
N_Indexed_Component)
then
PP := Prefix (PP);
......@@ -1414,8 +1452,8 @@ package body Sem_Attr is
null;
elsif Is_List_Member (N)
and then Nkind (Parent (N)) /= N_Procedure_Call_Statement
and then Nkind (Parent (N)) /= N_Aggregate
and then not Nkind_In (Parent (N), N_Procedure_Call_Statement,
N_Aggregate)
then
null;
......@@ -2145,9 +2183,7 @@ package body Sem_Attr is
-- or of a variable of the enclosing task type.
else
if Nkind (Pref) = N_Identifier
or else Nkind (Pref) = N_Expanded_Name
then
if Nkind_In (Pref, N_Identifier, N_Expanded_Name) then
Ent := Entity (Pref);
if not OK_Entry (Ent)
......@@ -2297,9 +2333,7 @@ package body Sem_Attr is
begin
Check_E0;
if Nkind (P) = N_Identifier
or else Nkind (P) = N_Expanded_Name
then
if Nkind_In (P, N_Identifier, N_Expanded_Name) then
Ent := Entity (P);
if not Is_Entry (Ent) then
......@@ -2500,9 +2534,7 @@ package body Sem_Attr is
begin
Check_E0;
if Nkind (P) = N_Identifier
or else Nkind (P) = N_Expanded_Name
then
if Nkind_In (P, N_Identifier, N_Expanded_Name) then
Ent := Entity (P);
if Ekind (Ent) /= E_Entry then
......@@ -2623,7 +2655,6 @@ package body Sem_Attr is
when Attribute_Default_Bit_Order => Default_Bit_Order :
begin
Check_Standard_Prefix;
Check_E0;
if Bytes_Big_Endian then
Rewrite (N,
......@@ -2733,7 +2764,6 @@ package body Sem_Attr is
if Nkind (P) /= N_Identifier then
Error_Msg_N ("identifier expected (check name)", P);
elsif Get_Check_Id (Chars (P)) = No_Check_Id then
Error_Msg_N ("& is not a recognized check name", P);
end if;
......@@ -2802,7 +2832,6 @@ package body Sem_Attr is
---------------
when Attribute_Fast_Math =>
Check_E0;
Check_Standard_Prefix;
if Opt.Fast_Math then
......@@ -3320,9 +3349,8 @@ package body Sem_Attr is
-- Case of attribute used as actual for subprogram (positional)
elsif (Nkind (Parnt) = N_Procedure_Call_Statement
or else
Nkind (Parnt) = N_Function_Call)
elsif Nkind_In (Parnt, N_Procedure_Call_Statement,
N_Function_Call)
and then Is_Entity_Name (Name (Parnt))
then
Must_Be_Imported (Entity (Name (Parnt)));
......@@ -3330,9 +3358,8 @@ package body Sem_Attr is
-- Case of attribute used as actual for subprogram (named)
elsif Nkind (Parnt) = N_Parameter_Association
and then (Nkind (GParnt) = N_Procedure_Call_Statement
or else
Nkind (GParnt) = N_Function_Call)
and then Nkind_In (GParnt, N_Procedure_Call_Statement,
N_Function_Call)
and then Is_Entity_Name (Name (GParnt))
then
Must_Be_Imported (Entity (Name (GParnt)));
......@@ -3343,7 +3370,6 @@ package body Sem_Attr is
Bad_Null_Parameter
("Null_Parameter must be actual or default parameter");
end if;
end Null_Parameter;
-----------------
......@@ -3356,6 +3382,22 @@ package body Sem_Attr is
Check_Not_Incomplete_Type;
Set_Etype (N, Universal_Integer);
---------
-- Old --
---------
when Attribute_Old =>
Check_E0;
Set_Etype (N, P_Type);
if not Is_Subprogram (Current_Scope) then
Error_Attr ("attribute % can only appear within subprogram", N);
end if;
if Is_Limited_Type (P_Type) then
Error_Attr ("attribute % cannot apply to limited objects", P);
end if;
------------
-- Output --
------------
......@@ -3370,7 +3412,8 @@ package body Sem_Attr is
-- Partition_ID --
------------------
when Attribute_Partition_ID =>
when Attribute_Partition_ID => Partition_Id :
begin
Check_E0;
if P_Type /= Any_Type then
......@@ -3378,9 +3421,8 @@ package body Sem_Attr is
Error_Attr_P
("prefix of % attribute must be library-level entity");
-- The defining entity of prefix should not be declared inside
-- a Pure unit. RM E.1(8).
-- The Is_Pure flag has been set during declaration.
-- The defining entity of prefix should not be declared inside a
-- Pure unit. RM E.1(8). Is_Pure was set during declaration.
elsif Is_Entity_Name (P)
and then Is_Pure (Entity (P))
......@@ -3391,6 +3433,7 @@ package body Sem_Attr is
end if;
Set_Etype (N, Universal_Integer);
end Partition_Id;
-------------------------
-- Passed_By_Reference --
......@@ -3522,6 +3565,7 @@ package body Sem_Attr is
------------------
when Attribute_Range_Length =>
Check_E0;
Check_Discrete_Type;
Set_Etype (N, Universal_Integer);
......@@ -3654,7 +3698,8 @@ package body Sem_Attr is
-- Size --
----------
when Attribute_Size | Attribute_VADS_Size =>
when Attribute_Size | Attribute_VADS_Size => Size :
begin
Check_E0;
-- If prefix is parameterless function call, rewrite and resolve
......@@ -3693,6 +3738,7 @@ package body Sem_Attr is
Check_Not_Incomplete_Type;
Set_Etype (N, Universal_Integer);
end Size;
-----------
-- Small --
......@@ -3707,10 +3753,11 @@ package body Sem_Attr is
-- Storage_Pool --
------------------
when Attribute_Storage_Pool =>
if Is_Access_Type (P_Type) then
Check_E0;
when Attribute_Storage_Pool => Storage_Pool :
begin
Check_E0;
if Is_Access_Type (P_Type) then
if Ekind (P_Type) = E_Access_Subprogram_Type then
Error_Attr_P
("cannot use % attribute for access-to-subprogram type");
......@@ -3735,14 +3782,17 @@ package body Sem_Attr is
else
Error_Attr_P ("prefix of % attribute must be access type");
end if;
end Storage_Pool;
------------------
-- Storage_Size --
------------------
when Attribute_Storage_Size =>
when Attribute_Storage_Size => Storage_Size :
begin
Check_E0;
if Is_Task_Type (P_Type) then
Check_E0;
Set_Etype (N, Universal_Integer);
elsif Is_Access_Type (P_Type) then
......@@ -3754,7 +3804,6 @@ package body Sem_Attr is
if Is_Entity_Name (P)
and then Is_Type (Entity (P))
then
Check_E0;
Check_Type;
Set_Etype (N, Universal_Integer);
......@@ -3768,7 +3817,6 @@ package body Sem_Attr is
-- of an access value designating a task.
else
Check_E0;
Check_Task_Prefix;
Set_Etype (N, Universal_Integer);
end if;
......@@ -3776,6 +3824,7 @@ package body Sem_Attr is
else
Error_Attr_P ("prefix of % attribute must be access or task type");
end if;
end Storage_Size;
------------------
-- Storage_Unit --
......@@ -3845,7 +3894,8 @@ package body Sem_Attr is
-- Tag --
---------
when Attribute_Tag =>
when Attribute_Tag => Tag :
begin
Check_E0;
Check_Dereference;
......@@ -3875,6 +3925,7 @@ package body Sem_Attr is
-- Set appropriate type
Set_Etype (N, RTE (RE_Tag));
end Tag;
-----------------
-- Target_Name --
......@@ -3886,7 +3937,6 @@ package body Sem_Attr is
begin
Check_Standard_Prefix;
Check_E0;
TL := TN'Last;
......@@ -4022,9 +4072,7 @@ package body Sem_Attr is
Negative := False;
end if;
if Nkind (Expr) /= N_Integer_Literal
and then Nkind (Expr) /= N_Real_Literal
then
if not Nkind_In (Expr, N_Integer_Literal, N_Real_Literal) then
Error_Attr
("named number for % attribute must be simple literal", N);
end if;
......@@ -4987,12 +5035,11 @@ package body Sem_Attr is
then
P_Type := P_Entity;
-- We can fold 'Size applied to a type if the size is known
-- (as happens for a size from an attribute definition clause).
-- At this stage, this can happen only for types (e.g. record
-- types) for which the size is always non-static. We exclude
-- generic types from consideration (since they have bogus
-- sizes set within templates).
-- We can fold 'Size applied to a type if the size is known (as happens
-- for a size from an attribute definition clause). At this stage, this
-- can happen only for types (e.g. record types) for which the size is
-- always non-static. We exclude generic types from consideration (since
-- they have bogus sizes set within templates).
elsif Id = Attribute_Size
and then Is_Type (P_Entity)
......@@ -6924,6 +6971,7 @@ package body Sem_Attr is
Attribute_Input |
Attribute_Last_Bit |
Attribute_Maximum_Alignment |
Attribute_Old |
Attribute_Output |
Attribute_Partition_ID |
Attribute_Pool_Address |
......@@ -6961,10 +7009,10 @@ package body Sem_Attr is
-- An exception is the GNAT attribute Constrained_Array which is
-- defined to be a static attribute in all cases.
if Nkind (N) = N_Integer_Literal
or else Nkind (N) = N_Real_Literal
or else Nkind (N) = N_Character_Literal
or else Nkind (N) = N_String_Literal
if Nkind_In (N, N_Integer_Literal,
N_Real_Literal,
N_Character_Literal,
N_String_Literal)
or else (Is_Entity_Name (N)
and then Ekind (Entity (N)) = E_Enumeration_Literal)
then
......@@ -7060,9 +7108,8 @@ package body Sem_Attr is
if Is_Record_Type (Current_Scope)
and then
(Nkind (Parent (N)) = N_Discriminant_Association
or else
Nkind (Parent (N)) = N_Index_Or_Discriminant_Constraint)
Nkind_In (Parent (N), N_Discriminant_Association,
N_Index_Or_Discriminant_Constraint)
then
Indic := Parent (Parent (N));
while Present (Indic)
......@@ -7122,7 +7169,8 @@ package body Sem_Attr is
| Attribute_Unchecked_Access
| Attribute_Unrestricted_Access =>
Access_Attribute : begin
Access_Attribute :
begin
if Is_Variable (P) then
Note_Possible_Modification (P);
end if;
......
......@@ -206,6 +206,7 @@ package body Snames is
"no_run_time#" &
"no_strict_aliasing#" &
"normalize_scalars#" &
"optimize_alignment#" &
"polling#" &
"persistent_bss#" &
"priority_specific_dispatching#" &
......@@ -495,6 +496,7 @@ package body Snames is
"modulus#" &
"null_parameter#" &
"object_size#" &
"old#" &
"partition_id#" &
"passed_by_reference#" &
"pool_address#" &
......@@ -778,6 +780,8 @@ package body Snames is
"stack#" &
"switches#" &
"symbolic_link_supported#" &
"sync#" &
"synchronize#" &
"toolchain_description#" &
"toolchain_version#" &
"runtime_library_dir#" &
......
......@@ -371,37 +371,38 @@ package Snames is
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;
Name_Optimize_Alignment : constant Name_Id := N + 148; -- GNAT
Name_Polling : constant Name_Id := N + 149; -- GNAT
Name_Persistent_BSS : constant Name_Id := N + 150; -- GNAT
Name_Priority_Specific_Dispatching : constant Name_Id := N + 151; -- Ada 05
Name_Profile : constant Name_Id := N + 152; -- Ada 05
Name_Profile_Warnings : constant Name_Id := N + 153; -- GNAT
Name_Propagate_Exceptions : constant Name_Id := N + 154; -- GNAT
Name_Queuing_Policy : constant Name_Id := N + 155;
Name_Ravenscar : constant Name_Id := N + 156; -- GNAT
Name_Restricted_Run_Time : constant Name_Id := N + 157; -- GNAT
Name_Restrictions : constant Name_Id := N + 158;
Name_Restriction_Warnings : constant Name_Id := N + 159; -- GNAT
Name_Reviewable : constant Name_Id := N + 160;
Name_Source_File_Name : constant Name_Id := N + 161; -- GNAT
Name_Source_File_Name_Project : constant Name_Id := N + 162; -- GNAT
Name_Style_Checks : constant Name_Id := N + 163; -- GNAT
Name_Suppress : constant Name_Id := N + 164;
Name_Suppress_Exception_Locations : constant Name_Id := N + 165; -- GNAT
Name_Task_Dispatching_Policy : constant Name_Id := N + 166;
Name_Universal_Data : constant Name_Id := N + 167; -- AAMP
Name_Unsuppress : constant Name_Id := N + 168; -- GNAT
Name_Use_VADS_Size : constant Name_Id := N + 169; -- GNAT
Name_Validity_Checks : constant Name_Id := N + 170; -- GNAT
Name_Warnings : constant Name_Id := N + 171; -- GNAT
Name_Wide_Character_Encoding : constant Name_Id := N + 172; -- GNAT
Last_Configuration_Pragma_Name : constant Name_Id := N + 172;
-- Remaining pragma names
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
Name_Abort_Defer : constant Name_Id := N + 173; -- GNAT
Name_All_Calls_Remote : constant Name_Id := N + 174;
Name_Annotate : constant Name_Id := N + 175; -- GNAT
-- Note: AST_Entry is not in this list because its name matches -- VMS
-- the name of the corresponding attribute. However, it is
......@@ -409,74 +410,74 @@ package Snames is
-- 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
Name_Assert : constant Name_Id := N + 176; -- Ada 05
Name_Asynchronous : constant Name_Id := N + 177;
Name_Atomic : constant Name_Id := N + 178;
Name_Atomic_Components : constant Name_Id := N + 179;
Name_Attach_Handler : constant Name_Id := N + 180;
Name_CIL_Constructor : constant Name_Id := N + 181; -- GNAT
Name_Comment : constant Name_Id := N + 182; -- GNAT
Name_Common_Object : constant Name_Id := N + 183; -- GNAT
Name_Complete_Representation : constant Name_Id := N + 184; -- GNAT
Name_Complex_Representation : constant Name_Id := N + 185; -- GNAT
Name_Controlled : constant Name_Id := N + 186;
Name_Convention : constant Name_Id := N + 187;
Name_CPP_Class : constant Name_Id := N + 188; -- GNAT
Name_CPP_Constructor : constant Name_Id := N + 189; -- GNAT
Name_CPP_Virtual : constant Name_Id := N + 190; -- GNAT
Name_CPP_Vtable : constant Name_Id := N + 191; -- GNAT
Name_Debug : constant Name_Id := N + 192; -- GNAT
Name_Elaborate : constant Name_Id := N + 193; -- Ada 83
Name_Elaborate_All : constant Name_Id := N + 194;
Name_Elaborate_Body : constant Name_Id := N + 195;
Name_Export : constant Name_Id := N + 196;
Name_Export_Exception : constant Name_Id := N + 197; -- VMS
Name_Export_Function : constant Name_Id := N + 198; -- GNAT
Name_Export_Object : constant Name_Id := N + 199; -- GNAT
Name_Export_Procedure : constant Name_Id := N + 200; -- GNAT
Name_Export_Value : constant Name_Id := N + 201; -- GNAT
Name_Export_Valued_Procedure : constant Name_Id := N + 202; -- GNAT
Name_External : constant Name_Id := N + 203; -- GNAT
Name_Finalize_Storage_Only : constant Name_Id := N + 204; -- GNAT
Name_Ident : constant Name_Id := N + 205; -- VMS
Name_Implemented_By_Entry : constant Name_Id := N + 206; -- Ada 05
Name_Import : constant Name_Id := N + 207;
Name_Import_Exception : constant Name_Id := N + 208; -- VMS
Name_Import_Function : constant Name_Id := N + 209; -- GNAT
Name_Import_Object : constant Name_Id := N + 210; -- GNAT
Name_Import_Procedure : constant Name_Id := N + 211; -- GNAT
Name_Import_Valued_Procedure : constant Name_Id := N + 212; -- GNAT
Name_Inline : constant Name_Id := N + 213;
Name_Inline_Always : constant Name_Id := N + 214; -- GNAT
Name_Inline_Generic : constant Name_Id := N + 215; -- GNAT
Name_Inspection_Point : constant Name_Id := N + 216;
Name_Interface_Name : constant Name_Id := N + 217; -- GNAT
Name_Interrupt_Handler : constant Name_Id := N + 218;
Name_Interrupt_Priority : constant Name_Id := N + 219;
Name_Java_Constructor : constant Name_Id := N + 220; -- GNAT
Name_Java_Interface : constant Name_Id := N + 221; -- GNAT
Name_Keep_Names : constant Name_Id := N + 222; -- GNAT
Name_Link_With : constant Name_Id := N + 223; -- GNAT
Name_Linker_Alias : constant Name_Id := N + 224; -- GNAT
Name_Linker_Constructor : constant Name_Id := N + 225; -- GNAT
Name_Linker_Destructor : constant Name_Id := N + 226; -- GNAT
Name_Linker_Options : constant Name_Id := N + 227;
Name_Linker_Section : constant Name_Id := N + 228; -- GNAT
Name_List : constant Name_Id := N + 229;
Name_Machine_Attribute : constant Name_Id := N + 230; -- GNAT
Name_Main : constant Name_Id := N + 231; -- GNAT
Name_Main_Storage : constant Name_Id := N + 232; -- GNAT
Name_Memory_Size : constant Name_Id := N + 233; -- Ada 83
Name_No_Body : constant Name_Id := N + 234; -- GNAT
Name_No_Return : constant Name_Id := N + 235; -- GNAT
Name_Obsolescent : constant Name_Id := N + 236; -- GNAT
Name_Optimize : constant Name_Id := N + 237;
Name_Pack : constant Name_Id := N + 238;
Name_Page : constant Name_Id := N + 239;
Name_Passive : constant Name_Id := N + 240; -- GNAT
Name_Preelaborable_Initialization : constant Name_Id := N + 241; -- Ada 05
Name_Preelaborate : constant Name_Id := N + 242;
Name_Preelaborate_05 : constant Name_Id := N + 243; -- GNAT
-- Note: Priority is not in this list because its name matches
-- the name of the corresponding attribute. However, it is
......@@ -484,15 +485,15 @@ package Snames is
-- 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;
Name_Psect_Object : constant Name_Id := N + 244; -- VMS
Name_Pure : constant Name_Id := N + 245;
Name_Pure_05 : constant Name_Id := N + 246; -- GNAT
Name_Pure_Function : constant Name_Id := N + 247; -- GNAT
Name_Remote_Call_Interface : constant Name_Id := N + 248;
Name_Remote_Types : constant Name_Id := N + 249;
Name_Share_Generic : constant Name_Id := N + 250; -- GNAT
Name_Shared : constant Name_Id := N + 251; -- Ada 83
Name_Shared_Passive : constant Name_Id := N + 252;
-- Note: Storage_Size is not in this list because its name
-- matches the name of the corresponding attribute. However,
......@@ -503,30 +504,30 @@ package Snames is
-- Note: Storage_Unit is also omitted from the list because
-- of a clash with an attribute name, and is treated similarly.
Name_Source_Reference : constant Name_Id := N + 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_Unmodified : constant Name_Id := N + 268; -- GNAT
Name_Unreferenced : constant Name_Id := N + 269; -- GNAT
Name_Unreferenced_Objects : constant Name_Id := N + 270; -- GNAT
Name_Unreserve_All_Interrupts : constant Name_Id := N + 271; -- GNAT
Name_Volatile : constant Name_Id := N + 272;
Name_Volatile_Components : constant Name_Id := N + 273;
Name_Weak_External : constant Name_Id := N + 274; -- GNAT
Last_Pragma_Name : constant Name_Id := N + 274;
Name_Source_Reference : constant Name_Id := N + 253; -- GNAT
Name_Static_Elaboration_Desired : constant Name_Id := N + 254; -- GNAT
Name_Stream_Convert : constant Name_Id := N + 255; -- GNAT
Name_Subtitle : constant Name_Id := N + 256; -- GNAT
Name_Suppress_All : constant Name_Id := N + 257; -- GNAT
Name_Suppress_Debug_Info : constant Name_Id := N + 258; -- GNAT
Name_Suppress_Initialization : constant Name_Id := N + 259; -- GNAT
Name_System_Name : constant Name_Id := N + 260; -- Ada 83
Name_Task_Info : constant Name_Id := N + 261; -- GNAT
Name_Task_Name : constant Name_Id := N + 262; -- GNAT
Name_Task_Storage : constant Name_Id := N + 263; -- VMS
Name_Time_Slice : constant Name_Id := N + 264; -- GNAT
Name_Title : constant Name_Id := N + 265; -- GNAT
Name_Unchecked_Union : constant Name_Id := N + 266; -- GNAT
Name_Unimplemented_Unit : constant Name_Id := N + 267; -- GNAT
Name_Universal_Aliasing : constant Name_Id := N + 268; -- GNAT
Name_Unmodified : constant Name_Id := N + 269; -- GNAT
Name_Unreferenced : constant Name_Id := N + 270; -- GNAT
Name_Unreferenced_Objects : constant Name_Id := N + 271; -- GNAT
Name_Unreserve_All_Interrupts : constant Name_Id := N + 272; -- GNAT
Name_Volatile : constant Name_Id := N + 273;
Name_Volatile_Components : constant Name_Id := N + 274;
Name_Weak_External : constant Name_Id := N + 275; -- GNAT
Last_Pragma_Name : constant Name_Id := N + 275;
-- Language convention names for pragma Convention/Export/Import/Interface
-- Note that Name_C is not included in this list, since it was already
......@@ -537,119 +538,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 + 275;
Name_Ada : constant Name_Id := N + 275;
Name_Assembler : constant Name_Id := N + 276;
Name_CIL : constant Name_Id := N + 277;
Name_COBOL : constant Name_Id := N + 278;
Name_CPP : constant Name_Id := N + 279;
Name_Fortran : constant Name_Id := N + 280;
Name_Intrinsic : constant Name_Id := N + 281;
Name_Java : constant Name_Id := N + 282;
Name_Stdcall : constant Name_Id := N + 283;
Name_Stubbed : constant Name_Id := N + 284;
Last_Convention_Name : constant Name_Id := N + 284;
First_Convention_Name : constant Name_Id := N + 276;
Name_Ada : constant Name_Id := N + 276;
Name_Assembler : constant Name_Id := N + 277;
Name_CIL : constant Name_Id := N + 278;
Name_COBOL : constant Name_Id := N + 279;
Name_CPP : constant Name_Id := N + 280;
Name_Fortran : constant Name_Id := N + 281;
Name_Intrinsic : constant Name_Id := N + 282;
Name_Java : constant Name_Id := N + 283;
Name_Stdcall : constant Name_Id := N + 284;
Name_Stubbed : constant Name_Id := N + 285;
Last_Convention_Name : constant Name_Id := N + 285;
-- The following names are preset as synonyms for Assembler
Name_Asm : constant Name_Id := N + 285;
Name_Assembly : constant Name_Id := N + 286;
Name_Asm : constant Name_Id := N + 286;
Name_Assembly : constant Name_Id := N + 287;
-- The following names are preset as synonyms for C
Name_Default : constant Name_Id := N + 287;
Name_Default : constant Name_Id := N + 288;
-- Name_Exernal (previously defined as pragma)
-- The following names are preset as synonyms for CPP
Name_C_Plus_Plus : constant Name_Id := N + 288;
Name_C_Plus_Plus : constant Name_Id := N + 289;
-- The following names are present as synonyms for Stdcall
Name_DLL : constant Name_Id := N + 289;
Name_Win32 : constant Name_Id := N + 290;
Name_DLL : constant Name_Id := N + 290;
Name_Win32 : constant Name_Id := N + 291;
-- Other special names used in processing pragmas
Name_As_Is : constant Name_Id := N + 291;
Name_Attribute_Name : constant Name_Id := N + 292;
Name_Body_File_Name : constant Name_Id := N + 293;
Name_Boolean_Entry_Barriers : constant Name_Id := N + 294;
Name_Check : constant Name_Id := N + 295;
Name_Casing : constant Name_Id := N + 296;
Name_Code : constant Name_Id := N + 297;
Name_Component : constant Name_Id := N + 298;
Name_Component_Size_4 : constant Name_Id := N + 299;
Name_Copy : constant Name_Id := N + 300;
Name_D_Float : constant Name_Id := N + 301;
Name_Descriptor : constant Name_Id := N + 302;
Name_Dot_Replacement : constant Name_Id := N + 303;
Name_Dynamic : constant Name_Id := N + 304;
Name_Entity : constant Name_Id := N + 305;
Name_Entry_Count : constant Name_Id := N + 306;
Name_External_Name : constant Name_Id := N + 307;
Name_First_Optional_Parameter : constant Name_Id := N + 308;
Name_Form : constant Name_Id := N + 309;
Name_G_Float : constant Name_Id := N + 310;
Name_Gcc : constant Name_Id := N + 311;
Name_Gnat : constant Name_Id := N + 312;
Name_GPL : constant Name_Id := N + 313;
Name_IEEE_Float : constant Name_Id := N + 314;
Name_Ignore : constant Name_Id := N + 315;
Name_Info : constant Name_Id := N + 316;
Name_Internal : constant Name_Id := N + 317;
Name_Link_Name : constant Name_Id := N + 318;
Name_Lowercase : constant Name_Id := N + 319;
Name_Max_Entry_Queue_Depth : constant Name_Id := N + 320;
Name_Max_Entry_Queue_Length : constant Name_Id := N + 321;
Name_Max_Size : constant Name_Id := N + 322;
Name_Mechanism : constant Name_Id := N + 323;
Name_Message : constant Name_Id := N + 324;
Name_Mixedcase : constant Name_Id := N + 325;
Name_Modified_GPL : constant Name_Id := N + 326;
Name_Name : constant Name_Id := N + 327;
Name_NCA : constant Name_Id := N + 328;
Name_No : constant Name_Id := N + 329;
Name_No_Dependence : constant Name_Id := N + 330;
Name_No_Dynamic_Attachment : constant Name_Id := N + 331;
Name_No_Dynamic_Interrupts : constant Name_Id := N + 332;
Name_No_Requeue : constant Name_Id := N + 333;
Name_No_Requeue_Statements : constant Name_Id := N + 334;
Name_No_Task_Attributes : constant Name_Id := N + 335;
Name_No_Task_Attributes_Package : constant Name_Id := N + 336;
Name_On : constant Name_Id := N + 337;
Name_Parameter_Types : constant Name_Id := N + 338;
Name_Reference : constant Name_Id := N + 339;
Name_Restricted : constant Name_Id := N + 340;
Name_Result_Mechanism : constant Name_Id := N + 341;
Name_Result_Type : constant Name_Id := N + 342;
Name_Runtime : constant Name_Id := N + 343;
Name_SB : constant Name_Id := N + 344;
Name_Secondary_Stack_Size : constant Name_Id := N + 345;
Name_Section : constant Name_Id := N + 346;
Name_Semaphore : constant Name_Id := N + 347;
Name_Simple_Barriers : constant Name_Id := N + 348;
Name_Spec_File_Name : constant Name_Id := N + 349;
Name_State : constant Name_Id := N + 350;
Name_Static : constant Name_Id := N + 351;
Name_Stack_Size : constant Name_Id := N + 352;
Name_Subunit_File_Name : constant Name_Id := N + 353;
Name_Task_Stack_Size_Default : constant Name_Id := N + 354;
Name_Task_Type : constant Name_Id := N + 355;
Name_Time_Slicing_Enabled : constant Name_Id := N + 356;
Name_Top_Guard : constant Name_Id := N + 357;
Name_UBA : constant Name_Id := N + 358;
Name_UBS : constant Name_Id := N + 359;
Name_UBSB : constant Name_Id := N + 360;
Name_Unit_Name : constant Name_Id := N + 361;
Name_Unknown : constant Name_Id := N + 362;
Name_Unrestricted : constant Name_Id := N + 363;
Name_Uppercase : constant Name_Id := N + 364;
Name_User : constant Name_Id := N + 365;
Name_VAX_Float : constant Name_Id := N + 366;
Name_VMS : constant Name_Id := N + 367;
Name_Vtable_Ptr : constant Name_Id := N + 368;
Name_Working_Storage : constant Name_Id := N + 369;
Name_As_Is : constant Name_Id := N + 292;
Name_Attribute_Name : constant Name_Id := N + 293;
Name_Body_File_Name : constant Name_Id := N + 294;
Name_Boolean_Entry_Barriers : constant Name_Id := N + 295;
Name_Check : constant Name_Id := N + 296;
Name_Casing : constant Name_Id := N + 297;
Name_Code : constant Name_Id := N + 298;
Name_Component : constant Name_Id := N + 299;
Name_Component_Size_4 : constant Name_Id := N + 300;
Name_Copy : constant Name_Id := N + 301;
Name_D_Float : constant Name_Id := N + 302;
Name_Descriptor : constant Name_Id := N + 303;
Name_Dot_Replacement : constant Name_Id := N + 304;
Name_Dynamic : constant Name_Id := N + 305;
Name_Entity : constant Name_Id := N + 306;
Name_Entry_Count : constant Name_Id := N + 307;
Name_External_Name : constant Name_Id := N + 308;
Name_First_Optional_Parameter : constant Name_Id := N + 309;
Name_Form : constant Name_Id := N + 310;
Name_G_Float : constant Name_Id := N + 311;
Name_Gcc : constant Name_Id := N + 312;
Name_Gnat : constant Name_Id := N + 313;
Name_GPL : constant Name_Id := N + 314;
Name_IEEE_Float : constant Name_Id := N + 315;
Name_Ignore : constant Name_Id := N + 316;
Name_Info : constant Name_Id := N + 317;
Name_Internal : constant Name_Id := N + 318;
Name_Link_Name : constant Name_Id := N + 319;
Name_Lowercase : constant Name_Id := N + 320;
Name_Max_Entry_Queue_Depth : constant Name_Id := N + 321;
Name_Max_Entry_Queue_Length : constant Name_Id := N + 322;
Name_Max_Size : constant Name_Id := N + 323;
Name_Mechanism : constant Name_Id := N + 324;
Name_Message : constant Name_Id := N + 325;
Name_Mixedcase : constant Name_Id := N + 326;
Name_Modified_GPL : constant Name_Id := N + 327;
Name_Name : constant Name_Id := N + 328;
Name_NCA : constant Name_Id := N + 329;
Name_No : constant Name_Id := N + 330;
Name_No_Dependence : constant Name_Id := N + 331;
Name_No_Dynamic_Attachment : constant Name_Id := N + 332;
Name_No_Dynamic_Interrupts : constant Name_Id := N + 333;
Name_No_Requeue : constant Name_Id := N + 334;
Name_No_Requeue_Statements : constant Name_Id := N + 335;
Name_No_Task_Attributes : constant Name_Id := N + 336;
Name_No_Task_Attributes_Package : constant Name_Id := N + 337;
Name_On : constant Name_Id := N + 338;
Name_Parameter_Types : constant Name_Id := N + 339;
Name_Reference : constant Name_Id := N + 340;
Name_Restricted : constant Name_Id := N + 341;
Name_Result_Mechanism : constant Name_Id := N + 342;
Name_Result_Type : constant Name_Id := N + 343;
Name_Runtime : constant Name_Id := N + 344;
Name_SB : constant Name_Id := N + 345;
Name_Secondary_Stack_Size : constant Name_Id := N + 346;
Name_Section : constant Name_Id := N + 347;
Name_Semaphore : constant Name_Id := N + 348;
Name_Simple_Barriers : constant Name_Id := N + 349;
Name_Spec_File_Name : constant Name_Id := N + 350;
Name_State : constant Name_Id := N + 351;
Name_Static : constant Name_Id := N + 352;
Name_Stack_Size : constant Name_Id := N + 353;
Name_Subunit_File_Name : constant Name_Id := N + 354;
Name_Task_Stack_Size_Default : constant Name_Id := N + 355;
Name_Task_Type : constant Name_Id := N + 356;
Name_Time_Slicing_Enabled : constant Name_Id := N + 357;
Name_Top_Guard : constant Name_Id := N + 358;
Name_UBA : constant Name_Id := N + 359;
Name_UBS : constant Name_Id := N + 360;
Name_UBSB : constant Name_Id := N + 361;
Name_Unit_Name : constant Name_Id := N + 362;
Name_Unknown : constant Name_Id := N + 363;
Name_Unrestricted : constant Name_Id := N + 364;
Name_Uppercase : constant Name_Id := N + 365;
Name_User : constant Name_Id := N + 366;
Name_VAX_Float : constant Name_Id := N + 367;
Name_VMS : constant Name_Id := N + 368;
Name_Vtable_Ptr : constant Name_Id := N + 369;
Name_Working_Storage : constant Name_Id := N + 370;
-- 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
......@@ -663,170 +664,171 @@ 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 + 370;
Name_Abort_Signal : constant Name_Id := N + 370; -- GNAT
Name_Access : constant Name_Id := N + 371;
Name_Address : constant Name_Id := N + 372;
Name_Address_Size : constant Name_Id := N + 373; -- GNAT
Name_Aft : constant Name_Id := N + 374;
Name_Alignment : constant Name_Id := N + 375;
Name_Asm_Input : constant Name_Id := N + 376; -- GNAT
Name_Asm_Output : constant Name_Id := N + 377; -- GNAT
Name_AST_Entry : constant Name_Id := N + 378; -- VMS
Name_Bit : constant Name_Id := N + 379; -- GNAT
Name_Bit_Order : constant Name_Id := N + 380;
Name_Bit_Position : constant Name_Id := N + 381; -- GNAT
Name_Body_Version : constant Name_Id := N + 382;
Name_Callable : constant Name_Id := N + 383;
Name_Caller : constant Name_Id := N + 384;
Name_Code_Address : constant Name_Id := N + 385; -- GNAT
Name_Component_Size : constant Name_Id := N + 386;
Name_Compose : constant Name_Id := N + 387;
Name_Constrained : constant Name_Id := N + 388;
Name_Count : constant Name_Id := N + 389;
Name_Default_Bit_Order : constant Name_Id := N + 390; -- GNAT
Name_Definite : constant Name_Id := N + 391;
Name_Delta : constant Name_Id := N + 392;
Name_Denorm : constant Name_Id := N + 393;
Name_Digits : constant Name_Id := N + 394;
Name_Elaborated : constant Name_Id := N + 395; -- GNAT
Name_Emax : constant Name_Id := N + 396; -- Ada 83
Name_Enabled : constant Name_Id := N + 397; -- GNAT
Name_Enum_Rep : constant Name_Id := N + 398; -- GNAT
Name_Epsilon : constant Name_Id := N + 399; -- Ada 83
Name_Exponent : constant Name_Id := N + 400;
Name_External_Tag : constant Name_Id := N + 401;
Name_Fast_Math : constant Name_Id := N + 402; -- GNAT
Name_First : constant Name_Id := N + 403;
Name_First_Bit : constant Name_Id := N + 404;
Name_Fixed_Value : constant Name_Id := N + 405; -- GNAT
Name_Fore : constant Name_Id := N + 406;
Name_Has_Access_Values : constant Name_Id := N + 407; -- GNAT
Name_Has_Discriminants : constant Name_Id := N + 408; -- GNAT
Name_Identity : constant Name_Id := N + 409;
Name_Img : constant Name_Id := N + 410; -- GNAT
Name_Integer_Value : constant Name_Id := N + 411; -- GNAT
Name_Large : constant Name_Id := N + 412; -- Ada 83
Name_Last : constant Name_Id := N + 413;
Name_Last_Bit : constant Name_Id := N + 414;
Name_Leading_Part : constant Name_Id := N + 415;
Name_Length : constant Name_Id := N + 416;
Name_Machine_Emax : constant Name_Id := N + 417;
Name_Machine_Emin : constant Name_Id := N + 418;
Name_Machine_Mantissa : constant Name_Id := N + 419;
Name_Machine_Overflows : constant Name_Id := N + 420;
Name_Machine_Radix : constant Name_Id := N + 421;
Name_Machine_Rounding : constant Name_Id := N + 422; -- Ada 05
Name_Machine_Rounds : constant Name_Id := N + 423;
Name_Machine_Size : constant Name_Id := N + 424; -- GNAT
Name_Mantissa : constant Name_Id := N + 425; -- Ada 83
Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 426;
Name_Maximum_Alignment : constant Name_Id := N + 427; -- GNAT
Name_Mechanism_Code : constant Name_Id := N + 428; -- GNAT
Name_Mod : constant Name_Id := N + 429; -- Ada 05
Name_Model_Emin : constant Name_Id := N + 430;
Name_Model_Epsilon : constant Name_Id := N + 431;
Name_Model_Mantissa : constant Name_Id := N + 432;
Name_Model_Small : constant Name_Id := N + 433;
Name_Modulus : constant Name_Id := N + 434;
Name_Null_Parameter : constant Name_Id := N + 435; -- GNAT
Name_Object_Size : constant Name_Id := N + 436; -- GNAT
Name_Partition_ID : constant Name_Id := N + 437;
Name_Passed_By_Reference : constant Name_Id := N + 438; -- GNAT
Name_Pool_Address : constant Name_Id := N + 439;
Name_Pos : constant Name_Id := N + 440;
Name_Position : constant Name_Id := N + 441;
Name_Priority : constant Name_Id := N + 442; -- Ada 05
Name_Range : constant Name_Id := N + 443;
Name_Range_Length : constant Name_Id := N + 444; -- GNAT
Name_Round : constant Name_Id := N + 445;
Name_Safe_Emax : constant Name_Id := N + 446; -- Ada 83
Name_Safe_First : constant Name_Id := N + 447;
Name_Safe_Large : constant Name_Id := N + 448; -- Ada 83
Name_Safe_Last : constant Name_Id := N + 449;
Name_Safe_Small : constant Name_Id := N + 450; -- Ada 83
Name_Scale : constant Name_Id := N + 451;
Name_Scaling : constant Name_Id := N + 452;
Name_Signed_Zeros : constant Name_Id := N + 453;
Name_Size : constant Name_Id := N + 454;
Name_Small : constant Name_Id := N + 455;
Name_Storage_Size : constant Name_Id := N + 456;
Name_Storage_Unit : constant Name_Id := N + 457; -- GNAT
Name_Stream_Size : constant Name_Id := N + 458; -- Ada 05
Name_Tag : constant Name_Id := N + 459;
Name_Target_Name : constant Name_Id := N + 460; -- GNAT
Name_Terminated : constant Name_Id := N + 461;
Name_To_Address : constant Name_Id := N + 462; -- GNAT
Name_Type_Class : constant Name_Id := N + 463; -- GNAT
Name_UET_Address : constant Name_Id := N + 464; -- GNAT
Name_Unbiased_Rounding : constant Name_Id := N + 465;
Name_Unchecked_Access : constant Name_Id := N + 466;
Name_Unconstrained_Array : constant Name_Id := N + 467;
Name_Universal_Literal_String : constant Name_Id := N + 468; -- GNAT
Name_Unrestricted_Access : constant Name_Id := N + 469; -- GNAT
Name_VADS_Size : constant Name_Id := N + 470; -- GNAT
Name_Val : constant Name_Id := N + 471;
Name_Valid : constant Name_Id := N + 472;
Name_Value_Size : constant Name_Id := N + 473; -- GNAT
Name_Version : constant Name_Id := N + 474;
Name_Wchar_T_Size : constant Name_Id := N + 475; -- GNAT
Name_Wide_Wide_Width : constant Name_Id := N + 476; -- Ada 05
Name_Wide_Width : constant Name_Id := N + 477;
Name_Width : constant Name_Id := N + 478;
Name_Word_Size : constant Name_Id := N + 479; -- GNAT
First_Attribute_Name : constant Name_Id := N + 371;
Name_Abort_Signal : constant Name_Id := N + 371; -- GNAT
Name_Access : constant Name_Id := N + 372;
Name_Address : constant Name_Id := N + 373;
Name_Address_Size : constant Name_Id := N + 374; -- GNAT
Name_Aft : constant Name_Id := N + 375;
Name_Alignment : constant Name_Id := N + 376;
Name_Asm_Input : constant Name_Id := N + 377; -- GNAT
Name_Asm_Output : constant Name_Id := N + 378; -- GNAT
Name_AST_Entry : constant Name_Id := N + 379; -- VMS
Name_Bit : constant Name_Id := N + 380; -- GNAT
Name_Bit_Order : constant Name_Id := N + 381;
Name_Bit_Position : constant Name_Id := N + 382; -- GNAT
Name_Body_Version : constant Name_Id := N + 383;
Name_Callable : constant Name_Id := N + 384;
Name_Caller : constant Name_Id := N + 385;
Name_Code_Address : constant Name_Id := N + 386; -- GNAT
Name_Component_Size : constant Name_Id := N + 387;
Name_Compose : constant Name_Id := N + 388;
Name_Constrained : constant Name_Id := N + 389;
Name_Count : constant Name_Id := N + 390;
Name_Default_Bit_Order : constant Name_Id := N + 391; -- GNAT
Name_Definite : constant Name_Id := N + 392;
Name_Delta : constant Name_Id := N + 393;
Name_Denorm : constant Name_Id := N + 394;
Name_Digits : constant Name_Id := N + 395;
Name_Elaborated : constant Name_Id := N + 396; -- GNAT
Name_Emax : constant Name_Id := N + 397; -- Ada 83
Name_Enabled : constant Name_Id := N + 398; -- GNAT
Name_Enum_Rep : constant Name_Id := N + 399; -- GNAT
Name_Epsilon : constant Name_Id := N + 400; -- Ada 83
Name_Exponent : constant Name_Id := N + 401;
Name_External_Tag : constant Name_Id := N + 402;
Name_Fast_Math : constant Name_Id := N + 403; -- GNAT
Name_First : constant Name_Id := N + 404;
Name_First_Bit : constant Name_Id := N + 405;
Name_Fixed_Value : constant Name_Id := N + 406; -- GNAT
Name_Fore : constant Name_Id := N + 407;
Name_Has_Access_Values : constant Name_Id := N + 408; -- GNAT
Name_Has_Discriminants : constant Name_Id := N + 409; -- GNAT
Name_Identity : constant Name_Id := N + 410;
Name_Img : constant Name_Id := N + 411; -- GNAT
Name_Integer_Value : constant Name_Id := N + 412; -- GNAT
Name_Large : constant Name_Id := N + 413; -- Ada 83
Name_Last : constant Name_Id := N + 414;
Name_Last_Bit : constant Name_Id := N + 415;
Name_Leading_Part : constant Name_Id := N + 416;
Name_Length : constant Name_Id := N + 417;
Name_Machine_Emax : constant Name_Id := N + 418;
Name_Machine_Emin : constant Name_Id := N + 419;
Name_Machine_Mantissa : constant Name_Id := N + 420;
Name_Machine_Overflows : constant Name_Id := N + 421;
Name_Machine_Radix : constant Name_Id := N + 422;
Name_Machine_Rounding : constant Name_Id := N + 423; -- Ada 05
Name_Machine_Rounds : constant Name_Id := N + 424;
Name_Machine_Size : constant Name_Id := N + 425; -- GNAT
Name_Mantissa : constant Name_Id := N + 426; -- Ada 83
Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 427;
Name_Maximum_Alignment : constant Name_Id := N + 428; -- GNAT
Name_Mechanism_Code : constant Name_Id := N + 429; -- GNAT
Name_Mod : constant Name_Id := N + 430; -- Ada 05
Name_Model_Emin : constant Name_Id := N + 431;
Name_Model_Epsilon : constant Name_Id := N + 432;
Name_Model_Mantissa : constant Name_Id := N + 433;
Name_Model_Small : constant Name_Id := N + 434;
Name_Modulus : constant Name_Id := N + 435;
Name_Null_Parameter : constant Name_Id := N + 436; -- GNAT
Name_Object_Size : constant Name_Id := N + 437; -- GNAT
Name_Old : constant Name_Id := N + 438; -- GNAT
Name_Partition_ID : constant Name_Id := N + 439;
Name_Passed_By_Reference : constant Name_Id := N + 440; -- GNAT
Name_Pool_Address : constant Name_Id := N + 441;
Name_Pos : constant Name_Id := N + 442;
Name_Position : constant Name_Id := N + 443;
Name_Priority : constant Name_Id := N + 444; -- Ada 05
Name_Range : constant Name_Id := N + 445;
Name_Range_Length : constant Name_Id := N + 446; -- GNAT
Name_Round : constant Name_Id := N + 447;
Name_Safe_Emax : constant Name_Id := N + 448; -- Ada 83
Name_Safe_First : constant Name_Id := N + 449;
Name_Safe_Large : constant Name_Id := N + 450; -- Ada 83
Name_Safe_Last : constant Name_Id := N + 451;
Name_Safe_Small : constant Name_Id := N + 452; -- Ada 83
Name_Scale : constant Name_Id := N + 453;
Name_Scaling : constant Name_Id := N + 454;
Name_Signed_Zeros : constant Name_Id := N + 455;
Name_Size : constant Name_Id := N + 456;
Name_Small : constant Name_Id := N + 457;
Name_Storage_Size : constant Name_Id := N + 458;
Name_Storage_Unit : constant Name_Id := N + 459; -- GNAT
Name_Stream_Size : constant Name_Id := N + 460; -- Ada 05
Name_Tag : constant Name_Id := N + 461;
Name_Target_Name : constant Name_Id := N + 462; -- GNAT
Name_Terminated : constant Name_Id := N + 463;
Name_To_Address : constant Name_Id := N + 464; -- GNAT
Name_Type_Class : constant Name_Id := N + 465; -- GNAT
Name_UET_Address : constant Name_Id := N + 466; -- GNAT
Name_Unbiased_Rounding : constant Name_Id := N + 467;
Name_Unchecked_Access : constant Name_Id := N + 468;
Name_Unconstrained_Array : constant Name_Id := N + 469;
Name_Universal_Literal_String : constant Name_Id := N + 470; -- GNAT
Name_Unrestricted_Access : constant Name_Id := N + 471; -- GNAT
Name_VADS_Size : constant Name_Id := N + 472; -- GNAT
Name_Val : constant Name_Id := N + 473;
Name_Valid : constant Name_Id := N + 474;
Name_Value_Size : constant Name_Id := N + 475; -- GNAT
Name_Version : constant Name_Id := N + 476;
Name_Wchar_T_Size : constant Name_Id := N + 477; -- GNAT
Name_Wide_Wide_Width : constant Name_Id := N + 478; -- Ada 05
Name_Wide_Width : constant Name_Id := N + 479;
Name_Width : constant Name_Id := N + 480;
Name_Word_Size : constant Name_Id := N + 481; -- 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 + 480;
Name_Adjacent : constant Name_Id := N + 480;
Name_Ceiling : constant Name_Id := N + 481;
Name_Copy_Sign : constant Name_Id := N + 482;
Name_Floor : constant Name_Id := N + 483;
Name_Fraction : constant Name_Id := N + 484;
Name_Image : constant Name_Id := N + 485;
Name_Input : constant Name_Id := N + 486;
Name_Machine : constant Name_Id := N + 487;
Name_Max : constant Name_Id := N + 488;
Name_Min : constant Name_Id := N + 489;
Name_Model : constant Name_Id := N + 490;
Name_Pred : constant Name_Id := N + 491;
Name_Remainder : constant Name_Id := N + 492;
Name_Rounding : constant Name_Id := N + 493;
Name_Succ : constant Name_Id := N + 494;
Name_Truncation : constant Name_Id := N + 495;
Name_Value : constant Name_Id := N + 496;
Name_Wide_Image : constant Name_Id := N + 497;
Name_Wide_Wide_Image : constant Name_Id := N + 498;
Name_Wide_Value : constant Name_Id := N + 499;
Name_Wide_Wide_Value : constant Name_Id := N + 500;
Last_Renamable_Function_Attribute : constant Name_Id := N + 500;
First_Renamable_Function_Attribute : constant Name_Id := N + 482;
Name_Adjacent : constant Name_Id := N + 482;
Name_Ceiling : constant Name_Id := N + 483;
Name_Copy_Sign : constant Name_Id := N + 484;
Name_Floor : constant Name_Id := N + 485;
Name_Fraction : constant Name_Id := N + 486;
Name_Image : constant Name_Id := N + 487;
Name_Input : constant Name_Id := N + 488;
Name_Machine : constant Name_Id := N + 489;
Name_Max : constant Name_Id := N + 490;
Name_Min : constant Name_Id := N + 491;
Name_Model : constant Name_Id := N + 492;
Name_Pred : constant Name_Id := N + 493;
Name_Remainder : constant Name_Id := N + 494;
Name_Rounding : constant Name_Id := N + 495;
Name_Succ : constant Name_Id := N + 496;
Name_Truncation : constant Name_Id := N + 497;
Name_Value : constant Name_Id := N + 498;
Name_Wide_Image : constant Name_Id := N + 499;
Name_Wide_Wide_Image : constant Name_Id := N + 500;
Name_Wide_Value : constant Name_Id := N + 501;
Name_Wide_Wide_Value : constant Name_Id := N + 502;
Last_Renamable_Function_Attribute : constant Name_Id := N + 502;
-- Attributes that designate procedures
First_Procedure_Attribute : constant Name_Id := N + 501;
Name_Output : constant Name_Id := N + 501;
Name_Read : constant Name_Id := N + 502;
Name_Write : constant Name_Id := N + 503;
Last_Procedure_Attribute : constant Name_Id := N + 503;
First_Procedure_Attribute : constant Name_Id := N + 503;
Name_Output : constant Name_Id := N + 503;
Name_Read : constant Name_Id := N + 504;
Name_Write : constant Name_Id := N + 505;
Last_Procedure_Attribute : constant Name_Id := N + 505;
-- Remaining attributes are ones that return entities
First_Entity_Attribute_Name : constant Name_Id := N + 504;
Name_Elab_Body : constant Name_Id := N + 504; -- GNAT
Name_Elab_Spec : constant Name_Id := N + 505; -- GNAT
Name_Storage_Pool : constant Name_Id := N + 506;
First_Entity_Attribute_Name : constant Name_Id := N + 506;
Name_Elab_Body : constant Name_Id := N + 506; -- GNAT
Name_Elab_Spec : constant Name_Id := N + 507; -- GNAT
Name_Storage_Pool : constant Name_Id := N + 508;
-- These attributes are the ones that return types
First_Type_Attribute_Name : constant Name_Id := N + 507;
Name_Base : constant Name_Id := N + 507;
Name_Class : constant Name_Id := N + 508;
Name_Stub_Type : constant Name_Id := N + 509;
Last_Type_Attribute_Name : constant Name_Id := N + 509;
Last_Entity_Attribute_Name : constant Name_Id := N + 509;
Last_Attribute_Name : constant Name_Id := N + 509;
First_Type_Attribute_Name : constant Name_Id := N + 509;
Name_Base : constant Name_Id := N + 509;
Name_Class : constant Name_Id := N + 510;
Name_Stub_Type : constant Name_Id := N + 511;
Last_Type_Attribute_Name : constant Name_Id := N + 511;
Last_Entity_Attribute_Name : constant Name_Id := N + 511;
Last_Attribute_Name : constant Name_Id := N + 511;
-- Names of recognized locking policy identifiers
......@@ -834,10 +836,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 + 510;
Name_Ceiling_Locking : constant Name_Id := N + 510;
Name_Inheritance_Locking : constant Name_Id := N + 511;
Last_Locking_Policy_Name : constant Name_Id := N + 511;
First_Locking_Policy_Name : constant Name_Id := N + 512;
Name_Ceiling_Locking : constant Name_Id := N + 512;
Name_Inheritance_Locking : constant Name_Id := N + 513;
Last_Locking_Policy_Name : constant Name_Id := N + 513;
-- Names of recognized queuing policy identifiers
......@@ -845,10 +847,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 + 512;
Name_FIFO_Queuing : constant Name_Id := N + 512;
Name_Priority_Queuing : constant Name_Id := N + 513;
Last_Queuing_Policy_Name : constant Name_Id := N + 513;
First_Queuing_Policy_Name : constant Name_Id := N + 514;
Name_FIFO_Queuing : constant Name_Id := N + 514;
Name_Priority_Queuing : constant Name_Id := N + 515;
Last_Queuing_Policy_Name : constant Name_Id := N + 515;
-- Names of recognized task dispatching policy identifiers
......@@ -856,273 +858,275 @@ 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 + 514;
Name_EDF_Across_Priorities : constant Name_Id := N + 514;
Name_FIFO_Within_Priorities : constant Name_Id := N + 515;
First_Task_Dispatching_Policy_Name : constant Name_Id := N + 516;
Name_EDF_Across_Priorities : constant Name_Id := N + 516;
Name_FIFO_Within_Priorities : constant Name_Id := N + 517;
Name_Non_Preemptive_Within_Priorities
: constant Name_Id := N + 513;
Name_Round_Robin_Within_Priorities : constant Name_Id := N + 516;
Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 516;
Name_Round_Robin_Within_Priorities : constant Name_Id := N + 518;
Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 518;
-- Names of recognized checks for pragma Suppress
First_Check_Name : constant Name_Id := N + 517;
Name_Access_Check : constant Name_Id := N + 517;
Name_Accessibility_Check : constant Name_Id := N + 518;
Name_Alignment_Check : constant Name_Id := N + 519; -- GNAT
Name_Discriminant_Check : constant Name_Id := N + 520;
Name_Division_Check : constant Name_Id := N + 521;
Name_Elaboration_Check : constant Name_Id := N + 522;
Name_Index_Check : constant Name_Id := N + 523;
Name_Length_Check : constant Name_Id := N + 524;
Name_Overflow_Check : constant Name_Id := N + 525;
Name_Range_Check : constant Name_Id := N + 526;
Name_Storage_Check : constant Name_Id := N + 527;
Name_Tag_Check : constant Name_Id := N + 528;
Name_Validity_Check : constant Name_Id := N + 529; -- GNAT
Name_All_Checks : constant Name_Id := N + 530;
Last_Check_Name : constant Name_Id := N + 530;
First_Check_Name : constant Name_Id := N + 519;
Name_Access_Check : constant Name_Id := N + 519;
Name_Accessibility_Check : constant Name_Id := N + 520;
Name_Alignment_Check : constant Name_Id := N + 521; -- GNAT
Name_Discriminant_Check : constant Name_Id := N + 522;
Name_Division_Check : constant Name_Id := N + 523;
Name_Elaboration_Check : constant Name_Id := N + 524;
Name_Index_Check : constant Name_Id := N + 525;
Name_Length_Check : constant Name_Id := N + 526;
Name_Overflow_Check : constant Name_Id := N + 527;
Name_Range_Check : constant Name_Id := N + 528;
Name_Storage_Check : constant Name_Id := N + 529;
Name_Tag_Check : constant Name_Id := N + 530;
Name_Validity_Check : constant Name_Id := N + 531; -- GNAT
Name_All_Checks : constant Name_Id := N + 532;
Last_Check_Name : constant Name_Id := N + 532;
-- Names corresponding to reserved keywords, excluding those already
-- declared in the attribute list (Access, Delta, Digits, Mod, Range).
Name_Abort : constant Name_Id := N + 531;
Name_Abs : constant Name_Id := N + 532;
Name_Accept : constant Name_Id := N + 533;
Name_And : constant Name_Id := N + 534;
Name_All : constant Name_Id := N + 535;
Name_Array : constant Name_Id := N + 536;
Name_At : constant Name_Id := N + 537;
Name_Begin : constant Name_Id := N + 538;
Name_Body : constant Name_Id := N + 539;
Name_Case : constant Name_Id := N + 540;
Name_Constant : constant Name_Id := N + 541;
Name_Declare : constant Name_Id := N + 542;
Name_Delay : constant Name_Id := N + 543;
Name_Do : constant Name_Id := N + 544;
Name_Else : constant Name_Id := N + 545;
Name_Elsif : constant Name_Id := N + 546;
Name_End : constant Name_Id := N + 547;
Name_Entry : constant Name_Id := N + 548;
Name_Exception : constant Name_Id := N + 549;
Name_Exit : constant Name_Id := N + 550;
Name_For : constant Name_Id := N + 551;
Name_Function : constant Name_Id := N + 552;
Name_Generic : constant Name_Id := N + 553;
Name_Goto : constant Name_Id := N + 554;
Name_If : constant Name_Id := N + 555;
Name_In : constant Name_Id := N + 556;
Name_Is : constant Name_Id := N + 557;
Name_Limited : constant Name_Id := N + 558;
Name_Loop : constant Name_Id := N + 559;
Name_New : constant Name_Id := N + 560;
Name_Not : constant Name_Id := N + 561;
Name_Null : constant Name_Id := N + 562;
Name_Of : constant Name_Id := N + 563;
Name_Or : constant Name_Id := N + 564;
Name_Others : constant Name_Id := N + 565;
Name_Out : constant Name_Id := N + 566;
Name_Package : constant Name_Id := N + 567;
Name_Pragma : constant Name_Id := N + 568;
Name_Private : constant Name_Id := N + 569;
Name_Procedure : constant Name_Id := N + 570;
Name_Raise : constant Name_Id := N + 571;
Name_Record : constant Name_Id := N + 572;
Name_Rem : constant Name_Id := N + 573;
Name_Renames : constant Name_Id := N + 574;
Name_Return : constant Name_Id := N + 575;
Name_Reverse : constant Name_Id := N + 576;
Name_Select : constant Name_Id := N + 577;
Name_Separate : constant Name_Id := N + 578;
Name_Subtype : constant Name_Id := N + 579;
Name_Task : constant Name_Id := N + 580;
Name_Terminate : constant Name_Id := N + 581;
Name_Then : constant Name_Id := N + 582;
Name_Type : constant Name_Id := N + 583;
Name_Use : constant Name_Id := N + 584;
Name_When : constant Name_Id := N + 585;
Name_While : constant Name_Id := N + 586;
Name_With : constant Name_Id := N + 587;
Name_Xor : constant Name_Id := N + 588;
Name_Abort : constant Name_Id := N + 533;
Name_Abs : constant Name_Id := N + 534;
Name_Accept : constant Name_Id := N + 535;
Name_And : constant Name_Id := N + 536;
Name_All : constant Name_Id := N + 537;
Name_Array : constant Name_Id := N + 538;
Name_At : constant Name_Id := N + 539;
Name_Begin : constant Name_Id := N + 540;
Name_Body : constant Name_Id := N + 541;
Name_Case : constant Name_Id := N + 542;
Name_Constant : constant Name_Id := N + 543;
Name_Declare : constant Name_Id := N + 544;
Name_Delay : constant Name_Id := N + 545;
Name_Do : constant Name_Id := N + 546;
Name_Else : constant Name_Id := N + 547;
Name_Elsif : constant Name_Id := N + 548;
Name_End : constant Name_Id := N + 549;
Name_Entry : constant Name_Id := N + 550;
Name_Exception : constant Name_Id := N + 551;
Name_Exit : constant Name_Id := N + 552;
Name_For : constant Name_Id := N + 553;
Name_Function : constant Name_Id := N + 554;
Name_Generic : constant Name_Id := N + 555;
Name_Goto : constant Name_Id := N + 556;
Name_If : constant Name_Id := N + 557;
Name_In : constant Name_Id := N + 558;
Name_Is : constant Name_Id := N + 559;
Name_Limited : constant Name_Id := N + 560;
Name_Loop : constant Name_Id := N + 561;
Name_New : constant Name_Id := N + 562;
Name_Not : constant Name_Id := N + 563;
Name_Null : constant Name_Id := N + 564;
Name_Of : constant Name_Id := N + 565;
Name_Or : constant Name_Id := N + 566;
Name_Others : constant Name_Id := N + 567;
Name_Out : constant Name_Id := N + 568;
Name_Package : constant Name_Id := N + 569;
Name_Pragma : constant Name_Id := N + 570;
Name_Private : constant Name_Id := N + 571;
Name_Procedure : constant Name_Id := N + 572;
Name_Raise : constant Name_Id := N + 573;
Name_Record : constant Name_Id := N + 574;
Name_Rem : constant Name_Id := N + 575;
Name_Renames : constant Name_Id := N + 576;
Name_Return : constant Name_Id := N + 577;
Name_Reverse : constant Name_Id := N + 578;
Name_Select : constant Name_Id := N + 579;
Name_Separate : constant Name_Id := N + 580;
Name_Subtype : constant Name_Id := N + 581;
Name_Task : constant Name_Id := N + 582;
Name_Terminate : constant Name_Id := N + 583;
Name_Then : constant Name_Id := N + 584;
Name_Type : constant Name_Id := N + 585;
Name_Use : constant Name_Id := N + 586;
Name_When : constant Name_Id := N + 587;
Name_While : constant Name_Id := N + 588;
Name_With : constant Name_Id := N + 589;
Name_Xor : constant Name_Id := N + 590;
-- 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 + 589;
Name_Divide : constant Name_Id := N + 589;
Name_Enclosing_Entity : constant Name_Id := N + 590;
Name_Exception_Information : constant Name_Id := N + 591;
Name_Exception_Message : constant Name_Id := N + 592;
Name_Exception_Name : constant Name_Id := N + 593;
Name_File : constant Name_Id := N + 594;
Name_Generic_Dispatching_Constructor : constant Name_Id := N + 595;
Name_Import_Address : constant Name_Id := N + 596;
Name_Import_Largest_Value : constant Name_Id := N + 597;
Name_Import_Value : constant Name_Id := N + 598;
Name_Is_Negative : constant Name_Id := N + 599;
Name_Line : constant Name_Id := N + 600;
Name_Rotate_Left : constant Name_Id := N + 601;
Name_Rotate_Right : constant Name_Id := N + 602;
Name_Shift_Left : constant Name_Id := N + 603;
Name_Shift_Right : constant Name_Id := N + 604;
Name_Shift_Right_Arithmetic : constant Name_Id := N + 605;
Name_Source_Location : constant Name_Id := N + 606;
Name_Unchecked_Conversion : constant Name_Id := N + 607;
Name_Unchecked_Deallocation : constant Name_Id := N + 608;
Name_To_Pointer : constant Name_Id := N + 609;
Last_Intrinsic_Name : constant Name_Id := N + 609;
First_Intrinsic_Name : constant Name_Id := N + 591;
Name_Divide : constant Name_Id := N + 591;
Name_Enclosing_Entity : constant Name_Id := N + 592;
Name_Exception_Information : constant Name_Id := N + 593;
Name_Exception_Message : constant Name_Id := N + 594;
Name_Exception_Name : constant Name_Id := N + 595;
Name_File : constant Name_Id := N + 596;
Name_Generic_Dispatching_Constructor : constant Name_Id := N + 597;
Name_Import_Address : constant Name_Id := N + 598;
Name_Import_Largest_Value : constant Name_Id := N + 599;
Name_Import_Value : constant Name_Id := N + 600;
Name_Is_Negative : constant Name_Id := N + 601;
Name_Line : constant Name_Id := N + 602;
Name_Rotate_Left : constant Name_Id := N + 603;
Name_Rotate_Right : constant Name_Id := N + 604;
Name_Shift_Left : constant Name_Id := N + 605;
Name_Shift_Right : constant Name_Id := N + 606;
Name_Shift_Right_Arithmetic : constant Name_Id := N + 607;
Name_Source_Location : constant Name_Id := N + 608;
Name_Unchecked_Conversion : constant Name_Id := N + 609;
Name_Unchecked_Deallocation : constant Name_Id := N + 610;
Name_To_Pointer : constant Name_Id := N + 611;
Last_Intrinsic_Name : constant Name_Id := N + 611;
-- Names used in processing intrinsic calls
Name_Free : constant Name_Id := N + 610;
Name_Free : constant Name_Id := N + 612;
-- Reserved words used only in Ada 95
First_95_Reserved_Word : constant Name_Id := N + 611;
Name_Abstract : constant Name_Id := N + 611;
Name_Aliased : constant Name_Id := N + 612;
Name_Protected : constant Name_Id := N + 613;
Name_Until : constant Name_Id := N + 614;
Name_Requeue : constant Name_Id := N + 615;
Name_Tagged : constant Name_Id := N + 616;
Last_95_Reserved_Word : constant Name_Id := N + 616;
First_95_Reserved_Word : constant Name_Id := N + 613;
Name_Abstract : constant Name_Id := N + 613;
Name_Aliased : constant Name_Id := N + 614;
Name_Protected : constant Name_Id := N + 615;
Name_Until : constant Name_Id := N + 616;
Name_Requeue : constant Name_Id := N + 617;
Name_Tagged : constant Name_Id := N + 618;
Last_95_Reserved_Word : constant Name_Id := N + 618;
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 + 617;
Name_Raise_Exception : constant Name_Id := N + 619;
-- 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 + 618;
Name_Archive_Builder : constant Name_Id := N + 619;
Name_Archive_Indexer : constant Name_Id := N + 620;
Name_Archive_Suffix : constant Name_Id := N + 621;
Name_Binder : constant Name_Id := N + 622;
Name_Binder_Prefix : constant Name_Id := N + 623;
Name_Body_Suffix : constant Name_Id := N + 624;
Name_Builder : constant Name_Id := N + 625;
Name_Builder_Switches : constant Name_Id := N + 626;
Name_Compiler : constant Name_Id := N + 627;
Name_Compiler_Kind : constant Name_Id := N + 628;
Name_Config_Body_File_Name : constant Name_Id := N + 629;
Name_Config_Body_File_Name_Pattern : constant Name_Id := N + 630;
Name_Config_File_Switches : constant Name_Id := N + 631;
Name_Config_File_Unique : constant Name_Id := N + 632;
Name_Config_Spec_File_Name : constant Name_Id := N + 633;
Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + 634;
Name_Cross_Reference : constant Name_Id := N + 635;
Name_Default_Language : constant Name_Id := N + 636;
Name_Default_Switches : constant Name_Id := N + 637;
Name_Dependency_Driver : constant Name_Id := N + 638;
Name_Dependency_File_Kind : constant Name_Id := N + 639;
Name_Dependency_Switches : constant Name_Id := N + 640;
Name_Driver : constant Name_Id := N + 641;
Name_Excluded_Source_Dirs : constant Name_Id := N + 642;
Name_Excluded_Source_Files : constant Name_Id := N + 643;
Name_Exec_Dir : constant Name_Id := N + 644;
Name_Executable : constant Name_Id := N + 645;
Name_Executable_Suffix : constant Name_Id := N + 646;
Name_Extends : constant Name_Id := N + 647;
Name_Externally_Built : constant Name_Id := N + 648;
Name_Finder : constant Name_Id := N + 649;
Name_Global_Configuration_Pragmas : constant Name_Id := N + 650;
Name_Global_Config_File : constant Name_Id := N + 651;
Name_Gnatls : constant Name_Id := N + 652;
Name_Gnatstub : constant Name_Id := N + 653;
Name_Implementation : constant Name_Id := N + 654;
Name_Implementation_Exceptions : constant Name_Id := N + 655;
Name_Implementation_Suffix : constant Name_Id := N + 656;
Name_Include_Switches : constant Name_Id := N + 657;
Name_Include_Path : constant Name_Id := N + 658;
Name_Include_Path_File : constant Name_Id := N + 659;
Name_Language_Kind : constant Name_Id := N + 660;
Name_Language_Processing : constant Name_Id := N + 661;
Name_Languages : constant Name_Id := N + 662;
Name_Library_Ali_Dir : constant Name_Id := N + 663;
Name_Library_Auto_Init : constant Name_Id := N + 664;
Name_Library_Auto_Init_Supported : constant Name_Id := N + 665;
Name_Library_Builder : constant Name_Id := N + 666;
Name_Library_Dir : constant Name_Id := N + 667;
Name_Library_GCC : constant Name_Id := N + 668;
Name_Library_Interface : constant Name_Id := N + 669;
Name_Library_Kind : constant Name_Id := N + 670;
Name_Library_Name : constant Name_Id := N + 671;
Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + 672;
Name_Library_Options : constant Name_Id := N + 673;
Name_Library_Partial_Linker : constant Name_Id := N + 674;
Name_Library_Reference_Symbol_File : constant Name_Id := N + 675;
Name_Library_Src_Dir : constant Name_Id := N + 676;
Name_Library_Support : constant Name_Id := N + 677;
Name_Library_Symbol_File : constant Name_Id := N + 678;
Name_Library_Symbol_Policy : constant Name_Id := N + 679;
Name_Library_Version : constant Name_Id := N + 680;
Name_Library_Version_Switches : constant Name_Id := N + 681;
Name_Linker : constant Name_Id := N + 682;
Name_Linker_Executable_Option : constant Name_Id := N + 683;
Name_Linker_Lib_Dir_Option : constant Name_Id := N + 684;
Name_Linker_Lib_Name_Option : constant Name_Id := N + 685;
Name_Local_Config_File : constant Name_Id := N + 686;
Name_Local_Configuration_Pragmas : constant Name_Id := N + 687;
Name_Locally_Removed_Files : constant Name_Id := N + 688;
Name_Mapping_File_Switches : constant Name_Id := N + 689;
Name_Mapping_Spec_Suffix : constant Name_Id := N + 690;
Name_Mapping_Body_Suffix : constant Name_Id := N + 691;
Name_Metrics : constant Name_Id := N + 692;
Name_Naming : constant Name_Id := N + 693;
Name_Objects_Path : constant Name_Id := N + 694;
Name_Objects_Path_File : constant Name_Id := N + 695;
Name_Object_Dir : constant Name_Id := N + 696;
Name_Pic_Option : constant Name_Id := N + 697;
Name_Pretty_Printer : constant Name_Id := N + 698;
Name_Prefix : constant Name_Id := N + 699;
Name_Project : constant Name_Id := N + 700;
Name_Roots : constant Name_Id := N + 701;
Name_Required_Switches : constant Name_Id := N + 702;
Name_Run_Path_Option : constant Name_Id := N + 703;
Name_Runtime_Project : constant Name_Id := N + 704;
Name_Shared_Library_Minimum_Switches : constant Name_Id := N + 705;
Name_Shared_Library_Prefix : constant Name_Id := N + 706;
Name_Shared_Library_Suffix : constant Name_Id := N + 707;
Name_Separate_Suffix : constant Name_Id := N + 708;
Name_Source_Dirs : constant Name_Id := N + 709;
Name_Source_Files : constant Name_Id := N + 710;
Name_Source_List_File : constant Name_Id := N + 711;
Name_Spec : constant Name_Id := N + 712;
Name_Spec_Suffix : constant Name_Id := N + 713;
Name_Specification : constant Name_Id := N + 714;
Name_Specification_Exceptions : constant Name_Id := N + 715;
Name_Specification_Suffix : constant Name_Id := N + 716;
Name_Stack : constant Name_Id := N + 717;
Name_Switches : constant Name_Id := N + 718;
Name_Symbolic_Link_Supported : constant Name_Id := N + 719;
Name_Toolchain_Description : constant Name_Id := N + 720;
Name_Toolchain_Version : constant Name_Id := N + 721;
Name_Runtime_Library_Dir : constant Name_Id := N + 722;
Name_Ada_Roots : constant Name_Id := N + 620;
Name_Archive_Builder : constant Name_Id := N + 621;
Name_Archive_Indexer : constant Name_Id := N + 622;
Name_Archive_Suffix : constant Name_Id := N + 623;
Name_Binder : constant Name_Id := N + 624;
Name_Binder_Prefix : constant Name_Id := N + 625;
Name_Body_Suffix : constant Name_Id := N + 626;
Name_Builder : constant Name_Id := N + 627;
Name_Builder_Switches : constant Name_Id := N + 628;
Name_Compiler : constant Name_Id := N + 629;
Name_Compiler_Kind : constant Name_Id := N + 630;
Name_Config_Body_File_Name : constant Name_Id := N + 631;
Name_Config_Body_File_Name_Pattern : constant Name_Id := N + 632;
Name_Config_File_Switches : constant Name_Id := N + 633;
Name_Config_File_Unique : constant Name_Id := N + 634;
Name_Config_Spec_File_Name : constant Name_Id := N + 635;
Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + 636;
Name_Cross_Reference : constant Name_Id := N + 637;
Name_Default_Language : constant Name_Id := N + 638;
Name_Default_Switches : constant Name_Id := N + 639;
Name_Dependency_Driver : constant Name_Id := N + 640;
Name_Dependency_File_Kind : constant Name_Id := N + 641;
Name_Dependency_Switches : constant Name_Id := N + 642;
Name_Driver : constant Name_Id := N + 643;
Name_Excluded_Source_Dirs : constant Name_Id := N + 644;
Name_Excluded_Source_Files : constant Name_Id := N + 645;
Name_Exec_Dir : constant Name_Id := N + 646;
Name_Executable : constant Name_Id := N + 647;
Name_Executable_Suffix : constant Name_Id := N + 648;
Name_Extends : constant Name_Id := N + 649;
Name_Externally_Built : constant Name_Id := N + 650;
Name_Finder : constant Name_Id := N + 651;
Name_Global_Configuration_Pragmas : constant Name_Id := N + 652;
Name_Global_Config_File : constant Name_Id := N + 653;
Name_Gnatls : constant Name_Id := N + 654;
Name_Gnatstub : constant Name_Id := N + 655;
Name_Implementation : constant Name_Id := N + 656;
Name_Implementation_Exceptions : constant Name_Id := N + 657;
Name_Implementation_Suffix : constant Name_Id := N + 658;
Name_Include_Switches : constant Name_Id := N + 659;
Name_Include_Path : constant Name_Id := N + 660;
Name_Include_Path_File : constant Name_Id := N + 661;
Name_Language_Kind : constant Name_Id := N + 662;
Name_Language_Processing : constant Name_Id := N + 663;
Name_Languages : constant Name_Id := N + 664;
Name_Library_Ali_Dir : constant Name_Id := N + 665;
Name_Library_Auto_Init : constant Name_Id := N + 666;
Name_Library_Auto_Init_Supported : constant Name_Id := N + 667;
Name_Library_Builder : constant Name_Id := N + 668;
Name_Library_Dir : constant Name_Id := N + 669;
Name_Library_GCC : constant Name_Id := N + 670;
Name_Library_Interface : constant Name_Id := N + 671;
Name_Library_Kind : constant Name_Id := N + 672;
Name_Library_Name : constant Name_Id := N + 673;
Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + 674;
Name_Library_Options : constant Name_Id := N + 675;
Name_Library_Partial_Linker : constant Name_Id := N + 676;
Name_Library_Reference_Symbol_File : constant Name_Id := N + 677;
Name_Library_Src_Dir : constant Name_Id := N + 678;
Name_Library_Support : constant Name_Id := N + 679;
Name_Library_Symbol_File : constant Name_Id := N + 680;
Name_Library_Symbol_Policy : constant Name_Id := N + 681;
Name_Library_Version : constant Name_Id := N + 682;
Name_Library_Version_Switches : constant Name_Id := N + 683;
Name_Linker : constant Name_Id := N + 684;
Name_Linker_Executable_Option : constant Name_Id := N + 685;
Name_Linker_Lib_Dir_Option : constant Name_Id := N + 686;
Name_Linker_Lib_Name_Option : constant Name_Id := N + 687;
Name_Local_Config_File : constant Name_Id := N + 688;
Name_Local_Configuration_Pragmas : constant Name_Id := N + 689;
Name_Locally_Removed_Files : constant Name_Id := N + 690;
Name_Mapping_File_Switches : constant Name_Id := N + 691;
Name_Mapping_Spec_Suffix : constant Name_Id := N + 692;
Name_Mapping_Body_Suffix : constant Name_Id := N + 693;
Name_Metrics : constant Name_Id := N + 694;
Name_Naming : constant Name_Id := N + 695;
Name_Objects_Path : constant Name_Id := N + 696;
Name_Objects_Path_File : constant Name_Id := N + 697;
Name_Object_Dir : constant Name_Id := N + 698;
Name_Pic_Option : constant Name_Id := N + 699;
Name_Pretty_Printer : constant Name_Id := N + 700;
Name_Prefix : constant Name_Id := N + 701;
Name_Project : constant Name_Id := N + 702;
Name_Roots : constant Name_Id := N + 703;
Name_Required_Switches : constant Name_Id := N + 704;
Name_Run_Path_Option : constant Name_Id := N + 705;
Name_Runtime_Project : constant Name_Id := N + 706;
Name_Shared_Library_Minimum_Switches : constant Name_Id := N + 707;
Name_Shared_Library_Prefix : constant Name_Id := N + 708;
Name_Shared_Library_Suffix : constant Name_Id := N + 709;
Name_Separate_Suffix : constant Name_Id := N + 710;
Name_Source_Dirs : constant Name_Id := N + 711;
Name_Source_Files : constant Name_Id := N + 712;
Name_Source_List_File : constant Name_Id := N + 713;
Name_Spec : constant Name_Id := N + 714;
Name_Spec_Suffix : constant Name_Id := N + 715;
Name_Specification : constant Name_Id := N + 716;
Name_Specification_Exceptions : constant Name_Id := N + 717;
Name_Specification_Suffix : constant Name_Id := N + 718;
Name_Stack : constant Name_Id := N + 719;
Name_Switches : constant Name_Id := N + 720;
Name_Symbolic_Link_Supported : constant Name_Id := N + 721;
Name_Sync : constant Name_Id := N + 722;
Name_Synchronize : constant Name_Id := N + 723;
Name_Toolchain_Description : constant Name_Id := N + 724;
Name_Toolchain_Version : constant Name_Id := N + 725;
Name_Runtime_Library_Dir : constant Name_Id := N + 726;
-- Other miscellaneous names used in front end
Name_Unaligned_Valid : constant Name_Id := N + 723;
Name_Unaligned_Valid : constant Name_Id := N + 727;
-- Ada 2005 reserved words
First_2005_Reserved_Word : constant Name_Id := N + 724;
Name_Interface : constant Name_Id := N + 724;
Name_Overriding : constant Name_Id := N + 725;
Name_Synchronized : constant Name_Id := N + 726;
Last_2005_Reserved_Word : constant Name_Id := N + 726;
First_2005_Reserved_Word : constant Name_Id := N + 728;
Name_Interface : constant Name_Id := N + 728;
Name_Overriding : constant Name_Id := N + 729;
Name_Synchronized : constant Name_Id := N + 730;
Last_2005_Reserved_Word : constant Name_Id := N + 730;
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 + 726;
Last_Predefined_Name : constant Name_Id := N + 730;
---------------------------------------
-- Subtypes Defining Name Categories --
......@@ -1206,6 +1210,7 @@ package Snames is
Attribute_Modulus,
Attribute_Null_Parameter,
Attribute_Object_Size,
Attribute_Old,
Attribute_Partition_ID,
Attribute_Passed_By_Reference,
Attribute_Pool_Address,
......@@ -1292,6 +1297,9 @@ package Snames is
Attribute_Class,
Attribute_Stub_Type);
type Attribute_Class_Array is array (Attribute_Id) of Boolean;
-- Type used to build attribute classification flag arrays
------------------------------------
-- Convention Name ID Definitions --
------------------------------------
......@@ -1376,6 +1384,7 @@ package Snames is
Pragma_No_Run_Time,
Pragma_No_Strict_Aliasing,
Pragma_Normalize_Scalars,
Pragma_Optimize_Alignment,
Pragma_Polling,
Pragma_Persistent_BSS,
Pragma_Priority_Specific_Dispatching,
......@@ -1538,13 +1547,6 @@ package Snames is
Task_Dispatching_FIFO_Within_Priorities);
-- Id values used to identify task dispatching policies
------------------
-- Helper types --
------------------
type Attribute_Class_Array is array (Attribute_Id) of Boolean;
-- Type used to build attribute classification flag arrays
-----------------
-- Subprograms --
-----------------
......
......@@ -111,79 +111,80 @@ extern unsigned char Get_Attribute_Id (int);
#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 Attr_Old 67
#define Attr_Partition_ID 68
#define Attr_Passed_By_Reference 69
#define Attr_Pool_Address 70
#define Attr_Pos 71
#define Attr_Position 72
#define Attr_Priority 73
#define Attr_Range 74
#define Attr_Range_Length 75
#define Attr_Round 76
#define Attr_Safe_Emax 77
#define Attr_Safe_First 78
#define Attr_Safe_Large 79
#define Attr_Safe_Last 80
#define Attr_Safe_Small 81
#define Attr_Scale 82
#define Attr_Scaling 83
#define Attr_Signed_Zeros 84
#define Attr_Size 85
#define Attr_Small 86
#define Attr_Storage_Size 87
#define Attr_Storage_Unit 88
#define Attr_Stream_Size 89
#define Attr_Tag 90
#define Attr_Target_Name 91
#define Attr_Terminated 92
#define Attr_To_Address 93
#define Attr_Type_Class 94
#define Attr_UET_Address 95
#define Attr_Unbiased_Rounding 96
#define Attr_Unchecked_Access 97
#define Attr_Unconstrained_Array 98
#define Attr_Universal_Literal_String 99
#define Attr_Unrestricted_Access 100
#define Attr_VADS_Size 101
#define Attr_Val 102
#define Attr_Valid 103
#define Attr_Value_Size 104
#define Attr_Version 105
#define Attr_Wchar_T_Size 106
#define Attr_Wide_Wide_Width 107
#define Attr_Wide_Width 108
#define Attr_Width 109
#define Attr_Word_Size 110
#define Attr_Adjacent 111
#define Attr_Ceiling 112
#define Attr_Copy_Sign 113
#define Attr_Floor 114
#define Attr_Fraction 115
#define Attr_Image 116
#define Attr_Input 117
#define Attr_Machine 118
#define Attr_Max 119
#define Attr_Min 120
#define Attr_Model 121
#define Attr_Pred 122
#define Attr_Remainder 123
#define Attr_Rounding 124
#define Attr_Succ 125
#define Attr_Truncation 126
#define Attr_Value 127
#define Attr_Wide_Image 128
#define Attr_Wide_Wide_Image 129
#define Attr_Wide_Value 130
#define Attr_Wide_Wide_Value 131
#define Attr_Output 132
#define Attr_Read 133
#define Attr_Write 134
#define Attr_Elab_Body 135
#define Attr_Elab_Spec 136
#define Attr_Storage_Pool 137
#define Attr_Base 138
#define Attr_Class 139
#define Attr_Stub_Type 140
/* Define the numeric values for the conventions. */
......@@ -247,138 +248,139 @@ extern unsigned char Get_Pragma_Id (int);
#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_Unmodified 151
#define Pragma_Unreferenced 152
#define Pragma_Unreferenced_Objects 153
#define Pragma_Unreserve_All_Interrupts 154
#define Pragma_Volatile 155
#define Pragma_Volatile_Components 156
#define Pragma_Weak_External 157
#define Pragma_AST_Entry 158
#define Pragma_Fast_Math 159
#define Pragma_Interface 160
#define Pragma_Priority 161
#define Pragma_Storage_Size 162
#define Pragma_Storage_Unit 163
#define Pragma_Optimize_Alignment 31
#define Pragma_Polling 32
#define Pragma_Persistent_BSS 33
#define Pragma_Priority_Specific_Dispatching 34
#define Pragma_Profile 35
#define Pragma_Profile_Warnings 36
#define Pragma_Propagate_Exceptions 37
#define Pragma_Queuing_Policy 38
#define Pragma_Ravenscar 39
#define Pragma_Restricted_Run_Time 40
#define Pragma_Restrictions 41
#define Pragma_Restriction_Warnings 42
#define Pragma_Reviewable 43
#define Pragma_Source_File_Name 44
#define Pragma_Source_File_Name_Project 45
#define Pragma_Style_Checks 46
#define Pragma_Suppress 47
#define Pragma_Suppress_Exception_Locations 48
#define Pragma_Task_Dispatching_Policy 49
#define Pragma_Universal_Data 50
#define Pragma_Unsuppress 51
#define Pragma_Use_VADS_Size 52
#define Pragma_Validity_Checks 53
#define Pragma_Warnings 54
#define Pragma_Wide_Character_Encoding 55
#define Pragma_Abort_Defer 56
#define Pragma_All_Calls_Remote 57
#define Pragma_Annotate 58
#define Pragma_Assert 59
#define Pragma_Asynchronous 60
#define Pragma_Atomic 61
#define Pragma_Atomic_Components 62
#define Pragma_Attach_Handler 63
#define Pragma_CIL_Constructor 64
#define Pragma_Comment 65
#define Pragma_Common_Object 66
#define Pragma_Complete_Representation 67
#define Pragma_Complex_Representation 68
#define Pragma_Controlled 69
#define Pragma_Convention 70
#define Pragma_CPP_Class 71
#define Pragma_CPP_Constructor 72
#define Pragma_CPP_Virtual 73
#define Pragma_CPP_Vtable 74
#define Pragma_Debug 75
#define Pragma_Elaborate 76
#define Pragma_Elaborate_All 77
#define Pragma_Elaborate_Body 78
#define Pragma_Export 79
#define Pragma_Export_Exception 80
#define Pragma_Export_Function 81
#define Pragma_Export_Object 82
#define Pragma_Export_Procedure 83
#define Pragma_Export_Value 84
#define Pragma_Export_Valued_Procedure 85
#define Pragma_External 86
#define Pragma_Finalize_Storage_Only 87
#define Pragma_Ident 88
#define Pragma_Implemented_By_Entry 89
#define Pragma_Import 90
#define Pragma_Import_Exception 91
#define Pragma_Import_Function 92
#define Pragma_Import_Object 93
#define Pragma_Import_Procedure 94
#define Pragma_Import_Valued_Procedure 95
#define Pragma_Inline 96
#define Pragma_Inline_Always 97
#define Pragma_Inline_Generic 98
#define Pragma_Inspection_Point 99
#define Pragma_Interface_Name 100
#define Pragma_Interrupt_Handler 101
#define Pragma_Interrupt_Priority 102
#define Pragma_Java_Constructor 103
#define Pragma_Java_Interface 104
#define Pragma_Keep_Names 105
#define Pragma_Link_With 106
#define Pragma_Linker_Alias 107
#define Pragma_Linker_Constructor 108
#define Pragma_Linker_Destructor 109
#define Pragma_Linker_Options 110
#define Pragma_Linker_Section 111
#define Pragma_List 112
#define Pragma_Machine_Attribute 113
#define Pragma_Main 114
#define Pragma_Main_Storage 115
#define Pragma_Memory_Size 116
#define Pragma_No_Body 117
#define Pragma_No_Return 118
#define Pragma_Obsolescent 119
#define Pragma_Optimize 120
#define Pragma_Pack 121
#define Pragma_Page 122
#define Pragma_Passive 123
#define Pragma_Preelaborable_Initialization 124
#define Pragma_Preelaborate 125
#define Pragma_Preelaborate_05 126
#define Pragma_Psect_Object 127
#define Pragma_Pure 128
#define Pragma_Pure_05 129
#define Pragma_Pure_Function 130
#define Pragma_Remote_Call_Interface 131
#define Pragma_Remote_Types 132
#define Pragma_Share_Generic 133
#define Pragma_Shared 134
#define Pragma_Shared_Passive 135
#define Pragma_Source_Reference 136
#define Pragma_Static_Elaboration_Desired 137
#define Pragma_Stream_Convert 138
#define Pragma_Subtitle 139
#define Pragma_Suppress_All 140
#define Pragma_Suppress_Debug_Info 141
#define Pragma_Suppress_Initialization 142
#define Pragma_System_Name 143
#define Pragma_Task_Info 144
#define Pragma_Task_Name 145
#define Pragma_Task_Storage 146
#define Pragma_Time_Slice 147
#define Pragma_Title 148
#define Pragma_Unchecked_Union 149
#define Pragma_Unimplemented_Unit 150
#define Pragma_Universal_Aliasing 151
#define Pragma_Unmodified 152
#define Pragma_Unreferenced 153
#define Pragma_Unreferenced_Objects 154
#define Pragma_Unreserve_All_Interrupts 155
#define Pragma_Volatile 156
#define Pragma_Volatile_Components 157
#define Pragma_Weak_External 158
#define Pragma_AST_Entry 159
#define Pragma_Fast_Math 160
#define Pragma_Interface 161
#define Pragma_Priority 162
#define Pragma_Storage_Size 163
#define Pragma_Storage_Unit 164
/* End of snames.h (C version of Snames package spec) */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment