[Ada] New pragmas and front-end clean ups
Arnaud Charlet
charlet@adacore.com
Tue Apr 10 06:49:00 GMT 2007
Tested on i686-linux, committed on trunk
An undocumented effect of both -gnatX and pragma Extensions_Allowed
was to set Ada 2005 mode. This was a transitional behavior that no
longer is appropriate.
Also, if a pragma Priority is used in the main program, and there are no other
tasking constructs in the program, then the pragma is ignored (that's
because the non-tasking version of the run time is loaded).
This is not strictly a bug, since no legitimate Ada program can tell that
the pragma is ignored in these circumstances, but it's still a bit
surprising, and we may as well make sure the tasking run time is loaded
in this case.
We achieve this by forcing an implicit with of system.tasking.
if the following program is compiled with -gnatG
with System;
procedure Priotest is
pragma Priority (System.Priority'Last);
begin
for I in Integer'Range loop
delay 0.01;
end loop;
end Priotest;
The resulting output will contain the line:
with system.system__tasking;
ensuring that the tasking run time is loaded
This patch also adds a new pragma Compile_Time_Error, which is just like
the existing Compile_Time_Warning pragma except that an error message
is generated rather than a warning.
Compiling the following example:
function k return integer is
x : Integer := 3;
pragma Compile_Time_Error
(Boolean'size = 1, "incompatible implementation of boolean size");
pragma Compile_Time_Warning
(integer'size = 32, "this does not work for 32 bit integers");
begin
return x;
end;
Gives the following output:
k.adb:4:07: incompatible implementation of boolean size
k.adb:6:07: warning: this does not work for 32 bit integers
Finally, the warning circuitry was not recognizing that return objects are
referenced and considered assignments to them to be useless. This
patch corrects these two omissions.
gnat.dg/return1.adb should compile silently.
2007-04-06 Robert Dewar <dewar@adacore.com>
Javier Miranda <miranda@adacore.com>
Bob Duff <duff@adacore.com>
Vincent Celier <celier@adacore.com>
* par-prag.adb (Prag): Add dummy entry for pragma Compile_Time_Error
(Extensions_Allowed): No longer sets Ada_Version
Entry for pragma Unreferenced_Objects
* sem_prag.adb (Analyze_Pragma, case Priority): Force with of
system.tasking if pragma priority used in a procedure
(Analyze_Pragma, case Warning): Handle dot warning switches
(Process_Compile_Time_Warning_Or_Error): New procedure
(Analyze_Pragma): Add processing for Compile_Time_Error
Add support for extra arguments External_Name and Link_Name.
Remove code associated with pragmas CPP_Virtual and CPP_Vtable.
(Process_Import_Or_Interface): Add support for the use of pragma Import
with tagged types.
(Extensions_Allowed): No longer affects Ada_Version
(Analyze_Pragma): Split Is_Abstract flag into Is_Abstract_Subprogram and
Is_Abstract_Type. Make sure these are called only when appropriate.
Add processing for pragma Unreferenced_Objects
* snames.h, snames.ads, snames.adb: Add entry for pragma
Compile_Time_Error
Add new standard name Minimum_Binder_Options for new gprmake
Add new standard names for gprmake: Archive_Suffix,
Library_Auto_Init_Supported, Library_Major_Minor_Id_Supported,
Library_Support, Library_Version_Options,
Shared_Library_Minimum_Options,
Shared_Library_Prefix, Shared_Library_Suffix, Symbolic_Link_Supported.
Change Name_Call to Name_uCall so that it cannot clash with a legal
subprogram name.
Add new standard names Mapping_Spec_Suffix and Mapping_Body_Suffix
Append C_Plus_Plus to convention identifiers as synonym for CPP
Add new standard names Stack and Builder_Switches
Add new standard names: Compiler_Minimum_Options, Global_Config_File,
Library_Builder, Local_Config_File, Objects_Path, Objects_Path_File,
Run_Path_Option, Toolchain_Version.
Entry for pragma Unreferenced_Objects
* switch-c.adb (Scan_Front_End_Switches): Store correct -gnateD
switches, without repetition of "eD". Make sure that last character of
-gnatep= switch is not taken as -gnat switch character.
Complete rewrite of circuit for handling saving compilation options
Occasioned by need to support dot switchs for -gnatw, but cleans up
things in general.
-gnatX does not affect Ada_Version
Include -gnatyA in -gnatg style switches
* sem_warn.ads, sem_warn.adb (Output_Unreferenced_Messages): Exclude
warnings on return objects.
(Warn_On_Useless_Assignment): Exclude warnings on return objects
(Set_Dot_Warning_Switch): New procedure
(Check_References): Add missing case of test for
Has_Pragma_Unreferenced_Objects
(Output_Unreferenced_Messages): Implement effect of new pragma
Unreferenced_Objects, remove special casing of limited controlled
variables.
-------------- next part --------------
Index: par-prag.adb
===================================================================
--- par-prag.adb (revision 123291)
+++ par-prag.adb (working copy)
@@ -376,14 +376,10 @@ begin
if Chars (Expression (Arg1)) = Name_On then
Extensions_Allowed := True;
- Ada_Version := Ada_Version_Type'Last;
else
Extensions_Allowed := False;
- Ada_Version := Ada_Version_Type'Min (Ada_Version, Ada_95);
end if;
- Ada_Version_Explicit := Ada_Version;
-
----------------
-- List (2.8) --
----------------
@@ -1058,6 +1054,7 @@ begin
Pragma_Atomic |
Pragma_Atomic_Components |
Pragma_Attach_Handler |
+ Pragma_Compile_Time_Error |
Pragma_Compile_Time_Warning |
Pragma_Convention_Identifier |
Pragma_CPP_Class |
@@ -1179,6 +1176,7 @@ begin
Pragma_Unimplemented_Unit |
Pragma_Universal_Data |
Pragma_Unreferenced |
+ Pragma_Unreferenced_Objects |
Pragma_Unreserve_All_Interrupts |
Pragma_Unsuppress |
Pragma_Use_VADS_Size |
Index: sem_prag.adb
===================================================================
--- sem_prag.adb (revision 123291)
+++ sem_prag.adb (working copy)
@@ -35,7 +35,6 @@ with Casing; use Casing;
with Csets; use Csets;
with Debug; use Debug;
with Einfo; use Einfo;
-with Elists; use Elists;
with Errout; use Errout;
with Exp_Dist; use Exp_Dist;
with Hostparm; use Hostparm;
@@ -54,7 +53,6 @@ with Sem; use Sem;
with Sem_Ch3; use Sem_Ch3;
with Sem_Ch8; use Sem_Ch8;
with Sem_Ch13; use Sem_Ch13;
-with Sem_Disp; use Sem_Disp;
with Sem_Dist; use Sem_Dist;
with Sem_Elim; use Sem_Elim;
with Sem_Eval; use Sem_Eval;
@@ -513,6 +511,9 @@ package body Sem_Prag is
-- Shared is an obsolete Ada 83 pragma, treated as being identical
-- in effect to pragma Atomic.
+ procedure Process_Compile_Time_Warning_Or_Error;
+ -- Common processing for Compile_Time_Error and Compile_Time_Warning
+
procedure Process_Convention (C : out Convention_Id; E : out Entity_Id);
-- Common procesing for Convention, Interface, Import and Export.
-- Checks first two arguments of pragma, and sets the appropriate
@@ -1985,6 +1986,78 @@ package body Sem_Prag is
end if;
end Process_Atomic_Shared_Volatile;
+ -------------------------------------------
+ -- Process_Compile_Time_Warning_Or_Error --
+ -------------------------------------------
+
+ procedure Process_Compile_Time_Warning_Or_Error is
+ Arg1x : constant Node_Id := Get_Pragma_Arg (Arg1);
+
+ begin
+ GNAT_Pragma;
+ Check_Arg_Count (2);
+ Check_No_Identifiers;
+ Check_Arg_Is_Static_Expression (Arg2, Standard_String);
+ Analyze_And_Resolve (Arg1x, Standard_Boolean);
+
+ if Compile_Time_Known_Value (Arg1x) then
+ if Is_True (Expr_Value (Get_Pragma_Arg (Arg1))) then
+ declare
+ Str : constant String_Id :=
+ Strval (Get_Pragma_Arg (Arg2));
+ Len : constant Int := String_Length (Str);
+ Cont : Boolean;
+ Ptr : Nat;
+ CC : Char_Code;
+ C : Character;
+
+ begin
+ Cont := False;
+ Ptr := 1;
+
+ -- Loop through segments of message separated by line
+ -- feeds. We output these segments as separate messages
+ -- with continuation marks for all but the first.
+
+ loop
+ Error_Msg_Strlen := 0;
+
+ -- Loop to copy characters from argument to error
+ -- message string buffer.
+
+ loop
+ exit when Ptr > Len;
+ CC := Get_String_Char (Str, Ptr);
+ Ptr := Ptr + 1;
+
+ -- Ignore wide chars ??? else store character
+
+ if In_Character_Range (CC) then
+ C := Get_Character (CC);
+ exit when C = ASCII.LF;
+ Error_Msg_Strlen := Error_Msg_Strlen + 1;
+ Error_Msg_String (Error_Msg_Strlen) := C;
+ end if;
+ end loop;
+
+ -- Here with one line ready to go
+
+ Error_Msg_Warn := Prag_Id = Pragma_Compile_Time_Warning;
+
+ if Cont = False then
+ Error_Msg_N ("<~", Arg1);
+ Cont := True;
+ else
+ Error_Msg_N ("\<~", Arg1);
+ end if;
+
+ exit when Ptr > Len;
+ end loop;
+ end;
+ end if;
+ end if;
+ end Process_Compile_Time_Warning_Or_Error;
+
------------------------
-- Process_Convention --
------------------------
@@ -2247,7 +2320,7 @@ package body Sem_Prag is
-- Treat a pragma Import as an implicit body, for GPS use
if Prag_Id = Pragma_Import then
- Generate_Reference (E, Id, 'b');
+ Generate_Reference (E, Id, 'b');
end if;
E1 := E;
@@ -3175,6 +3248,19 @@ package body Sem_Prag is
Set_Is_Public (Def_Id);
Process_Interface_Name (Def_Id, Arg3, Arg4);
+ -- Import a CPP class
+
+ elsif Is_Record_Type (Def_Id)
+ and then C = Convention_CPP
+ then
+ if not Is_Tagged_Type (Def_Id) then
+ Error_Msg_Sloc := Sloc (Def_Id);
+ Error_Pragma_Arg ("imported 'C'P'P type must be tagged", Arg2);
+ else
+ Set_Is_CPP_Class (Def_Id);
+ Set_Is_Limited_Record (Def_Id);
+ end if;
+
else
Error_Pragma_Arg
("second argument of pragma% must be object or subprogram",
@@ -5035,6 +5121,16 @@ package body Sem_Prag is
-- Processing for this pragma is shared with Psect_Object
+ ------------------------
+ -- Compile_Time_Error --
+ ------------------------
+
+ -- pragma Compile_Time_Error
+ -- (boolean_EXPRESSION, static_string_EXPRESSION);
+
+ when Pragma_Compile_Time_Error =>
+ Process_Compile_Time_Warning_Or_Error;
+
--------------------------
-- Compile_Time_Warning --
--------------------------
@@ -5042,71 +5138,8 @@ package body Sem_Prag is
-- pragma Compile_Time_Warning
-- (boolean_EXPRESSION, static_string_EXPRESSION);
- when Pragma_Compile_Time_Warning => Compile_Time_Warning : declare
- Arg1x : constant Node_Id := Get_Pragma_Arg (Arg1);
-
- begin
- GNAT_Pragma;
- Check_Arg_Count (2);
- Check_No_Identifiers;
- Check_Arg_Is_Static_Expression (Arg2, Standard_String);
- Analyze_And_Resolve (Arg1x, Standard_Boolean);
-
- if Compile_Time_Known_Value (Arg1x) then
- if Is_True (Expr_Value (Get_Pragma_Arg (Arg1))) then
- declare
- Str : constant String_Id :=
- Strval (Get_Pragma_Arg (Arg2));
- Len : constant Int := String_Length (Str);
- Cont : Boolean;
- Ptr : Nat;
- CC : Char_Code;
- C : Character;
-
- begin
- Cont := False;
- Ptr := 1;
-
- -- Loop through segments of message separated by line
- -- feeds. We output these segments as separate messages
- -- with continuation marks for all but the first.
-
- loop
- Error_Msg_Strlen := 0;
-
- -- Loop to copy characters from argument to error
- -- message string buffer.
-
- loop
- exit when Ptr > Len;
- CC := Get_String_Char (Str, Ptr);
- Ptr := Ptr + 1;
-
- -- Ignore wide chars ??? else store character
-
- if In_Character_Range (CC) then
- C := Get_Character (CC);
- exit when C = ASCII.LF;
- Error_Msg_Strlen := Error_Msg_Strlen + 1;
- Error_Msg_String (Error_Msg_Strlen) := C;
- end if;
- end loop;
-
- -- Here with one line ready to go
-
- if Cont = False then
- Error_Msg_N ("?~", Arg1);
- Cont := True;
- else
- Error_Msg_N ("\?~", Arg1);
- end if;
-
- exit when Ptr > Len;
- end loop;
- end;
- end if;
- end if;
- end Compile_Time_Warning;
+ when Pragma_Compile_Time_Warning =>
+ Process_Compile_Time_Warning_Or_Error;
-----------------------------
-- Complete_Representation --
@@ -5346,14 +5379,16 @@ package body Sem_Prag is
-- pragma CPP_Class ([Entity =>] local_NAME)
when Pragma_CPP_Class => CPP_Class : declare
- Arg : Node_Id;
- Typ : Entity_Id;
- Default_DTC : Entity_Id := Empty;
- VTP_Type : constant Entity_Id := RTE (RE_Vtable_Ptr);
- C : Entity_Id;
- Tag_C : Entity_Id;
+ Arg : Node_Id;
+ Typ : Entity_Id;
begin
+ if Warn_On_Obsolescent_Feature then
+ Error_Msg_N
+ ("'G'N'A'T pragma cpp'_class is now obsolete; replace it" &
+ " by pragma import?", N);
+ end if;
+
GNAT_Pragma;
Check_Arg_Count (1);
Check_Optional_Identifier (Arg1, Name_Entity);
@@ -5374,79 +5409,22 @@ package body Sem_Prag is
Typ := Entity (Arg);
- if not Is_Record_Type (Typ) then
- Error_Pragma_Arg ("pragma% applicable to a record, "
- & "tagged record or record extension", Arg1);
- end if;
-
- Default_DTC := First_Component (Typ);
- while Present (Default_DTC)
- and then Etype (Default_DTC) /= VTP_Type
- loop
- Next_Component (Default_DTC);
- end loop;
-
- -- Case of non tagged type
-
if not Is_Tagged_Type (Typ) then
- Set_Is_CPP_Class (Typ);
-
- if Present (Default_DTC) then
- Error_Pragma_Arg
- ("only tagged records can contain vtable pointers", Arg1);
- end if;
-
- -- Case of tagged type with no user-defined vtable ptr. In this
- -- case, because of our C++ ABI compatibility, the programmer
- -- does not need to specify the tag component.
-
- elsif Is_Tagged_Type (Typ)
- and then No (Default_DTC)
- then
- Set_Is_CPP_Class (Typ);
- Set_Is_Limited_Record (Typ);
-
- -- Tagged type that has a vtable ptr
-
- elsif Present (Default_DTC) then
- Set_Is_CPP_Class (Typ);
- Set_Is_Limited_Record (Typ);
- Set_Is_Tag (Default_DTC);
- Set_DT_Entry_Count (Default_DTC, No_Uint);
-
- -- Since a CPP type has no direct link to its associated tag
- -- most tags checks cannot be performed
-
- Set_Kill_Tag_Checks (Typ);
- Set_Kill_Tag_Checks (Class_Wide_Type (Typ));
-
- -- Get rid of the _tag component when there was one.
- -- It is only useful for regular tagged types
-
- if Expander_Active and then Typ = Root_Type (Typ) then
-
- Tag_C := First_Tag_Component (Typ);
- C := First_Entity (Typ);
-
- if C = Tag_C then
- Set_First_Entity (Typ, Next_Entity (Tag_C));
-
- else
- while Next_Entity (C) /= Tag_C loop
- Next_Entity (C);
- end loop;
-
- Set_Next_Entity (C, Next_Entity (Tag_C));
- end if;
- end if;
+ Error_Pragma_Arg ("pragma% applicable to tagged types ", Arg1);
end if;
+
+ Set_Is_CPP_Class (Typ);
+ Set_Is_Limited_Record (Typ);
+ Set_Convention (Typ, Convention_CPP);
end CPP_Class;
---------------------
-- CPP_Constructor --
---------------------
- -- pragma CPP_Constructor ([Entity =>] LOCAL_NAME);
+ -- pragma CPP_Constructor ([Entity =>] LOCAL_NAME
+ -- [, [External_Name =>] static_string_EXPRESSION ]
+ -- [, [Link_Name =>] static_string_EXPRESSION ]);
when Pragma_CPP_Constructor => CPP_Constructor : declare
Id : Entity_Id;
@@ -5454,7 +5432,8 @@ package body Sem_Prag is
begin
GNAT_Pragma;
- Check_Arg_Count (1);
+ Check_At_Least_N_Arguments (1);
+ Check_At_Most_N_Arguments (3);
Check_Optional_Identifier (Arg1, Name_Entity);
Check_Arg_Is_Local_Name (Arg1);
@@ -5473,10 +5452,9 @@ package body Sem_Prag is
and then Is_Class_Wide_Type (Etype (Def_Id))
and then Is_CPP_Class (Etype (Etype (Def_Id)))
then
- -- What the heck is this??? this pragma allows only 1 arg
-
if Arg_Count >= 2 then
- Check_At_Most_N_Arguments (3);
+ Set_Imported (Def_Id);
+ Set_Is_Public (Def_Id);
Process_Interface_Name (Def_Id, Arg2, Arg3);
end if;
@@ -5499,119 +5477,12 @@ package body Sem_Prag is
-- CPP_Virtual --
-----------------
- -- pragma CPP_Virtual
- -- [Entity =>] LOCAL_NAME
- -- [ [Vtable_Ptr =>] LOCAL_NAME,
- -- [Position =>] static_integer_EXPRESSION]);
-
when Pragma_CPP_Virtual => CPP_Virtual : declare
- Arg : Node_Id;
- Typ : Entity_Id;
- Subp : Entity_Id;
- VTP_Type : constant Entity_Id := RTE (RE_Vtable_Ptr);
- DTC : Entity_Id;
- V : Uint;
-
begin
- GNAT_Pragma;
- Check_Arg_Order ((Name_Entity, Name_Vtable_Ptr, Name_Position));
-
- if Arg_Count = 3 then
- Check_Optional_Identifier (Arg2, Name_Vtable_Ptr);
-
- -- We allow Entry_Count as well as Position for the third
- -- parameter for back compatibility with versions of GNAT
- -- before version 3.12. The documentation has always said
- -- Position, but the code up to 3.12 said Entry_Count.
-
- if Chars (Arg3) /= Name_Entry_Count then
- Check_Optional_Identifier (Arg3, Name_Position);
- end if;
-
- else
- Check_Arg_Count (1);
- end if;
-
- Check_Optional_Identifier (Arg1, Name_Entity);
- Check_Arg_Is_Local_Name (Arg1);
-
- -- First argument must be a subprogram name
-
- Arg := Expression (Arg1);
- Find_Program_Unit_Name (Arg);
-
- if Etype (Arg) = Any_Type then
- return;
- else
- Subp := Entity (Arg);
- end if;
-
- if not (Is_Subprogram (Subp)
- and then Is_Dispatching_Operation (Subp))
- then
- Error_Pragma_Arg
- ("pragma% must reference a primitive operation", Arg1);
- end if;
-
- Typ := Find_Dispatching_Type (Subp);
-
- -- If only one Argument defaults are :
- -- . DTC_Entity is the default Vtable pointer
- -- . DT_Position will be set at the freezing point
-
- if Arg_Count = 1 then
- Set_DTC_Entity (Subp, First_Tag_Component (Typ));
- return;
- end if;
-
- -- Second argument is a component name of type Vtable_Ptr
-
- Arg := Expression (Arg2);
-
- if Nkind (Arg) /= N_Identifier then
- Error_Msg_NE ("must be a& component name", Arg, Typ);
- raise Pragma_Exit;
- end if;
-
- DTC := First_Component (Typ);
- while Present (DTC) and then Chars (DTC) /= Chars (Arg) loop
- Next_Component (DTC);
- end loop;
-
- -- Case of tagged type with no user-defined vtable ptr
-
- if No (DTC) then
- Error_Msg_NE ("must be a& component name", Arg, Typ);
- raise Pragma_Exit;
-
- elsif Etype (DTC) /= VTP_Type then
- Wrong_Type (Arg, VTP_Type);
- return;
- end if;
-
- -- Third argument is an integer (DT_Position)
-
- Arg := Expression (Arg3);
- Analyze_And_Resolve (Arg, Any_Integer);
-
- if not Is_Static_Expression (Arg) then
- Flag_Non_Static_Expr
- ("third argument of pragma CPP_Virtual must be static!",
- Arg3);
- raise Pragma_Exit;
-
- else
- V := Expr_Value (Expression (Arg3));
-
- if V <= 0 then
- Error_Pragma_Arg
- ("third argument of pragma% must be positive",
- Arg3);
-
- else
- Set_DTC_Entity (Subp, DTC);
- Set_DT_Position (Subp, V);
- end if;
+ if Warn_On_Obsolescent_Feature then
+ Error_Msg_N
+ ("'G'N'A'T pragma cpp'_virtual is now obsolete and has " &
+ "no effect?", N);
end if;
end CPP_Virtual;
@@ -5619,110 +5490,12 @@ package body Sem_Prag is
-- CPP_Vtable --
----------------
- -- pragma CPP_Vtable (
- -- [Entity =>] LOCAL_NAME
- -- [Vtable_Ptr =>] LOCAL_NAME,
- -- [Entry_Count =>] static_integer_EXPRESSION);
-
when Pragma_CPP_Vtable => CPP_Vtable : declare
- Arg : Node_Id;
- Typ : Entity_Id;
- VTP_Type : constant Entity_Id := RTE (RE_Vtable_Ptr);
- DTC : Entity_Id;
- V : Uint;
- Elmt : Elmt_Id;
-
begin
- GNAT_Pragma;
- Check_Arg_Order ((Name_Entity, Name_Vtable_Ptr, Name_Entry_Count));
- Check_Arg_Count (3);
- Check_Optional_Identifier (Arg1, Name_Entity);
- Check_Optional_Identifier (Arg2, Name_Vtable_Ptr);
- Check_Optional_Identifier (Arg3, Name_Entry_Count);
- Check_Arg_Is_Local_Name (Arg1);
-
- -- First argument is a record type name
-
- Arg := Expression (Arg1);
- Analyze (Arg);
-
- if Etype (Arg) = Any_Type then
- return;
- else
- Typ := Entity (Arg);
- end if;
-
- if not (Is_Tagged_Type (Typ) and then Is_CPP_Class (Typ)) then
- Error_Pragma_Arg ("'C'P'P_Class tagged type expected", Arg1);
- end if;
-
- -- Second argument is a component name of type Vtable_Ptr
-
- Arg := Expression (Arg2);
-
- if Nkind (Arg) /= N_Identifier then
- Error_Msg_NE ("must be a& component name", Arg, Typ);
- raise Pragma_Exit;
- end if;
-
- DTC := First_Component (Typ);
- while Present (DTC) and then Chars (DTC) /= Chars (Arg) loop
- Next_Component (DTC);
- end loop;
-
- if No (DTC) then
- Error_Msg_NE ("must be a& component name", Arg, Typ);
- raise Pragma_Exit;
-
- elsif Etype (DTC) /= VTP_Type then
- Wrong_Type (DTC, VTP_Type);
- return;
-
- -- If it is the first pragma Vtable, This becomes the default tag
-
- elsif (not Is_Tag (DTC))
- and then DT_Entry_Count (First_Tag_Component (Typ)) = No_Uint
- then
- Set_Is_Tag (First_Tag_Component (Typ), False);
- Set_Is_Tag (DTC, True);
- Set_DT_Entry_Count (DTC, No_Uint);
- end if;
-
- -- Those pragmas must appear before any primitive operation
- -- definition (except inherited ones) otherwise the default
- -- may be wrong
-
- Elmt := First_Elmt (Primitive_Operations (Typ));
- while Present (Elmt) loop
- if No (Alias (Node (Elmt))) then
- Error_Msg_Sloc := Sloc (Node (Elmt));
- Error_Pragma
- ("pragma% must appear before this primitive operation");
- end if;
-
- Next_Elmt (Elmt);
- end loop;
-
- -- Third argument is an integer (DT_Entry_Count)
-
- Arg := Expression (Arg3);
- Analyze_And_Resolve (Arg, Any_Integer);
-
- if not Is_Static_Expression (Arg) then
- Flag_Non_Static_Expr
- ("entry count for pragma CPP_Vtable must be a static " &
- "expression!", Arg3);
- raise Pragma_Exit;
-
- else
- V := Expr_Value (Expression (Arg3));
-
- if V <= 0 then
- Error_Pragma_Arg
- ("entry count for pragma% must be positive", Arg3);
- else
- Set_DT_Entry_Count (DTC, V);
- end if;
+ if Warn_On_Obsolescent_Feature then
+ Error_Msg_N
+ ("'G'N'A'T pragma cpp'_vtable is now obsolete and has " &
+ "no effect?", N);
end if;
end CPP_Vtable;
@@ -6560,14 +6333,10 @@ package body Sem_Prag is
if Chars (Expression (Arg1)) = Name_On then
Extensions_Allowed := True;
- Ada_Version := Ada_Version_Type'Last;
else
Extensions_Allowed := False;
- Ada_Version := Ada_Version_Type'Min (Ada_Version, Ada_95);
end if;
- Ada_Version_Explicit := Ada_Version;
-
--------------
-- External --
--------------
@@ -7674,7 +7443,7 @@ package body Sem_Prag is
-- java.lang.Object.Typ and that all primitives of the type
-- should be declared abstract. ???
- if not Is_Tagged_Type (Typ) or else not Is_Abstract (Typ) then
+ if not Is_Tagged_Type (Typ) or else not Is_Abstract_Type (Typ) then
Error_Pragma_Arg ("pragma% requires an abstract "
& "tagged type", Arg1);
@@ -8927,7 +8696,19 @@ package body Sem_Prag is
end if;
Set_Main_Priority
- (Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
+ (Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
+
+ -- Load an arbitrary entity from System.Tasking to make sure
+ -- this package is implicitly with'ed, since we need to have
+ -- the tasking run-time active for the pragma Priority to have
+ -- any effect.
+
+ declare
+ Discard : Entity_Id;
+ pragma Warnings (Off, Discard);
+ begin
+ Discard := RTE (RE_Task_List);
+ end;
-- Task or Protected, must be of type Integer
@@ -10586,7 +10367,7 @@ package body Sem_Prag is
Get_Name_String (Chars (Cunitent));
Set_Casing (Mixed_Case);
Write_Str (Name_Buffer (1 .. Name_Len));
- Write_Str (" is not implemented");
+ Write_Str (" is not supported in this configuration");
Write_Eol;
raise Unrecoverable_Error;
end if;
@@ -10709,6 +10490,38 @@ package body Sem_Prag is
end if;
end Unreferenced;
+ --------------------------
+ -- Unreferenced_Objects --
+ --------------------------
+
+ -- pragma Unreferenced_Objects (local_Name {, local_Name});
+
+ when Pragma_Unreferenced_Objects => Unreferenced_Objects : declare
+ Arg_Node : Node_Id;
+ Arg_Expr : Node_Id;
+
+ begin
+ GNAT_Pragma;
+ Check_At_Least_N_Arguments (1);
+
+ Arg_Node := Arg1;
+ while Present (Arg_Node) loop
+ Check_No_Identifier (Arg_Node);
+ Check_Arg_Is_Local_Name (Arg_Node);
+ Arg_Expr := Get_Pragma_Arg (Arg_Node);
+
+ if not Is_Entity_Name (Arg_Expr)
+ or else not Is_Type (Entity (Arg_Expr))
+ then
+ Error_Pragma_Arg
+ ("argument for pragma% must be type or subtype", Arg_Node);
+ end if;
+
+ Set_Has_Pragma_Unreferenced_Objects (Entity (Arg_Expr));
+ Next (Arg_Node);
+ end loop;
+ end Unreferenced_Objects;
+
------------------------------
-- Unreserve_All_Interrupts --
------------------------------
@@ -10862,20 +10675,48 @@ package body Sem_Prag is
declare
Lit : constant Node_Id := Expr_Value_S (Argx);
Str : constant String_Id := Strval (Lit);
+ Len : constant Nat := String_Length (Str);
C : Char_Code;
+ J : Nat;
+ OK : Boolean;
+ Chr : Character;
begin
- for J in 1 .. String_Length (Str) loop
+ J := 1;
+ while J <= Len loop
C := Get_String_Char (Str, J);
+ OK := In_Character_Range (C);
- if In_Character_Range (C)
- and then Set_Warning_Switch (Get_Character (C))
- then
- null;
- else
+ if OK then
+ Chr := Get_Character (C);
+
+ -- Dot case
+
+ if J < Len and then Chr = '.' then
+ J := J + 1;
+ C := Get_String_Char (Str, J);
+ Chr := Get_Character (C);
+
+ if not Set_Dot_Warning_Switch (Chr) then
+ Error_Pragma_Arg
+ ("invalid warning switch character " &
+ '.' & Chr, Arg1);
+ end if;
+
+ -- Non-Dot case
+
+ else
+ OK := Set_Warning_Switch (Chr);
+ end if;
+ end if;
+
+ if not OK then
Error_Pragma_Arg
- ("invalid warning switch character", Arg1);
+ ("invalid warning switch character " & Chr,
+ Arg1);
end if;
+
+ J := J + 1;
end loop;
end;
end if;
@@ -10953,7 +10794,7 @@ package body Sem_Prag is
if Is_Configuration_Pragma then
if Chars (Argx) = Name_On then
Error_Pragma
- ("pragma Warnings (Off, string) cannot be " &
+ ("pragma Warnings (On, string) cannot be " &
"used as configuration pragma");
else
@@ -11178,6 +11019,7 @@ package body Sem_Prag is
Pragma_C_Pass_By_Copy => 0,
Pragma_Comment => 0,
Pragma_Common_Object => -1,
+ Pragma_Compile_Time_Error => -1,
Pragma_Compile_Time_Warning => -1,
Pragma_Complete_Representation => 0,
Pragma_Complex_Representation => 0,
@@ -11302,6 +11144,7 @@ package body Sem_Prag is
Pragma_Unimplemented_Unit => -1,
Pragma_Universal_Data => -1,
Pragma_Unreferenced => -1,
+ Pragma_Unreferenced_Objects => -1,
Pragma_Unreserve_All_Interrupts => -1,
Pragma_Unsuppress => 0,
Pragma_Use_VADS_Size => -1,
Index: snames.h
===================================================================
--- snames.h (revision 123291)
+++ snames.h (working copy)
@@ -220,153 +220,155 @@ extern unsigned char Get_Pragma_Id (int)
#define Pragma_Ada_2005 3
#define Pragma_Assertion_Policy 4
#define Pragma_C_Pass_By_Copy 5
-#define Pragma_Compile_Time_Warning 6
-#define Pragma_Component_Alignment 7
-#define Pragma_Convention_Identifier 8
-#define Pragma_Debug_Policy 9
-#define Pragma_Detect_Blocking 10
-#define Pragma_Discard_Names 11
-#define Pragma_Elaboration_Checks 12
-#define Pragma_Eliminate 13
-#define Pragma_Explicit_Overriding 14
-#define Pragma_Extend_System 15
-#define Pragma_Extensions_Allowed 16
-#define Pragma_External_Name_Casing 17
-#define Pragma_Float_Representation 18
-#define Pragma_Initialize_Scalars 19
-#define Pragma_Interrupt_State 20
-#define Pragma_License 21
-#define Pragma_Locking_Policy 22
-#define Pragma_Long_Float 23
-#define Pragma_No_Run_Time 24
-#define Pragma_No_Strict_Aliasing 25
-#define Pragma_Normalize_Scalars 26
-#define Pragma_Polling 27
-#define Pragma_Persistent_BSS 28
-#define Pragma_Priority_Specific_Dispatching 29
-#define Pragma_Profile 30
-#define Pragma_Profile_Warnings 31
-#define Pragma_Propagate_Exceptions 32
-#define Pragma_Queuing_Policy 33
-#define Pragma_Ravenscar 34
-#define Pragma_Restricted_Run_Time 35
-#define Pragma_Restrictions 36
-#define Pragma_Restriction_Warnings 37
-#define Pragma_Reviewable 38
-#define Pragma_Source_File_Name 39
-#define Pragma_Source_File_Name_Project 40
-#define Pragma_Style_Checks 41
-#define Pragma_Suppress 42
-#define Pragma_Suppress_Exception_Locations 43
-#define Pragma_Task_Dispatching_Policy 44
-#define Pragma_Universal_Data 45
-#define Pragma_Unsuppress 46
-#define Pragma_Use_VADS_Size 47
-#define Pragma_Validity_Checks 48
-#define Pragma_Warnings 49
-#define Pragma_Wide_Character_Encoding 50
-#define Pragma_Abort_Defer 51
-#define Pragma_All_Calls_Remote 52
-#define Pragma_Annotate 53
-#define Pragma_Assert 54
-#define Pragma_Asynchronous 55
-#define Pragma_Atomic 56
-#define Pragma_Atomic_Components 57
-#define Pragma_Attach_Handler 58
-#define Pragma_Comment 59
-#define Pragma_Common_Object 60
-#define Pragma_Complete_Representation 61
-#define Pragma_Complex_Representation 62
-#define Pragma_Controlled 63
-#define Pragma_Convention 64
-#define Pragma_CPP_Class 65
-#define Pragma_CPP_Constructor 66
-#define Pragma_CPP_Virtual 67
-#define Pragma_CPP_Vtable 68
-#define Pragma_Debug 69
-#define Pragma_Elaborate 70
-#define Pragma_Elaborate_All 71
-#define Pragma_Elaborate_Body 72
-#define Pragma_Export 73
-#define Pragma_Export_Exception 74
-#define Pragma_Export_Function 75
-#define Pragma_Export_Object 76
-#define Pragma_Export_Procedure 77
-#define Pragma_Export_Value 78
-#define Pragma_Export_Valued_Procedure 79
-#define Pragma_External 80
-#define Pragma_Finalize_Storage_Only 81
-#define Pragma_Ident 82
-#define Pragma_Import 83
-#define Pragma_Import_Exception 84
-#define Pragma_Import_Function 85
-#define Pragma_Import_Object 86
-#define Pragma_Import_Procedure 87
-#define Pragma_Import_Valued_Procedure 88
-#define Pragma_Inline 89
-#define Pragma_Inline_Always 90
-#define Pragma_Inline_Generic 91
-#define Pragma_Inspection_Point 92
-#define Pragma_Interface_Name 93
-#define Pragma_Interrupt_Handler 94
-#define Pragma_Interrupt_Priority 95
-#define Pragma_Java_Constructor 96
-#define Pragma_Java_Interface 97
-#define Pragma_Keep_Names 98
-#define Pragma_Link_With 99
-#define Pragma_Linker_Alias 100
-#define Pragma_Linker_Constructor 101
-#define Pragma_Linker_Destructor 102
-#define Pragma_Linker_Options 103
-#define Pragma_Linker_Section 104
-#define Pragma_List 105
-#define Pragma_Machine_Attribute 106
-#define Pragma_Main 107
-#define Pragma_Main_Storage 108
-#define Pragma_Memory_Size 109
-#define Pragma_No_Return 110
-#define Pragma_Obsolescent 111
-#define Pragma_Optimize 112
-#define Pragma_Optional_Overriding 113
-#define Pragma_Pack 114
-#define Pragma_Page 115
-#define Pragma_Passive 116
-#define Pragma_Preelaborable_Initialization 117
-#define Pragma_Preelaborate 118
-#define Pragma_Preelaborate_05 119
-#define Pragma_Psect_Object 120
-#define Pragma_Pure 121
-#define Pragma_Pure_05 122
-#define Pragma_Pure_Function 123
-#define Pragma_Remote_Call_Interface 124
-#define Pragma_Remote_Types 125
-#define Pragma_Share_Generic 126
-#define Pragma_Shared 127
-#define Pragma_Shared_Passive 128
-#define Pragma_Source_Reference 129
-#define Pragma_Stream_Convert 130
-#define Pragma_Subtitle 131
-#define Pragma_Suppress_All 132
-#define Pragma_Suppress_Debug_Info 133
-#define Pragma_Suppress_Initialization 134
-#define Pragma_System_Name 135
-#define Pragma_Task_Info 136
-#define Pragma_Task_Name 137
-#define Pragma_Task_Storage 138
-#define Pragma_Thread_Body 139
-#define Pragma_Time_Slice 140
-#define Pragma_Title 141
-#define Pragma_Unchecked_Union 142
-#define Pragma_Unimplemented_Unit 143
-#define Pragma_Unreferenced 144
-#define Pragma_Unreserve_All_Interrupts 145
-#define Pragma_Volatile 146
-#define Pragma_Volatile_Components 147
-#define Pragma_Weak_External 148
-#define Pragma_AST_Entry 149
-#define Pragma_Interface 150
-#define Pragma_Priority 151
-#define Pragma_Storage_Size 152
-#define Pragma_Storage_Unit 153
+#define Pragma_Compile_Time_Error 6
+#define Pragma_Compile_Time_Warning 7
+#define Pragma_Component_Alignment 8
+#define Pragma_Convention_Identifier 9
+#define Pragma_Debug_Policy 10
+#define Pragma_Detect_Blocking 11
+#define Pragma_Discard_Names 12
+#define Pragma_Elaboration_Checks 13
+#define Pragma_Eliminate 14
+#define Pragma_Explicit_Overriding 15
+#define Pragma_Extend_System 16
+#define Pragma_Extensions_Allowed 17
+#define Pragma_External_Name_Casing 18
+#define Pragma_Float_Representation 19
+#define Pragma_Initialize_Scalars 20
+#define Pragma_Interrupt_State 21
+#define Pragma_License 22
+#define Pragma_Locking_Policy 23
+#define Pragma_Long_Float 24
+#define Pragma_No_Run_Time 25
+#define Pragma_No_Strict_Aliasing 26
+#define Pragma_Normalize_Scalars 27
+#define Pragma_Polling 28
+#define Pragma_Persistent_BSS 29
+#define Pragma_Priority_Specific_Dispatching 30
+#define Pragma_Profile 31
+#define Pragma_Profile_Warnings 32
+#define Pragma_Propagate_Exceptions 33
+#define Pragma_Queuing_Policy 34
+#define Pragma_Ravenscar 35
+#define Pragma_Restricted_Run_Time 36
+#define Pragma_Restrictions 37
+#define Pragma_Restriction_Warnings 38
+#define Pragma_Reviewable 39
+#define Pragma_Source_File_Name 40
+#define Pragma_Source_File_Name_Project 41
+#define Pragma_Style_Checks 42
+#define Pragma_Suppress 43
+#define Pragma_Suppress_Exception_Locations 44
+#define Pragma_Task_Dispatching_Policy 45
+#define Pragma_Universal_Data 46
+#define Pragma_Unsuppress 47
+#define Pragma_Use_VADS_Size 48
+#define Pragma_Validity_Checks 49
+#define Pragma_Warnings 50
+#define Pragma_Wide_Character_Encoding 51
+#define Pragma_Abort_Defer 52
+#define Pragma_All_Calls_Remote 53
+#define Pragma_Annotate 54
+#define Pragma_Assert 55
+#define Pragma_Asynchronous 56
+#define Pragma_Atomic 57
+#define Pragma_Atomic_Components 58
+#define Pragma_Attach_Handler 59
+#define Pragma_Comment 60
+#define Pragma_Common_Object 61
+#define Pragma_Complete_Representation 62
+#define Pragma_Complex_Representation 63
+#define Pragma_Controlled 64
+#define Pragma_Convention 65
+#define Pragma_CPP_Class 66
+#define Pragma_CPP_Constructor 67
+#define Pragma_CPP_Virtual 68
+#define Pragma_CPP_Vtable 69
+#define Pragma_Debug 70
+#define Pragma_Elaborate 71
+#define Pragma_Elaborate_All 72
+#define Pragma_Elaborate_Body 73
+#define Pragma_Export 74
+#define Pragma_Export_Exception 75
+#define Pragma_Export_Function 76
+#define Pragma_Export_Object 77
+#define Pragma_Export_Procedure 78
+#define Pragma_Export_Value 79
+#define Pragma_Export_Valued_Procedure 80
+#define Pragma_External 81
+#define Pragma_Finalize_Storage_Only 82
+#define Pragma_Ident 83
+#define Pragma_Import 84
+#define Pragma_Import_Exception 85
+#define Pragma_Import_Function 86
+#define Pragma_Import_Object 87
+#define Pragma_Import_Procedure 88
+#define Pragma_Import_Valued_Procedure 89
+#define Pragma_Inline 90
+#define Pragma_Inline_Always 91
+#define Pragma_Inline_Generic 92
+#define Pragma_Inspection_Point 93
+#define Pragma_Interface_Name 94
+#define Pragma_Interrupt_Handler 95
+#define Pragma_Interrupt_Priority 96
+#define Pragma_Java_Constructor 97
+#define Pragma_Java_Interface 98
+#define Pragma_Keep_Names 99
+#define Pragma_Link_With 100
+#define Pragma_Linker_Alias 101
+#define Pragma_Linker_Constructor 102
+#define Pragma_Linker_Destructor 103
+#define Pragma_Linker_Options 104
+#define Pragma_Linker_Section 105
+#define Pragma_List 106
+#define Pragma_Machine_Attribute 107
+#define Pragma_Main 108
+#define Pragma_Main_Storage 109
+#define Pragma_Memory_Size 110
+#define Pragma_No_Return 111
+#define Pragma_Obsolescent 112
+#define Pragma_Optimize 113
+#define Pragma_Optional_Overriding 114
+#define Pragma_Pack 115
+#define Pragma_Page 116
+#define Pragma_Passive 117
+#define Pragma_Preelaborable_Initialization 118
+#define Pragma_Preelaborate 119
+#define Pragma_Preelaborate_05 120
+#define Pragma_Psect_Object 121
+#define Pragma_Pure 122
+#define Pragma_Pure_05 123
+#define Pragma_Pure_Function 124
+#define Pragma_Remote_Call_Interface 125
+#define Pragma_Remote_Types 126
+#define Pragma_Share_Generic 127
+#define Pragma_Shared 128
+#define Pragma_Shared_Passive 129
+#define Pragma_Source_Reference 130
+#define Pragma_Stream_Convert 131
+#define Pragma_Subtitle 132
+#define Pragma_Suppress_All 133
+#define Pragma_Suppress_Debug_Info 134
+#define Pragma_Suppress_Initialization 135
+#define Pragma_System_Name 136
+#define Pragma_Task_Info 137
+#define Pragma_Task_Name 138
+#define Pragma_Task_Storage 139
+#define Pragma_Thread_Body 140
+#define Pragma_Time_Slice 141
+#define Pragma_Title 142
+#define Pragma_Unchecked_Union 143
+#define Pragma_Unimplemented_Unit 144
+#define Pragma_Unreferenced 145
+#define Pragma_Unreferenced_Objects 146
+#define Pragma_Unreserve_All_Interrupts 147
+#define Pragma_Volatile 148
+#define Pragma_Volatile_Components 149
+#define Pragma_Weak_External 150
+#define Pragma_AST_Entry 151
+#define Pragma_Interface 152
+#define Pragma_Priority 153
+#define Pragma_Storage_Size 154
+#define Pragma_Storage_Unit 155
/* End of snames.h (C version of Snames package spec) */
Index: snames.ads
===================================================================
--- snames.ads (revision 123291)
+++ snames.ads (working copy)
@@ -267,7 +267,7 @@ package Snames is
Name_Partition : constant Name_Id := N + 078;
Name_Partition_Interface : constant Name_Id := N + 079;
Name_Ras : constant Name_Id := N + 080;
- Name_Call : constant Name_Id := N + 081;
+ Name_uCall : constant Name_Id := N + 081;
Name_RCI_Name : constant Name_Id := N + 082;
Name_Receiver : constant Name_Id := N + 083;
Name_Result : constant Name_Id := N + 084;
@@ -339,58 +339,59 @@ package Snames is
Name_Ada_2005 : constant Name_Id := N + 117; -- GNAT
Name_Assertion_Policy : constant Name_Id := N + 118; -- Ada 05
Name_C_Pass_By_Copy : constant Name_Id := N + 119; -- GNAT
- Name_Compile_Time_Warning : constant Name_Id := N + 120; -- GNAT
- Name_Component_Alignment : constant Name_Id := N + 121; -- GNAT
- Name_Convention_Identifier : constant Name_Id := N + 122; -- GNAT
- Name_Debug_Policy : constant Name_Id := N + 123; -- GNAT
- Name_Detect_Blocking : constant Name_Id := N + 124; -- Ada 05
- Name_Discard_Names : constant Name_Id := N + 125;
- Name_Elaboration_Checks : constant Name_Id := N + 126; -- GNAT
- Name_Eliminate : constant Name_Id := N + 127; -- GNAT
- Name_Explicit_Overriding : constant Name_Id := N + 128; -- Ada 05
- Name_Extend_System : constant Name_Id := N + 129; -- GNAT
- Name_Extensions_Allowed : constant Name_Id := N + 130; -- GNAT
- Name_External_Name_Casing : constant Name_Id := N + 131; -- GNAT
- Name_Float_Representation : constant Name_Id := N + 132; -- GNAT
- Name_Initialize_Scalars : constant Name_Id := N + 133; -- GNAT
- Name_Interrupt_State : constant Name_Id := N + 134; -- GNAT
- Name_License : constant Name_Id := N + 135; -- GNAT
- Name_Locking_Policy : constant Name_Id := N + 136;
- Name_Long_Float : constant Name_Id := N + 137; -- VMS
- Name_No_Run_Time : constant Name_Id := N + 138; -- GNAT
- Name_No_Strict_Aliasing : constant Name_Id := N + 139; -- GNAT
- Name_Normalize_Scalars : constant Name_Id := N + 140;
- Name_Polling : constant Name_Id := N + 141; -- GNAT
- Name_Persistent_BSS : constant Name_Id := N + 142; -- GNAT
- Name_Priority_Specific_Dispatching : constant Name_Id := N + 143; -- Ada 05
- Name_Profile : constant Name_Id := N + 144; -- Ada 05
- Name_Profile_Warnings : constant Name_Id := N + 145; -- GNAT
- Name_Propagate_Exceptions : constant Name_Id := N + 146; -- GNAT
- Name_Queuing_Policy : constant Name_Id := N + 147;
- Name_Ravenscar : constant Name_Id := N + 148; -- Ada 05
- Name_Restricted_Run_Time : constant Name_Id := N + 149; -- GNAT
- Name_Restrictions : constant Name_Id := N + 150;
- Name_Restriction_Warnings : constant Name_Id := N + 151; -- GNAT
- Name_Reviewable : constant Name_Id := N + 152;
- Name_Source_File_Name : constant Name_Id := N + 153; -- GNAT
- Name_Source_File_Name_Project : constant Name_Id := N + 154; -- GNAT
- Name_Style_Checks : constant Name_Id := N + 155; -- GNAT
- Name_Suppress : constant Name_Id := N + 156;
- Name_Suppress_Exception_Locations : constant Name_Id := N + 157; -- GNAT
- Name_Task_Dispatching_Policy : constant Name_Id := N + 158;
- Name_Universal_Data : constant Name_Id := N + 159; -- AAMP
- Name_Unsuppress : constant Name_Id := N + 160; -- GNAT
- Name_Use_VADS_Size : constant Name_Id := N + 161; -- GNAT
- Name_Validity_Checks : constant Name_Id := N + 162; -- GNAT
- Name_Warnings : constant Name_Id := N + 163; -- GNAT
- Name_Wide_Character_Encoding : constant Name_Id := N + 164; -- GNAT
- Last_Configuration_Pragma_Name : constant Name_Id := N + 164;
+ Name_Compile_Time_Error : constant Name_Id := N + 120; -- GNAT
+ Name_Compile_Time_Warning : constant Name_Id := N + 121; -- GNAT
+ Name_Component_Alignment : constant Name_Id := N + 122; -- GNAT
+ Name_Convention_Identifier : constant Name_Id := N + 123; -- GNAT
+ Name_Debug_Policy : constant Name_Id := N + 124; -- GNAT
+ Name_Detect_Blocking : constant Name_Id := N + 125; -- Ada 05
+ Name_Discard_Names : constant Name_Id := N + 126;
+ Name_Elaboration_Checks : constant Name_Id := N + 127; -- GNAT
+ Name_Eliminate : constant Name_Id := N + 128; -- GNAT
+ Name_Explicit_Overriding : constant Name_Id := N + 129; -- Ada 05
+ Name_Extend_System : constant Name_Id := N + 130; -- GNAT
+ Name_Extensions_Allowed : constant Name_Id := N + 131; -- GNAT
+ Name_External_Name_Casing : constant Name_Id := N + 132; -- GNAT
+ Name_Float_Representation : constant Name_Id := N + 133; -- GNAT
+ Name_Initialize_Scalars : constant Name_Id := N + 134; -- GNAT
+ Name_Interrupt_State : constant Name_Id := N + 135; -- GNAT
+ Name_License : constant Name_Id := N + 136; -- GNAT
+ Name_Locking_Policy : constant Name_Id := N + 137;
+ Name_Long_Float : constant Name_Id := N + 138; -- VMS
+ Name_No_Run_Time : constant Name_Id := N + 139; -- GNAT
+ Name_No_Strict_Aliasing : constant Name_Id := N + 140; -- GNAT
+ Name_Normalize_Scalars : constant Name_Id := N + 141;
+ Name_Polling : constant Name_Id := N + 142; -- GNAT
+ Name_Persistent_BSS : constant Name_Id := N + 143; -- GNAT
+ Name_Priority_Specific_Dispatching : constant Name_Id := N + 144; -- Ada 05
+ Name_Profile : constant Name_Id := N + 145; -- Ada 05
+ Name_Profile_Warnings : constant Name_Id := N + 146; -- GNAT
+ Name_Propagate_Exceptions : constant Name_Id := N + 147; -- GNAT
+ Name_Queuing_Policy : constant Name_Id := N + 148;
+ Name_Ravenscar : constant Name_Id := N + 149; -- Ada 05
+ Name_Restricted_Run_Time : constant Name_Id := N + 150; -- GNAT
+ Name_Restrictions : constant Name_Id := N + 151;
+ Name_Restriction_Warnings : constant Name_Id := N + 152; -- GNAT
+ Name_Reviewable : constant Name_Id := N + 153;
+ Name_Source_File_Name : constant Name_Id := N + 154; -- GNAT
+ Name_Source_File_Name_Project : constant Name_Id := N + 155; -- GNAT
+ Name_Style_Checks : constant Name_Id := N + 156; -- GNAT
+ Name_Suppress : constant Name_Id := N + 157;
+ Name_Suppress_Exception_Locations : constant Name_Id := N + 158; -- GNAT
+ Name_Task_Dispatching_Policy : constant Name_Id := N + 159;
+ Name_Universal_Data : constant Name_Id := N + 160; -- AAMP
+ Name_Unsuppress : constant Name_Id := N + 161; -- GNAT
+ Name_Use_VADS_Size : constant Name_Id := N + 162; -- GNAT
+ Name_Validity_Checks : constant Name_Id := N + 163; -- GNAT
+ Name_Warnings : constant Name_Id := N + 164; -- GNAT
+ Name_Wide_Character_Encoding : constant Name_Id := N + 165; -- GNAT
+ Last_Configuration_Pragma_Name : constant Name_Id := N + 165;
-- Remaining pragma names
- Name_Abort_Defer : constant Name_Id := N + 165; -- GNAT
- Name_All_Calls_Remote : constant Name_Id := N + 166;
- Name_Annotate : constant Name_Id := N + 167; -- GNAT
+ Name_Abort_Defer : constant Name_Id := N + 166; -- GNAT
+ Name_All_Calls_Remote : constant Name_Id := N + 167;
+ Name_Annotate : constant Name_Id := N + 168; -- GNAT
-- Note: AST_Entry is not in this list because its name matches the
-- name of the corresponding attribute. However, it is included in the
@@ -398,72 +399,72 @@ package Snames is
-- and Check_Pragma_Id correctly recognize and process Name_AST_Entry.
-- AST_Entry is a VMS specific pragma.
- Name_Assert : constant Name_Id := N + 168; -- Ada 05
- Name_Asynchronous : constant Name_Id := N + 169;
- Name_Atomic : constant Name_Id := N + 170;
- Name_Atomic_Components : constant Name_Id := N + 171;
- Name_Attach_Handler : constant Name_Id := N + 172;
- Name_Comment : constant Name_Id := N + 173; -- GNAT
- Name_Common_Object : constant Name_Id := N + 174; -- GNAT
- Name_Complete_Representation : constant Name_Id := N + 175; -- GNAT
- Name_Complex_Representation : constant Name_Id := N + 176; -- GNAT
- Name_Controlled : constant Name_Id := N + 177;
- Name_Convention : constant Name_Id := N + 178;
- Name_CPP_Class : constant Name_Id := N + 179; -- GNAT
- Name_CPP_Constructor : constant Name_Id := N + 180; -- GNAT
- Name_CPP_Virtual : constant Name_Id := N + 181; -- GNAT
- Name_CPP_Vtable : constant Name_Id := N + 182; -- GNAT
- Name_Debug : constant Name_Id := N + 183; -- GNAT
- Name_Elaborate : constant Name_Id := N + 184; -- Ada 83
- Name_Elaborate_All : constant Name_Id := N + 185;
- Name_Elaborate_Body : constant Name_Id := N + 186;
- Name_Export : constant Name_Id := N + 187;
- Name_Export_Exception : constant Name_Id := N + 188; -- VMS
- Name_Export_Function : constant Name_Id := N + 189; -- GNAT
- Name_Export_Object : constant Name_Id := N + 190; -- GNAT
- Name_Export_Procedure : constant Name_Id := N + 191; -- GNAT
- Name_Export_Value : constant Name_Id := N + 192; -- GNAT
- Name_Export_Valued_Procedure : constant Name_Id := N + 193; -- GNAT
- Name_External : constant Name_Id := N + 194; -- GNAT
- Name_Finalize_Storage_Only : constant Name_Id := N + 195; -- GNAT
- Name_Ident : constant Name_Id := N + 196; -- VMS
- Name_Import : constant Name_Id := N + 197;
- Name_Import_Exception : constant Name_Id := N + 198; -- VMS
- Name_Import_Function : constant Name_Id := N + 199; -- GNAT
- Name_Import_Object : constant Name_Id := N + 200; -- GNAT
- Name_Import_Procedure : constant Name_Id := N + 201; -- GNAT
- Name_Import_Valued_Procedure : constant Name_Id := N + 202; -- GNAT
- Name_Inline : constant Name_Id := N + 203;
- Name_Inline_Always : constant Name_Id := N + 204; -- GNAT
- Name_Inline_Generic : constant Name_Id := N + 205; -- GNAT
- Name_Inspection_Point : constant Name_Id := N + 206;
- Name_Interface_Name : constant Name_Id := N + 207; -- GNAT
- Name_Interrupt_Handler : constant Name_Id := N + 208;
- Name_Interrupt_Priority : constant Name_Id := N + 209;
- Name_Java_Constructor : constant Name_Id := N + 210; -- GNAT
- Name_Java_Interface : constant Name_Id := N + 211; -- GNAT
- Name_Keep_Names : constant Name_Id := N + 212; -- GNAT
- Name_Link_With : constant Name_Id := N + 213; -- GNAT
- Name_Linker_Alias : constant Name_Id := N + 214; -- GNAT
- Name_Linker_Constructor : constant Name_Id := N + 215; -- GNAT
- Name_Linker_Destructor : constant Name_Id := N + 216; -- GNAT
- Name_Linker_Options : constant Name_Id := N + 217;
- Name_Linker_Section : constant Name_Id := N + 218; -- GNAT
- Name_List : constant Name_Id := N + 219;
- Name_Machine_Attribute : constant Name_Id := N + 220; -- GNAT
- Name_Main : constant Name_Id := N + 221; -- GNAT
- Name_Main_Storage : constant Name_Id := N + 222; -- GNAT
- Name_Memory_Size : constant Name_Id := N + 223; -- Ada 83
- Name_No_Return : constant Name_Id := N + 224; -- GNAT
- Name_Obsolescent : constant Name_Id := N + 225; -- GNAT
- Name_Optimize : constant Name_Id := N + 226;
- Name_Optional_Overriding : constant Name_Id := N + 227; -- Ada 05
- Name_Pack : constant Name_Id := N + 228;
- Name_Page : constant Name_Id := N + 229;
- Name_Passive : constant Name_Id := N + 230; -- GNAT
- Name_Preelaborable_Initialization : constant Name_Id := N + 231; -- Ada 05
- Name_Preelaborate : constant Name_Id := N + 232;
- Name_Preelaborate_05 : constant Name_Id := N + 233; -- GNAT
+ Name_Assert : constant Name_Id := N + 169; -- Ada 05
+ Name_Asynchronous : constant Name_Id := N + 170;
+ Name_Atomic : constant Name_Id := N + 171;
+ Name_Atomic_Components : constant Name_Id := N + 172;
+ Name_Attach_Handler : constant Name_Id := N + 173;
+ Name_Comment : constant Name_Id := N + 174; -- GNAT
+ Name_Common_Object : constant Name_Id := N + 175; -- GNAT
+ Name_Complete_Representation : constant Name_Id := N + 176; -- GNAT
+ Name_Complex_Representation : constant Name_Id := N + 177; -- GNAT
+ Name_Controlled : constant Name_Id := N + 178;
+ Name_Convention : constant Name_Id := N + 179;
+ Name_CPP_Class : constant Name_Id := N + 180; -- GNAT
+ Name_CPP_Constructor : constant Name_Id := N + 181; -- GNAT
+ Name_CPP_Virtual : constant Name_Id := N + 182; -- GNAT
+ Name_CPP_Vtable : constant Name_Id := N + 183; -- GNAT
+ Name_Debug : constant Name_Id := N + 184; -- GNAT
+ Name_Elaborate : constant Name_Id := N + 185; -- Ada 83
+ Name_Elaborate_All : constant Name_Id := N + 186;
+ Name_Elaborate_Body : constant Name_Id := N + 187;
+ Name_Export : constant Name_Id := N + 188;
+ Name_Export_Exception : constant Name_Id := N + 189; -- VMS
+ Name_Export_Function : constant Name_Id := N + 190; -- GNAT
+ Name_Export_Object : constant Name_Id := N + 191; -- GNAT
+ Name_Export_Procedure : constant Name_Id := N + 192; -- GNAT
+ Name_Export_Value : constant Name_Id := N + 193; -- GNAT
+ Name_Export_Valued_Procedure : constant Name_Id := N + 194; -- GNAT
+ Name_External : constant Name_Id := N + 195; -- GNAT
+ Name_Finalize_Storage_Only : constant Name_Id := N + 196; -- GNAT
+ Name_Ident : constant Name_Id := N + 197; -- VMS
+ Name_Import : constant Name_Id := N + 198;
+ Name_Import_Exception : constant Name_Id := N + 199; -- VMS
+ Name_Import_Function : constant Name_Id := N + 200; -- GNAT
+ Name_Import_Object : constant Name_Id := N + 201; -- GNAT
+ Name_Import_Procedure : constant Name_Id := N + 202; -- GNAT
+ Name_Import_Valued_Procedure : constant Name_Id := N + 203; -- GNAT
+ Name_Inline : constant Name_Id := N + 204;
+ Name_Inline_Always : constant Name_Id := N + 205; -- GNAT
+ Name_Inline_Generic : constant Name_Id := N + 206; -- GNAT
+ Name_Inspection_Point : constant Name_Id := N + 207;
+ Name_Interface_Name : constant Name_Id := N + 208; -- GNAT
+ Name_Interrupt_Handler : constant Name_Id := N + 209;
+ Name_Interrupt_Priority : constant Name_Id := N + 210;
+ Name_Java_Constructor : constant Name_Id := N + 211; -- GNAT
+ Name_Java_Interface : constant Name_Id := N + 212; -- GNAT
+ Name_Keep_Names : constant Name_Id := N + 213; -- GNAT
+ Name_Link_With : constant Name_Id := N + 214; -- GNAT
+ Name_Linker_Alias : constant Name_Id := N + 215; -- GNAT
+ Name_Linker_Constructor : constant Name_Id := N + 216; -- GNAT
+ Name_Linker_Destructor : constant Name_Id := N + 217; -- GNAT
+ Name_Linker_Options : constant Name_Id := N + 218;
+ Name_Linker_Section : constant Name_Id := N + 219; -- GNAT
+ Name_List : constant Name_Id := N + 220;
+ Name_Machine_Attribute : constant Name_Id := N + 221; -- GNAT
+ Name_Main : constant Name_Id := N + 222; -- GNAT
+ Name_Main_Storage : constant Name_Id := N + 223; -- GNAT
+ Name_Memory_Size : constant Name_Id := N + 224; -- Ada 83
+ Name_No_Return : constant Name_Id := N + 225; -- GNAT
+ Name_Obsolescent : constant Name_Id := N + 226; -- GNAT
+ Name_Optimize : constant Name_Id := N + 227;
+ Name_Optional_Overriding : constant Name_Id := N + 228; -- Ada 05
+ Name_Pack : constant Name_Id := N + 229;
+ Name_Page : constant Name_Id := N + 230;
+ Name_Passive : constant Name_Id := N + 231; -- GNAT
+ Name_Preelaborable_Initialization : constant Name_Id := N + 232; -- Ada 05
+ Name_Preelaborate : constant Name_Id := N + 233;
+ Name_Preelaborate_05 : constant Name_Id := N + 234; -- GNAT
-- Note: Priority is not in this list because its name matches the
-- name of the corresponding attribute. However, it is included in the
@@ -471,15 +472,15 @@ package Snames is
-- and Check_Pragma_Id correctly recognize and process Priority.
-- Priority is a standard Ada 95 pragma.
- Name_Psect_Object : constant Name_Id := N + 234; -- VMS
- Name_Pure : constant Name_Id := N + 235;
- Name_Pure_05 : constant Name_Id := N + 236; -- GNAT
- Name_Pure_Function : constant Name_Id := N + 237; -- GNAT
- Name_Remote_Call_Interface : constant Name_Id := N + 238;
- Name_Remote_Types : constant Name_Id := N + 239;
- Name_Share_Generic : constant Name_Id := N + 240; -- GNAT
- Name_Shared : constant Name_Id := N + 241; -- Ada 83
- Name_Shared_Passive : constant Name_Id := N + 242;
+ Name_Psect_Object : constant Name_Id := N + 235; -- VMS
+ Name_Pure : constant Name_Id := N + 236;
+ Name_Pure_05 : constant Name_Id := N + 237; -- GNAT
+ Name_Pure_Function : constant Name_Id := N + 238; -- GNAT
+ Name_Remote_Call_Interface : constant Name_Id := N + 239;
+ Name_Remote_Types : constant Name_Id := N + 240;
+ Name_Share_Generic : constant Name_Id := N + 241; -- GNAT
+ Name_Shared : constant Name_Id := N + 242; -- Ada 83
+ Name_Shared_Passive : constant Name_Id := N + 243;
-- Note: Storage_Size is not in this list because its name matches the
-- name of the corresponding attribute. However, it is included in the
@@ -489,27 +490,28 @@ 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 + 243; -- GNAT
- Name_Stream_Convert : constant Name_Id := N + 244; -- GNAT
- Name_Subtitle : constant Name_Id := N + 245; -- GNAT
- Name_Suppress_All : constant Name_Id := N + 246; -- GNAT
- Name_Suppress_Debug_Info : constant Name_Id := N + 247; -- GNAT
- Name_Suppress_Initialization : constant Name_Id := N + 248; -- GNAT
- Name_System_Name : constant Name_Id := N + 249; -- Ada 83
- Name_Task_Info : constant Name_Id := N + 250; -- GNAT
- Name_Task_Name : constant Name_Id := N + 251; -- GNAT
- Name_Task_Storage : constant Name_Id := N + 252; -- VMS
- Name_Thread_Body : constant Name_Id := N + 253; -- GNAT
- Name_Time_Slice : constant Name_Id := N + 254; -- GNAT
- Name_Title : constant Name_Id := N + 255; -- GNAT
- Name_Unchecked_Union : constant Name_Id := N + 256; -- GNAT
- Name_Unimplemented_Unit : constant Name_Id := N + 257; -- GNAT
- Name_Unreferenced : constant Name_Id := N + 258; -- GNAT
- Name_Unreserve_All_Interrupts : constant Name_Id := N + 259; -- GNAT
- Name_Volatile : constant Name_Id := N + 260;
- Name_Volatile_Components : constant Name_Id := N + 261;
- Name_Weak_External : constant Name_Id := N + 262; -- GNAT
- Last_Pragma_Name : constant Name_Id := N + 262;
+ Name_Source_Reference : constant Name_Id := N + 244; -- GNAT
+ Name_Stream_Convert : constant Name_Id := N + 245; -- GNAT
+ Name_Subtitle : constant Name_Id := N + 246; -- GNAT
+ Name_Suppress_All : constant Name_Id := N + 247; -- GNAT
+ Name_Suppress_Debug_Info : constant Name_Id := N + 248; -- GNAT
+ Name_Suppress_Initialization : constant Name_Id := N + 249; -- GNAT
+ Name_System_Name : constant Name_Id := N + 250; -- Ada 83
+ Name_Task_Info : constant Name_Id := N + 251; -- GNAT
+ Name_Task_Name : constant Name_Id := N + 252; -- GNAT
+ Name_Task_Storage : constant Name_Id := N + 253; -- VMS
+ Name_Thread_Body : constant Name_Id := N + 254; -- GNAT
+ Name_Time_Slice : constant Name_Id := N + 255; -- GNAT
+ Name_Title : constant Name_Id := N + 256; -- GNAT
+ Name_Unchecked_Union : constant Name_Id := N + 257; -- GNAT
+ Name_Unimplemented_Unit : constant Name_Id := N + 258; -- GNAT
+ Name_Unreferenced : constant Name_Id := N + 259; -- GNAT
+ Name_Unreferenced_Objects : constant Name_Id := N + 260; -- GNAT
+ Name_Unreserve_All_Interrupts : constant Name_Id := N + 261; -- GNAT
+ Name_Volatile : constant Name_Id := N + 262;
+ Name_Volatile_Components : constant Name_Id := N + 263;
+ Name_Weak_External : constant Name_Id := N + 264; -- GNAT
+ Last_Pragma_Name : constant Name_Id := N + 264;
-- Language convention names for pragma Convention/Export/Import/Interface
-- Note that Name_C is not included in this list, since it was already
@@ -520,114 +522,118 @@ package Snames is
-- Entry and Protected, this is because these conventions cannot be
-- specified by a pragma.
- First_Convention_Name : constant Name_Id := N + 263;
- Name_Ada : constant Name_Id := N + 263;
- Name_Assembler : constant Name_Id := N + 264;
- Name_COBOL : constant Name_Id := N + 265;
- Name_CPP : constant Name_Id := N + 266;
- Name_Fortran : constant Name_Id := N + 267;
- Name_Intrinsic : constant Name_Id := N + 268;
- Name_Java : constant Name_Id := N + 269;
- Name_Stdcall : constant Name_Id := N + 270;
- Name_Stubbed : constant Name_Id := N + 271;
- Last_Convention_Name : constant Name_Id := N + 271;
+ First_Convention_Name : constant Name_Id := N + 265;
+ Name_Ada : constant Name_Id := N + 265;
+ Name_Assembler : constant Name_Id := N + 266;
+ Name_COBOL : constant Name_Id := N + 267;
+ Name_CPP : constant Name_Id := N + 268;
+ Name_Fortran : constant Name_Id := N + 269;
+ Name_Intrinsic : constant Name_Id := N + 270;
+ Name_Java : constant Name_Id := N + 271;
+ Name_Stdcall : constant Name_Id := N + 272;
+ Name_Stubbed : constant Name_Id := N + 273;
+ Last_Convention_Name : constant Name_Id := N + 273;
-- The following names are preset as synonyms for Assembler
- Name_Asm : constant Name_Id := N + 272;
- Name_Assembly : constant Name_Id := N + 273;
+ Name_Asm : constant Name_Id := N + 274;
+ Name_Assembly : constant Name_Id := N + 275;
-- The following names are preset as synonyms for C
- Name_Default : constant Name_Id := N + 274;
+ Name_Default : constant Name_Id := N + 276;
-- Name_Exernal (previously defined as pragma)
+ -- The following names are preset as synonyms for CPP
+
+ Name_C_Plus_Plus : constant Name_Id := N + 277;
+
-- The following names are present as synonyms for Stdcall
- Name_DLL : constant Name_Id := N + 275;
- Name_Win32 : constant Name_Id := N + 276;
+ Name_DLL : constant Name_Id := N + 278;
+ Name_Win32 : constant Name_Id := N + 279;
-- Other special names used in processing pragmas
- Name_As_Is : constant Name_Id := N + 277;
- Name_Attribute_Name : constant Name_Id := N + 278;
- Name_Body_File_Name : constant Name_Id := N + 279;
- Name_Boolean_Entry_Barriers : constant Name_Id := N + 280;
- Name_Check : constant Name_Id := N + 281;
- Name_Casing : constant Name_Id := N + 282;
- Name_Code : constant Name_Id := N + 283;
- Name_Component : constant Name_Id := N + 284;
- Name_Component_Size_4 : constant Name_Id := N + 285;
- Name_Copy : constant Name_Id := N + 286;
- Name_D_Float : constant Name_Id := N + 287;
- Name_Descriptor : constant Name_Id := N + 288;
- Name_Dot_Replacement : constant Name_Id := N + 289;
- Name_Dynamic : constant Name_Id := N + 290;
- Name_Entity : constant Name_Id := N + 291;
- Name_Entry_Count : constant Name_Id := N + 292;
- Name_External_Name : constant Name_Id := N + 293;
- Name_First_Optional_Parameter : constant Name_Id := N + 294;
- Name_Form : constant Name_Id := N + 295;
- Name_G_Float : constant Name_Id := N + 296;
- Name_Gcc : constant Name_Id := N + 297;
- Name_Gnat : constant Name_Id := N + 298;
- Name_GPL : constant Name_Id := N + 299;
- Name_IEEE_Float : constant Name_Id := N + 300;
- Name_Ignore : constant Name_Id := N + 301;
- Name_Info : constant Name_Id := N + 302;
- Name_Internal : constant Name_Id := N + 303;
- Name_Link_Name : constant Name_Id := N + 304;
- Name_Lowercase : constant Name_Id := N + 305;
- Name_Max_Entry_Queue_Depth : constant Name_Id := N + 306;
- Name_Max_Entry_Queue_Length : constant Name_Id := N + 307;
- Name_Max_Size : constant Name_Id := N + 308;
- Name_Mechanism : constant Name_Id := N + 309;
- Name_Message : constant Name_Id := N + 310;
- Name_Mixedcase : constant Name_Id := N + 311;
- Name_Modified_GPL : constant Name_Id := N + 312;
- Name_Name : constant Name_Id := N + 313;
- Name_NCA : constant Name_Id := N + 314;
- Name_No : constant Name_Id := N + 315;
- Name_No_Dependence : constant Name_Id := N + 316;
- Name_No_Dynamic_Attachment : constant Name_Id := N + 317;
- Name_No_Dynamic_Interrupts : constant Name_Id := N + 318;
- Name_No_Requeue : constant Name_Id := N + 319;
- Name_No_Requeue_Statements : constant Name_Id := N + 320;
- Name_No_Task_Attributes : constant Name_Id := N + 321;
- Name_No_Task_Attributes_Package : constant Name_Id := N + 322;
- Name_On : constant Name_Id := N + 323;
- Name_Parameter_Types : constant Name_Id := N + 324;
- Name_Reference : constant Name_Id := N + 325;
- Name_Restricted : constant Name_Id := N + 326;
- Name_Result_Mechanism : constant Name_Id := N + 327;
- Name_Result_Type : constant Name_Id := N + 328;
- Name_Runtime : constant Name_Id := N + 329;
- Name_SB : constant Name_Id := N + 330;
- Name_Secondary_Stack_Size : constant Name_Id := N + 331;
- Name_Section : constant Name_Id := N + 332;
- Name_Semaphore : constant Name_Id := N + 333;
- Name_Simple_Barriers : constant Name_Id := N + 334;
- Name_Spec_File_Name : constant Name_Id := N + 335;
- Name_State : constant Name_Id := N + 336;
- Name_Static : constant Name_Id := N + 337;
- Name_Stack_Size : constant Name_Id := N + 338;
- Name_Subunit_File_Name : constant Name_Id := N + 339;
- Name_Task_Stack_Size_Default : constant Name_Id := N + 340;
- Name_Task_Type : constant Name_Id := N + 341;
- Name_Time_Slicing_Enabled : constant Name_Id := N + 342;
- Name_Top_Guard : constant Name_Id := N + 343;
- Name_UBA : constant Name_Id := N + 344;
- Name_UBS : constant Name_Id := N + 345;
- Name_UBSB : constant Name_Id := N + 346;
- Name_Unit_Name : constant Name_Id := N + 347;
- Name_Unknown : constant Name_Id := N + 348;
- Name_Unrestricted : constant Name_Id := N + 349;
- Name_Uppercase : constant Name_Id := N + 350;
- Name_User : constant Name_Id := N + 351;
- Name_VAX_Float : constant Name_Id := N + 352;
- Name_VMS : constant Name_Id := N + 353;
- Name_Vtable_Ptr : constant Name_Id := N + 354;
- Name_Working_Storage : constant Name_Id := N + 355;
+ Name_As_Is : constant Name_Id := N + 280;
+ Name_Attribute_Name : constant Name_Id := N + 281;
+ Name_Body_File_Name : constant Name_Id := N + 282;
+ Name_Boolean_Entry_Barriers : constant Name_Id := N + 283;
+ Name_Check : constant Name_Id := N + 284;
+ Name_Casing : constant Name_Id := N + 285;
+ Name_Code : constant Name_Id := N + 286;
+ Name_Component : constant Name_Id := N + 287;
+ Name_Component_Size_4 : constant Name_Id := N + 288;
+ Name_Copy : constant Name_Id := N + 289;
+ Name_D_Float : constant Name_Id := N + 290;
+ Name_Descriptor : constant Name_Id := N + 291;
+ Name_Dot_Replacement : constant Name_Id := N + 292;
+ Name_Dynamic : constant Name_Id := N + 293;
+ Name_Entity : constant Name_Id := N + 294;
+ Name_Entry_Count : constant Name_Id := N + 295;
+ Name_External_Name : constant Name_Id := N + 296;
+ Name_First_Optional_Parameter : constant Name_Id := N + 297;
+ Name_Form : constant Name_Id := N + 298;
+ Name_G_Float : constant Name_Id := N + 299;
+ Name_Gcc : constant Name_Id := N + 300;
+ Name_Gnat : constant Name_Id := N + 301;
+ Name_GPL : constant Name_Id := N + 302;
+ Name_IEEE_Float : constant Name_Id := N + 303;
+ Name_Ignore : constant Name_Id := N + 304;
+ Name_Info : constant Name_Id := N + 305;
+ Name_Internal : constant Name_Id := N + 306;
+ Name_Link_Name : constant Name_Id := N + 307;
+ Name_Lowercase : constant Name_Id := N + 308;
+ Name_Max_Entry_Queue_Depth : constant Name_Id := N + 309;
+ Name_Max_Entry_Queue_Length : constant Name_Id := N + 310;
+ Name_Max_Size : constant Name_Id := N + 311;
+ Name_Mechanism : constant Name_Id := N + 312;
+ Name_Message : constant Name_Id := N + 313;
+ Name_Mixedcase : constant Name_Id := N + 314;
+ Name_Modified_GPL : constant Name_Id := N + 315;
+ Name_Name : constant Name_Id := N + 316;
+ Name_NCA : constant Name_Id := N + 317;
+ Name_No : constant Name_Id := N + 318;
+ Name_No_Dependence : constant Name_Id := N + 319;
+ Name_No_Dynamic_Attachment : constant Name_Id := N + 320;
+ Name_No_Dynamic_Interrupts : constant Name_Id := N + 321;
+ Name_No_Requeue : constant Name_Id := N + 322;
+ Name_No_Requeue_Statements : constant Name_Id := N + 323;
+ Name_No_Task_Attributes : constant Name_Id := N + 324;
+ Name_No_Task_Attributes_Package : constant Name_Id := N + 325;
+ Name_On : constant Name_Id := N + 326;
+ Name_Parameter_Types : constant Name_Id := N + 327;
+ Name_Reference : constant Name_Id := N + 328;
+ Name_Restricted : constant Name_Id := N + 329;
+ Name_Result_Mechanism : constant Name_Id := N + 330;
+ Name_Result_Type : constant Name_Id := N + 331;
+ Name_Runtime : constant Name_Id := N + 332;
+ Name_SB : constant Name_Id := N + 333;
+ Name_Secondary_Stack_Size : constant Name_Id := N + 334;
+ Name_Section : constant Name_Id := N + 335;
+ Name_Semaphore : constant Name_Id := N + 336;
+ Name_Simple_Barriers : constant Name_Id := N + 337;
+ Name_Spec_File_Name : constant Name_Id := N + 338;
+ Name_State : constant Name_Id := N + 339;
+ Name_Static : constant Name_Id := N + 340;
+ Name_Stack_Size : constant Name_Id := N + 341;
+ Name_Subunit_File_Name : constant Name_Id := N + 342;
+ Name_Task_Stack_Size_Default : constant Name_Id := N + 343;
+ Name_Task_Type : constant Name_Id := N + 344;
+ Name_Time_Slicing_Enabled : constant Name_Id := N + 345;
+ Name_Top_Guard : constant Name_Id := N + 346;
+ Name_UBA : constant Name_Id := N + 347;
+ Name_UBS : constant Name_Id := N + 348;
+ Name_UBSB : constant Name_Id := N + 349;
+ Name_Unit_Name : constant Name_Id := N + 350;
+ Name_Unknown : constant Name_Id := N + 351;
+ Name_Unrestricted : constant Name_Id := N + 352;
+ Name_Uppercase : constant Name_Id := N + 353;
+ Name_User : constant Name_Id := N + 354;
+ Name_VAX_Float : constant Name_Id := N + 355;
+ Name_VMS : constant Name_Id := N + 356;
+ Name_Vtable_Ptr : constant Name_Id := N + 357;
+ Name_Working_Storage : constant Name_Id := N + 358;
-- 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
@@ -641,168 +647,168 @@ 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 + 356;
- Name_Abort_Signal : constant Name_Id := N + 356; -- GNAT
- Name_Access : constant Name_Id := N + 357;
- Name_Address : constant Name_Id := N + 358;
- Name_Address_Size : constant Name_Id := N + 359; -- GNAT
- Name_Aft : constant Name_Id := N + 360;
- Name_Alignment : constant Name_Id := N + 361;
- Name_Asm_Input : constant Name_Id := N + 362; -- GNAT
- Name_Asm_Output : constant Name_Id := N + 363; -- GNAT
- Name_AST_Entry : constant Name_Id := N + 364; -- VMS
- Name_Bit : constant Name_Id := N + 365; -- GNAT
- Name_Bit_Order : constant Name_Id := N + 366;
- Name_Bit_Position : constant Name_Id := N + 367; -- GNAT
- Name_Body_Version : constant Name_Id := N + 368;
- Name_Callable : constant Name_Id := N + 369;
- Name_Caller : constant Name_Id := N + 370;
- Name_Code_Address : constant Name_Id := N + 371; -- GNAT
- Name_Component_Size : constant Name_Id := N + 372;
- Name_Compose : constant Name_Id := N + 373;
- Name_Constrained : constant Name_Id := N + 374;
- Name_Count : constant Name_Id := N + 375;
- Name_Default_Bit_Order : constant Name_Id := N + 376; -- GNAT
- Name_Definite : constant Name_Id := N + 377;
- Name_Delta : constant Name_Id := N + 378;
- Name_Denorm : constant Name_Id := N + 379;
- Name_Digits : constant Name_Id := N + 380;
- Name_Elaborated : constant Name_Id := N + 381; -- GNAT
- Name_Emax : constant Name_Id := N + 382; -- Ada 83
- Name_Enum_Rep : constant Name_Id := N + 383; -- GNAT
- Name_Epsilon : constant Name_Id := N + 384; -- Ada 83
- Name_Exponent : constant Name_Id := N + 385;
- Name_External_Tag : constant Name_Id := N + 386;
- Name_First : constant Name_Id := N + 387;
- Name_First_Bit : constant Name_Id := N + 388;
- Name_Fixed_Value : constant Name_Id := N + 389; -- GNAT
- Name_Fore : constant Name_Id := N + 390;
- Name_Has_Access_Values : constant Name_Id := N + 391; -- GNAT
- Name_Has_Discriminants : constant Name_Id := N + 392; -- GNAT
- Name_Identity : constant Name_Id := N + 393;
- Name_Img : constant Name_Id := N + 394; -- GNAT
- Name_Integer_Value : constant Name_Id := N + 395; -- GNAT
- Name_Large : constant Name_Id := N + 396; -- Ada 83
- Name_Last : constant Name_Id := N + 397;
- Name_Last_Bit : constant Name_Id := N + 398;
- Name_Leading_Part : constant Name_Id := N + 399;
- Name_Length : constant Name_Id := N + 400;
- Name_Machine_Emax : constant Name_Id := N + 401;
- Name_Machine_Emin : constant Name_Id := N + 402;
- Name_Machine_Mantissa : constant Name_Id := N + 403;
- Name_Machine_Overflows : constant Name_Id := N + 404;
- Name_Machine_Radix : constant Name_Id := N + 405;
- Name_Machine_Rounding : constant Name_Id := N + 406; -- Ada 05
- Name_Machine_Rounds : constant Name_Id := N + 407;
- Name_Machine_Size : constant Name_Id := N + 408; -- GNAT
- Name_Mantissa : constant Name_Id := N + 409; -- Ada 83
- Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 410;
- Name_Maximum_Alignment : constant Name_Id := N + 411; -- GNAT
- Name_Mechanism_Code : constant Name_Id := N + 412; -- GNAT
- Name_Mod : constant Name_Id := N + 413;
- Name_Model_Emin : constant Name_Id := N + 414;
- Name_Model_Epsilon : constant Name_Id := N + 415;
- Name_Model_Mantissa : constant Name_Id := N + 416;
- Name_Model_Small : constant Name_Id := N + 417;
- Name_Modulus : constant Name_Id := N + 418;
- Name_Null_Parameter : constant Name_Id := N + 419; -- GNAT
- Name_Object_Size : constant Name_Id := N + 420; -- GNAT
- Name_Partition_ID : constant Name_Id := N + 421;
- Name_Passed_By_Reference : constant Name_Id := N + 422; -- GNAT
- Name_Pool_Address : constant Name_Id := N + 423;
- Name_Pos : constant Name_Id := N + 424;
- Name_Position : constant Name_Id := N + 425;
- Name_Priority : constant Name_Id := N + 426; -- Ada 05
- Name_Range : constant Name_Id := N + 427;
- Name_Range_Length : constant Name_Id := N + 428; -- GNAT
- Name_Round : constant Name_Id := N + 429;
- Name_Safe_Emax : constant Name_Id := N + 430; -- Ada 83
- Name_Safe_First : constant Name_Id := N + 431;
- Name_Safe_Large : constant Name_Id := N + 432; -- Ada 83
- Name_Safe_Last : constant Name_Id := N + 433;
- Name_Safe_Small : constant Name_Id := N + 434; -- Ada 83
- Name_Scale : constant Name_Id := N + 435;
- Name_Scaling : constant Name_Id := N + 436;
- Name_Signed_Zeros : constant Name_Id := N + 437;
- Name_Size : constant Name_Id := N + 438;
- Name_Small : constant Name_Id := N + 439;
- Name_Storage_Size : constant Name_Id := N + 440;
- Name_Storage_Unit : constant Name_Id := N + 441; -- GNAT
- Name_Stream_Size : constant Name_Id := N + 442; -- Ada 05
- Name_Tag : constant Name_Id := N + 443;
- Name_Target_Name : constant Name_Id := N + 444; -- GNAT
- Name_Terminated : constant Name_Id := N + 445;
- Name_To_Address : constant Name_Id := N + 446; -- GNAT
- Name_Type_Class : constant Name_Id := N + 447; -- GNAT
- Name_UET_Address : constant Name_Id := N + 448; -- GNAT
- Name_Unbiased_Rounding : constant Name_Id := N + 449;
- Name_Unchecked_Access : constant Name_Id := N + 450;
- Name_Unconstrained_Array : constant Name_Id := N + 451;
- Name_Universal_Literal_String : constant Name_Id := N + 452; -- GNAT
- Name_Unrestricted_Access : constant Name_Id := N + 453; -- GNAT
- Name_VADS_Size : constant Name_Id := N + 454; -- GNAT
- Name_Val : constant Name_Id := N + 455;
- Name_Valid : constant Name_Id := N + 456;
- Name_Value_Size : constant Name_Id := N + 457; -- GNAT
- Name_Version : constant Name_Id := N + 458;
- Name_Wchar_T_Size : constant Name_Id := N + 459; -- GNAT
- Name_Wide_Wide_Width : constant Name_Id := N + 460; -- Ada 05
- Name_Wide_Width : constant Name_Id := N + 461;
- Name_Width : constant Name_Id := N + 462;
- Name_Word_Size : constant Name_Id := N + 463; -- GNAT
+ First_Attribute_Name : constant Name_Id := N + 359;
+ Name_Abort_Signal : constant Name_Id := N + 359; -- GNAT
+ Name_Access : constant Name_Id := N + 360;
+ Name_Address : constant Name_Id := N + 361;
+ Name_Address_Size : constant Name_Id := N + 362; -- GNAT
+ Name_Aft : constant Name_Id := N + 363;
+ Name_Alignment : constant Name_Id := N + 364;
+ Name_Asm_Input : constant Name_Id := N + 365; -- GNAT
+ Name_Asm_Output : constant Name_Id := N + 366; -- GNAT
+ Name_AST_Entry : constant Name_Id := N + 367; -- VMS
+ Name_Bit : constant Name_Id := N + 368; -- GNAT
+ Name_Bit_Order : constant Name_Id := N + 369;
+ Name_Bit_Position : constant Name_Id := N + 370; -- GNAT
+ Name_Body_Version : constant Name_Id := N + 371;
+ Name_Callable : constant Name_Id := N + 372;
+ Name_Caller : constant Name_Id := N + 373;
+ Name_Code_Address : constant Name_Id := N + 374; -- GNAT
+ Name_Component_Size : constant Name_Id := N + 375;
+ Name_Compose : constant Name_Id := N + 376;
+ Name_Constrained : constant Name_Id := N + 377;
+ Name_Count : constant Name_Id := N + 378;
+ Name_Default_Bit_Order : constant Name_Id := N + 379; -- GNAT
+ Name_Definite : constant Name_Id := N + 380;
+ Name_Delta : constant Name_Id := N + 381;
+ Name_Denorm : constant Name_Id := N + 382;
+ Name_Digits : constant Name_Id := N + 383;
+ Name_Elaborated : constant Name_Id := N + 384; -- GNAT
+ Name_Emax : constant Name_Id := N + 385; -- Ada 83
+ Name_Enum_Rep : constant Name_Id := N + 386; -- GNAT
+ Name_Epsilon : constant Name_Id := N + 387; -- Ada 83
+ Name_Exponent : constant Name_Id := N + 388;
+ Name_External_Tag : constant Name_Id := N + 389;
+ Name_First : constant Name_Id := N + 390;
+ Name_First_Bit : constant Name_Id := N + 391;
+ Name_Fixed_Value : constant Name_Id := N + 392; -- GNAT
+ Name_Fore : constant Name_Id := N + 393;
+ Name_Has_Access_Values : constant Name_Id := N + 394; -- GNAT
+ Name_Has_Discriminants : constant Name_Id := N + 395; -- GNAT
+ Name_Identity : constant Name_Id := N + 396;
+ Name_Img : constant Name_Id := N + 397; -- GNAT
+ Name_Integer_Value : constant Name_Id := N + 398; -- GNAT
+ Name_Large : constant Name_Id := N + 399; -- Ada 83
+ Name_Last : constant Name_Id := N + 400;
+ Name_Last_Bit : constant Name_Id := N + 401;
+ Name_Leading_Part : constant Name_Id := N + 402;
+ Name_Length : constant Name_Id := N + 403;
+ Name_Machine_Emax : constant Name_Id := N + 404;
+ Name_Machine_Emin : constant Name_Id := N + 405;
+ Name_Machine_Mantissa : constant Name_Id := N + 406;
+ Name_Machine_Overflows : constant Name_Id := N + 407;
+ Name_Machine_Radix : constant Name_Id := N + 408;
+ Name_Machine_Rounding : constant Name_Id := N + 409; -- Ada 05
+ Name_Machine_Rounds : constant Name_Id := N + 410;
+ Name_Machine_Size : constant Name_Id := N + 411; -- GNAT
+ Name_Mantissa : constant Name_Id := N + 412; -- Ada 83
+ Name_Max_Size_In_Storage_Elements : constant Name_Id := N + 413;
+ Name_Maximum_Alignment : constant Name_Id := N + 414; -- GNAT
+ Name_Mechanism_Code : constant Name_Id := N + 415; -- GNAT
+ Name_Mod : constant Name_Id := N + 416;
+ Name_Model_Emin : constant Name_Id := N + 417;
+ Name_Model_Epsilon : constant Name_Id := N + 418;
+ Name_Model_Mantissa : constant Name_Id := N + 419;
+ Name_Model_Small : constant Name_Id := N + 420;
+ Name_Modulus : constant Name_Id := N + 421;
+ Name_Null_Parameter : constant Name_Id := N + 422; -- GNAT
+ Name_Object_Size : constant Name_Id := N + 423; -- GNAT
+ Name_Partition_ID : constant Name_Id := N + 424;
+ Name_Passed_By_Reference : constant Name_Id := N + 425; -- GNAT
+ Name_Pool_Address : constant Name_Id := N + 426;
+ Name_Pos : constant Name_Id := N + 427;
+ Name_Position : constant Name_Id := N + 428;
+ Name_Priority : constant Name_Id := N + 429; -- Ada 05
+ Name_Range : constant Name_Id := N + 430;
+ Name_Range_Length : constant Name_Id := N + 431; -- GNAT
+ Name_Round : constant Name_Id := N + 432;
+ Name_Safe_Emax : constant Name_Id := N + 433; -- Ada 83
+ Name_Safe_First : constant Name_Id := N + 434;
+ Name_Safe_Large : constant Name_Id := N + 435; -- Ada 83
+ Name_Safe_Last : constant Name_Id := N + 436;
+ Name_Safe_Small : constant Name_Id := N + 437; -- Ada 83
+ Name_Scale : constant Name_Id := N + 438;
+ Name_Scaling : constant Name_Id := N + 439;
+ Name_Signed_Zeros : constant Name_Id := N + 440;
+ Name_Size : constant Name_Id := N + 441;
+ Name_Small : constant Name_Id := N + 442;
+ Name_Storage_Size : constant Name_Id := N + 443;
+ Name_Storage_Unit : constant Name_Id := N + 444; -- GNAT
+ Name_Stream_Size : constant Name_Id := N + 445; -- Ada 05
+ Name_Tag : constant Name_Id := N + 446;
+ Name_Target_Name : constant Name_Id := N + 447; -- GNAT
+ Name_Terminated : constant Name_Id := N + 448;
+ Name_To_Address : constant Name_Id := N + 449; -- GNAT
+ Name_Type_Class : constant Name_Id := N + 450; -- GNAT
+ Name_UET_Address : constant Name_Id := N + 451; -- GNAT
+ Name_Unbiased_Rounding : constant Name_Id := N + 452;
+ Name_Unchecked_Access : constant Name_Id := N + 453;
+ Name_Unconstrained_Array : constant Name_Id := N + 454;
+ Name_Universal_Literal_String : constant Name_Id := N + 455; -- GNAT
+ Name_Unrestricted_Access : constant Name_Id := N + 456; -- GNAT
+ Name_VADS_Size : constant Name_Id := N + 457; -- GNAT
+ Name_Val : constant Name_Id := N + 458;
+ Name_Valid : constant Name_Id := N + 459;
+ Name_Value_Size : constant Name_Id := N + 460; -- GNAT
+ Name_Version : constant Name_Id := N + 461;
+ Name_Wchar_T_Size : constant Name_Id := N + 462; -- GNAT
+ Name_Wide_Wide_Width : constant Name_Id := N + 463; -- Ada 05
+ Name_Wide_Width : constant Name_Id := N + 464;
+ Name_Width : constant Name_Id := N + 465;
+ Name_Word_Size : constant Name_Id := N + 466; -- 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 + 464;
- Name_Adjacent : constant Name_Id := N + 464;
- Name_Ceiling : constant Name_Id := N + 465;
- Name_Copy_Sign : constant Name_Id := N + 466;
- Name_Floor : constant Name_Id := N + 467;
- Name_Fraction : constant Name_Id := N + 468;
- Name_Image : constant Name_Id := N + 469;
- Name_Input : constant Name_Id := N + 470;
- Name_Machine : constant Name_Id := N + 471;
- Name_Max : constant Name_Id := N + 472;
- Name_Min : constant Name_Id := N + 473;
- Name_Model : constant Name_Id := N + 474;
- Name_Pred : constant Name_Id := N + 475;
- Name_Remainder : constant Name_Id := N + 476;
- Name_Rounding : constant Name_Id := N + 477;
- Name_Succ : constant Name_Id := N + 478;
- Name_Truncation : constant Name_Id := N + 479;
- Name_Value : constant Name_Id := N + 480;
- Name_Wide_Image : constant Name_Id := N + 481;
- Name_Wide_Wide_Image : constant Name_Id := N + 482;
- Name_Wide_Value : constant Name_Id := N + 483;
- Name_Wide_Wide_Value : constant Name_Id := N + 484;
- Last_Renamable_Function_Attribute : constant Name_Id := N + 484;
+ First_Renamable_Function_Attribute : constant Name_Id := N + 467;
+ Name_Adjacent : constant Name_Id := N + 467;
+ Name_Ceiling : constant Name_Id := N + 468;
+ Name_Copy_Sign : constant Name_Id := N + 469;
+ Name_Floor : constant Name_Id := N + 470;
+ Name_Fraction : constant Name_Id := N + 471;
+ Name_Image : constant Name_Id := N + 472;
+ Name_Input : constant Name_Id := N + 473;
+ Name_Machine : constant Name_Id := N + 474;
+ Name_Max : constant Name_Id := N + 475;
+ Name_Min : constant Name_Id := N + 476;
+ Name_Model : constant Name_Id := N + 477;
+ Name_Pred : constant Name_Id := N + 478;
+ Name_Remainder : constant Name_Id := N + 479;
+ Name_Rounding : constant Name_Id := N + 480;
+ Name_Succ : constant Name_Id := N + 481;
+ Name_Truncation : constant Name_Id := N + 482;
+ Name_Value : constant Name_Id := N + 483;
+ Name_Wide_Image : constant Name_Id := N + 484;
+ Name_Wide_Wide_Image : constant Name_Id := N + 485;
+ Name_Wide_Value : constant Name_Id := N + 486;
+ Name_Wide_Wide_Value : constant Name_Id := N + 487;
+ Last_Renamable_Function_Attribute : constant Name_Id := N + 487;
-- Attributes that designate procedures
- First_Procedure_Attribute : constant Name_Id := N + 485;
- Name_Output : constant Name_Id := N + 485;
- Name_Read : constant Name_Id := N + 486;
- Name_Write : constant Name_Id := N + 487;
- Last_Procedure_Attribute : constant Name_Id := N + 487;
+ First_Procedure_Attribute : constant Name_Id := N + 488;
+ Name_Output : constant Name_Id := N + 488;
+ Name_Read : constant Name_Id := N + 489;
+ Name_Write : constant Name_Id := N + 490;
+ Last_Procedure_Attribute : constant Name_Id := N + 490;
-- Remaining attributes are ones that return entities
- First_Entity_Attribute_Name : constant Name_Id := N + 488;
- Name_Elab_Body : constant Name_Id := N + 488; -- GNAT
- Name_Elab_Spec : constant Name_Id := N + 489; -- GNAT
- Name_Storage_Pool : constant Name_Id := N + 490;
+ First_Entity_Attribute_Name : constant Name_Id := N + 491;
+ Name_Elab_Body : constant Name_Id := N + 491; -- GNAT
+ Name_Elab_Spec : constant Name_Id := N + 492; -- GNAT
+ Name_Storage_Pool : constant Name_Id := N + 493;
-- These attributes are the ones that return types
- First_Type_Attribute_Name : constant Name_Id := N + 491;
- Name_Base : constant Name_Id := N + 491;
- Name_Class : constant Name_Id := N + 492;
- Name_Stub_Type : constant Name_Id := N + 493;
- Last_Type_Attribute_Name : constant Name_Id := N + 493;
- Last_Entity_Attribute_Name : constant Name_Id := N + 493;
- Last_Attribute_Name : constant Name_Id := N + 493;
+ First_Type_Attribute_Name : constant Name_Id := N + 494;
+ Name_Base : constant Name_Id := N + 494;
+ Name_Class : constant Name_Id := N + 495;
+ Name_Stub_Type : constant Name_Id := N + 496;
+ Last_Type_Attribute_Name : constant Name_Id := N + 496;
+ Last_Entity_Attribute_Name : constant Name_Id := N + 496;
+ Last_Attribute_Name : constant Name_Id := N + 496;
-- Names of recognized locking policy identifiers
@@ -810,10 +816,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 + 494;
- Name_Ceiling_Locking : constant Name_Id := N + 494;
- Name_Inheritance_Locking : constant Name_Id := N + 495;
- Last_Locking_Policy_Name : constant Name_Id := N + 495;
+ First_Locking_Policy_Name : constant Name_Id := N + 497;
+ Name_Ceiling_Locking : constant Name_Id := N + 497;
+ Name_Inheritance_Locking : constant Name_Id := N + 498;
+ Last_Locking_Policy_Name : constant Name_Id := N + 498;
-- Names of recognized queuing policy identifiers
@@ -821,10 +827,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 + 496;
- Name_FIFO_Queuing : constant Name_Id := N + 496;
- Name_Priority_Queuing : constant Name_Id := N + 497;
- Last_Queuing_Policy_Name : constant Name_Id := N + 497;
+ First_Queuing_Policy_Name : constant Name_Id := N + 499;
+ Name_FIFO_Queuing : constant Name_Id := N + 499;
+ Name_Priority_Queuing : constant Name_Id := N + 500;
+ Last_Queuing_Policy_Name : constant Name_Id := N + 500;
-- Names of recognized task dispatching policy identifiers
@@ -832,249 +838,271 @@ 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 + 498;
- Name_EDF_Across_Priorities : constant Name_Id := N + 498;
- Name_FIFO_Within_Priorities : constant Name_Id := N + 499;
- Name_Non_Preemptive_Within_Priorities : constant Name_Id := N + 500;
- Name_Round_Robin_Within_Priorities : constant Name_Id := N + 501;
- Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 501;
+ First_Task_Dispatching_Policy_Name : constant Name_Id := N + 501;
+ Name_EDF_Across_Priorities : constant Name_Id := N + 501;
+ Name_FIFO_Within_Priorities : constant Name_Id := N + 502;
+ Name_Non_Preemptive_Within_Priorities : constant Name_Id := N + 503;
+ Name_Round_Robin_Within_Priorities : constant Name_Id := N + 504;
+ Last_Task_Dispatching_Policy_Name : constant Name_Id := N + 504;
-- Names of recognized checks for pragma Suppress
- First_Check_Name : constant Name_Id := N + 502;
- Name_Access_Check : constant Name_Id := N + 502;
- Name_Accessibility_Check : constant Name_Id := N + 503;
- Name_Alignment_Check : constant Name_Id := N + 504;
- Name_Discriminant_Check : constant Name_Id := N + 505;
- Name_Division_Check : constant Name_Id := N + 506;
- Name_Elaboration_Check : constant Name_Id := N + 507;
- Name_Index_Check : constant Name_Id := N + 508;
- Name_Length_Check : constant Name_Id := N + 509;
- Name_Overflow_Check : constant Name_Id := N + 510;
- Name_Range_Check : constant Name_Id := N + 511;
- Name_Storage_Check : constant Name_Id := N + 512;
- Name_Tag_Check : constant Name_Id := N + 513;
- Name_Validity_Check : constant Name_Id := N + 514;
- Name_All_Checks : constant Name_Id := N + 515;
- Last_Check_Name : constant Name_Id := N + 515;
+ First_Check_Name : constant Name_Id := N + 505;
+ Name_Access_Check : constant Name_Id := N + 505;
+ Name_Accessibility_Check : constant Name_Id := N + 506;
+ Name_Alignment_Check : constant Name_Id := N + 507;
+ Name_Discriminant_Check : constant Name_Id := N + 508;
+ Name_Division_Check : constant Name_Id := N + 509;
+ Name_Elaboration_Check : constant Name_Id := N + 510;
+ Name_Index_Check : constant Name_Id := N + 511;
+ Name_Length_Check : constant Name_Id := N + 512;
+ Name_Overflow_Check : constant Name_Id := N + 513;
+ Name_Range_Check : constant Name_Id := N + 514;
+ Name_Storage_Check : constant Name_Id := N + 515;
+ Name_Tag_Check : constant Name_Id := N + 516;
+ Name_Validity_Check : constant Name_Id := N + 517;
+ Name_All_Checks : constant Name_Id := N + 518;
+ Last_Check_Name : constant Name_Id := N + 518;
-- Names corresponding to reserved keywords, excluding those already
-- declared in the attribute list (Access, Delta, Digits, Mod, Range).
- Name_Abort : constant Name_Id := N + 516;
- Name_Abs : constant Name_Id := N + 517;
- Name_Accept : constant Name_Id := N + 518;
- Name_And : constant Name_Id := N + 519;
- Name_All : constant Name_Id := N + 520;
- Name_Array : constant Name_Id := N + 521;
- Name_At : constant Name_Id := N + 522;
- Name_Begin : constant Name_Id := N + 523;
- Name_Body : constant Name_Id := N + 524;
- Name_Case : constant Name_Id := N + 525;
- Name_Constant : constant Name_Id := N + 526;
- Name_Declare : constant Name_Id := N + 527;
- Name_Delay : constant Name_Id := N + 528;
- Name_Do : constant Name_Id := N + 529;
- Name_Else : constant Name_Id := N + 530;
- Name_Elsif : constant Name_Id := N + 531;
- Name_End : constant Name_Id := N + 532;
- Name_Entry : constant Name_Id := N + 533;
- Name_Exception : constant Name_Id := N + 534;
- Name_Exit : constant Name_Id := N + 535;
- Name_For : constant Name_Id := N + 536;
- Name_Function : constant Name_Id := N + 537;
- Name_Generic : constant Name_Id := N + 538;
- Name_Goto : constant Name_Id := N + 539;
- Name_If : constant Name_Id := N + 540;
- Name_In : constant Name_Id := N + 541;
- Name_Is : constant Name_Id := N + 542;
- Name_Limited : constant Name_Id := N + 543;
- Name_Loop : constant Name_Id := N + 544;
- Name_New : constant Name_Id := N + 545;
- Name_Not : constant Name_Id := N + 546;
- Name_Null : constant Name_Id := N + 547;
- Name_Of : constant Name_Id := N + 548;
- Name_Or : constant Name_Id := N + 549;
- Name_Others : constant Name_Id := N + 550;
- Name_Out : constant Name_Id := N + 551;
- Name_Package : constant Name_Id := N + 552;
- Name_Pragma : constant Name_Id := N + 553;
- Name_Private : constant Name_Id := N + 554;
- Name_Procedure : constant Name_Id := N + 555;
- Name_Raise : constant Name_Id := N + 556;
- Name_Record : constant Name_Id := N + 557;
- Name_Rem : constant Name_Id := N + 558;
- Name_Renames : constant Name_Id := N + 559;
- Name_Return : constant Name_Id := N + 560;
- Name_Reverse : constant Name_Id := N + 561;
- Name_Select : constant Name_Id := N + 562;
- Name_Separate : constant Name_Id := N + 563;
- Name_Subtype : constant Name_Id := N + 564;
- Name_Task : constant Name_Id := N + 565;
- Name_Terminate : constant Name_Id := N + 566;
- Name_Then : constant Name_Id := N + 567;
- Name_Type : constant Name_Id := N + 568;
- Name_Use : constant Name_Id := N + 569;
- Name_When : constant Name_Id := N + 570;
- Name_While : constant Name_Id := N + 571;
- Name_With : constant Name_Id := N + 572;
- Name_Xor : constant Name_Id := N + 573;
+ Name_Abort : constant Name_Id := N + 519;
+ Name_Abs : constant Name_Id := N + 520;
+ Name_Accept : constant Name_Id := N + 521;
+ Name_And : constant Name_Id := N + 522;
+ Name_All : constant Name_Id := N + 523;
+ Name_Array : constant Name_Id := N + 524;
+ Name_At : constant Name_Id := N + 525;
+ Name_Begin : constant Name_Id := N + 526;
+ Name_Body : constant Name_Id := N + 527;
+ Name_Case : constant Name_Id := N + 528;
+ Name_Constant : constant Name_Id := N + 529;
+ Name_Declare : constant Name_Id := N + 530;
+ Name_Delay : constant Name_Id := N + 531;
+ Name_Do : constant Name_Id := N + 532;
+ Name_Else : constant Name_Id := N + 533;
+ Name_Elsif : constant Name_Id := N + 534;
+ Name_End : constant Name_Id := N + 535;
+ Name_Entry : constant Name_Id := N + 536;
+ Name_Exception : constant Name_Id := N + 537;
+ Name_Exit : constant Name_Id := N + 538;
+ Name_For : constant Name_Id := N + 539;
+ Name_Function : constant Name_Id := N + 540;
+ Name_Generic : constant Name_Id := N + 541;
+ Name_Goto : constant Name_Id := N + 542;
+ Name_If : constant Name_Id := N + 543;
+ Name_In : constant Name_Id := N + 544;
+ Name_Is : constant Name_Id := N + 545;
+ Name_Limited : constant Name_Id := N + 546;
+ Name_Loop : constant Name_Id := N + 547;
+ Name_New : constant Name_Id := N + 548;
+ Name_Not : constant Name_Id := N + 549;
+ Name_Null : constant Name_Id := N + 550;
+ Name_Of : constant Name_Id := N + 551;
+ Name_Or : constant Name_Id := N + 552;
+ Name_Others : constant Name_Id := N + 553;
+ Name_Out : constant Name_Id := N + 554;
+ Name_Package : constant Name_Id := N + 555;
+ Name_Pragma : constant Name_Id := N + 556;
+ Name_Private : constant Name_Id := N + 557;
+ Name_Procedure : constant Name_Id := N + 558;
+ Name_Raise : constant Name_Id := N + 559;
+ Name_Record : constant Name_Id := N + 560;
+ Name_Rem : constant Name_Id := N + 561;
+ Name_Renames : constant Name_Id := N + 562;
+ Name_Return : constant Name_Id := N + 563;
+ Name_Reverse : constant Name_Id := N + 564;
+ Name_Select : constant Name_Id := N + 565;
+ Name_Separate : constant Name_Id := N + 566;
+ Name_Subtype : constant Name_Id := N + 567;
+ Name_Task : constant Name_Id := N + 568;
+ Name_Terminate : constant Name_Id := N + 569;
+ Name_Then : constant Name_Id := N + 570;
+ Name_Type : constant Name_Id := N + 571;
+ Name_Use : constant Name_Id := N + 572;
+ Name_When : constant Name_Id := N + 573;
+ Name_While : constant Name_Id := N + 574;
+ Name_With : constant Name_Id := N + 575;
+ Name_Xor : constant Name_Id := N + 576;
-- 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 + 574;
- Name_Divide : constant Name_Id := N + 574;
- Name_Enclosing_Entity : constant Name_Id := N + 575;
- Name_Exception_Information : constant Name_Id := N + 576;
- Name_Exception_Message : constant Name_Id := N + 577;
- Name_Exception_Name : constant Name_Id := N + 578;
- Name_File : constant Name_Id := N + 579;
- Name_Generic_Dispatching_Constructor : constant Name_Id := N + 580;
- Name_Import_Address : constant Name_Id := N + 581;
- Name_Import_Largest_Value : constant Name_Id := N + 582;
- Name_Import_Value : constant Name_Id := N + 583;
- Name_Is_Negative : constant Name_Id := N + 584;
- Name_Line : constant Name_Id := N + 585;
- Name_Rotate_Left : constant Name_Id := N + 586;
- Name_Rotate_Right : constant Name_Id := N + 587;
- Name_Shift_Left : constant Name_Id := N + 588;
- Name_Shift_Right : constant Name_Id := N + 589;
- Name_Shift_Right_Arithmetic : constant Name_Id := N + 590;
- Name_Source_Location : constant Name_Id := N + 591;
- Name_Unchecked_Conversion : constant Name_Id := N + 592;
- Name_Unchecked_Deallocation : constant Name_Id := N + 593;
- Name_To_Pointer : constant Name_Id := N + 594;
- Last_Intrinsic_Name : constant Name_Id := N + 594;
+ First_Intrinsic_Name : constant Name_Id := N + 577;
+ Name_Divide : constant Name_Id := N + 577;
+ Name_Enclosing_Entity : constant Name_Id := N + 578;
+ Name_Exception_Information : constant Name_Id := N + 579;
+ Name_Exception_Message : constant Name_Id := N + 580;
+ Name_Exception_Name : constant Name_Id := N + 581;
+ Name_File : constant Name_Id := N + 582;
+ Name_Generic_Dispatching_Constructor : constant Name_Id := N + 583;
+ Name_Import_Address : constant Name_Id := N + 584;
+ Name_Import_Largest_Value : constant Name_Id := N + 585;
+ Name_Import_Value : constant Name_Id := N + 586;
+ Name_Is_Negative : constant Name_Id := N + 587;
+ Name_Line : constant Name_Id := N + 588;
+ Name_Rotate_Left : constant Name_Id := N + 589;
+ Name_Rotate_Right : constant Name_Id := N + 590;
+ Name_Shift_Left : constant Name_Id := N + 591;
+ Name_Shift_Right : constant Name_Id := N + 592;
+ Name_Shift_Right_Arithmetic : constant Name_Id := N + 593;
+ Name_Source_Location : constant Name_Id := N + 594;
+ Name_Unchecked_Conversion : constant Name_Id := N + 595;
+ Name_Unchecked_Deallocation : constant Name_Id := N + 596;
+ Name_To_Pointer : constant Name_Id := N + 597;
+ Last_Intrinsic_Name : constant Name_Id := N + 597;
-- Names used in processing intrinsic calls
- Name_Free : constant Name_Id := N + 595;
+ Name_Free : constant Name_Id := N + 598;
-- Reserved words used only in Ada 95
- First_95_Reserved_Word : constant Name_Id := N + 596;
- Name_Abstract : constant Name_Id := N + 596;
- Name_Aliased : constant Name_Id := N + 597;
- Name_Protected : constant Name_Id := N + 598;
- Name_Until : constant Name_Id := N + 599;
- Name_Requeue : constant Name_Id := N + 600;
- Name_Tagged : constant Name_Id := N + 601;
- Last_95_Reserved_Word : constant Name_Id := N + 601;
+ First_95_Reserved_Word : constant Name_Id := N + 599;
+ Name_Abstract : constant Name_Id := N + 599;
+ Name_Aliased : constant Name_Id := N + 600;
+ Name_Protected : constant Name_Id := N + 601;
+ Name_Until : constant Name_Id := N + 602;
+ Name_Requeue : constant Name_Id := N + 603;
+ Name_Tagged : constant Name_Id := N + 604;
+ Last_95_Reserved_Word : constant Name_Id := N + 604;
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 + 602;
+ Name_Raise_Exception : constant Name_Id := N + 605;
-- 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 + 603;
- Name_Archive_Builder : constant Name_Id := N + 604;
- Name_Archive_Indexer : constant Name_Id := N + 605;
- Name_Binder : constant Name_Id := N + 606;
- Name_Binder_Driver : constant Name_Id := N + 607;
- Name_Body_Suffix : constant Name_Id := N + 608;
- Name_Builder : constant Name_Id := N + 609;
- Name_Compiler : constant Name_Id := N + 610;
- Name_Compiler_Driver : constant Name_Id := N + 611;
- Name_Compiler_Kind : constant Name_Id := N + 612;
- Name_Compiler_Pic_Option : constant Name_Id := N + 613;
- Name_Compute_Dependency : constant Name_Id := N + 614;
- Name_Config_Body_File_Name : constant Name_Id := N + 615;
- Name_Config_Body_File_Name_Pattern : constant Name_Id := N + 616;
- Name_Config_File_Switches : constant Name_Id := N + 617;
- Name_Config_File_Unique : constant Name_Id := N + 618;
- Name_Config_Spec_File_Name : constant Name_Id := N + 619;
- Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + 620;
- Name_Cross_Reference : constant Name_Id := N + 621;
- Name_Default_Builder_Switches : constant Name_Id := N + 622;
- Name_Default_Global_Compiler_Switches : constant Name_Id := N + 623;
- Name_Default_Language : constant Name_Id := N + 624;
- Name_Default_Linker : constant Name_Id := N + 625;
- Name_Default_Switches : constant Name_Id := N + 626;
- Name_Dependency_File_Kind : constant Name_Id := N + 627;
- Name_Dependency_Option : constant Name_Id := N + 628;
- Name_Exec_Dir : constant Name_Id := N + 629;
- Name_Executable : constant Name_Id := N + 630;
- Name_Executable_Suffix : constant Name_Id := N + 631;
- Name_Extends : constant Name_Id := N + 632;
- Name_Externally_Built : constant Name_Id := N + 633;
- Name_Finder : constant Name_Id := N + 634;
- Name_Global_Compiler_Switches : constant Name_Id := N + 635;
- Name_Global_Configuration_Pragmas : constant Name_Id := N + 636;
- Name_Gnatls : constant Name_Id := N + 637;
- Name_Gnatstub : constant Name_Id := N + 638;
- Name_Implementation : constant Name_Id := N + 639;
- Name_Implementation_Exceptions : constant Name_Id := N + 640;
- Name_Implementation_Suffix : constant Name_Id := N + 641;
- Name_Include_Option : constant Name_Id := N + 642;
- Name_Include_Path : constant Name_Id := N + 643;
- Name_Include_Path_File : constant Name_Id := N + 644;
- Name_Language_Kind : constant Name_Id := N + 645;
- Name_Language_Processing : constant Name_Id := N + 646;
- Name_Languages : constant Name_Id := N + 647;
- Name_Library_Ali_Dir : constant Name_Id := N + 648;
- Name_Library_Dir : constant Name_Id := N + 649;
- Name_Library_Auto_Init : constant Name_Id := N + 650;
- Name_Library_GCC : constant Name_Id := N + 651;
- Name_Library_Interface : constant Name_Id := N + 652;
- Name_Library_Kind : constant Name_Id := N + 653;
- Name_Library_Name : constant Name_Id := N + 654;
- Name_Library_Options : constant Name_Id := N + 655;
- Name_Library_Reference_Symbol_File : constant Name_Id := N + 656;
- Name_Library_Src_Dir : constant Name_Id := N + 657;
- Name_Library_Symbol_File : constant Name_Id := N + 658;
- Name_Library_Symbol_Policy : constant Name_Id := N + 659;
- Name_Library_Version : constant Name_Id := N + 660;
- Name_Linker : constant Name_Id := N + 661;
- Name_Linker_Executable_Option : constant Name_Id := N + 662;
- Name_Linker_Lib_Dir_Option : constant Name_Id := N + 663;
- Name_Linker_Lib_Name_Option : constant Name_Id := N + 664;
- Name_Local_Configuration_Pragmas : constant Name_Id := N + 665;
- Name_Locally_Removed_Files : constant Name_Id := N + 666;
- Name_Mapping_File_Switches : constant Name_Id := N + 667;
- Name_Metrics : constant Name_Id := N + 668;
- Name_Naming : constant Name_Id := N + 669;
- Name_Object_Dir : constant Name_Id := N + 670;
- Name_Pretty_Printer : constant Name_Id := N + 671;
- Name_Project : constant Name_Id := N + 672;
- Name_Roots : constant Name_Id := N + 673;
- Name_Runtime_Project : constant Name_Id := N + 674;
- Name_Separate_Suffix : constant Name_Id := N + 675;
- Name_Source_Dirs : constant Name_Id := N + 676;
- Name_Source_Files : constant Name_Id := N + 677;
- Name_Source_List_File : constant Name_Id := N + 678;
- Name_Spec : constant Name_Id := N + 679;
- Name_Spec_Suffix : constant Name_Id := N + 680;
- Name_Specification : constant Name_Id := N + 681;
- Name_Specification_Exceptions : constant Name_Id := N + 682;
- Name_Specification_Suffix : constant Name_Id := N + 683;
- Name_Switches : constant Name_Id := N + 684;
+ Name_Ada_Roots : constant Name_Id := N + 606;
+ Name_Archive_Builder : constant Name_Id := N + 607;
+ Name_Archive_Indexer : constant Name_Id := N + 608;
+ Name_Archive_Suffix : constant Name_Id := N + 609;
+ Name_Binder : constant Name_Id := N + 610;
+ Name_Binder_Driver : constant Name_Id := N + 611;
+ Name_Body_Suffix : constant Name_Id := N + 612;
+ Name_Builder : constant Name_Id := N + 613;
+ Name_Builder_Switches : constant Name_Id := N + 614;
+ Name_Compiler : constant Name_Id := N + 615;
+ Name_Compiler_Driver : constant Name_Id := N + 616;
+ Name_Compiler_Kind : constant Name_Id := N + 617;
+ Name_Compiler_Minimum_Options : constant Name_Id := N + 618;
+ Name_Compiler_Pic_Option : constant Name_Id := N + 619;
+ Name_Compute_Dependency : constant Name_Id := N + 620;
+ Name_Config_Body_File_Name : constant Name_Id := N + 621;
+ Name_Config_Body_File_Name_Pattern : constant Name_Id := N + 622;
+ Name_Config_File_Switches : constant Name_Id := N + 623;
+ Name_Config_File_Unique : constant Name_Id := N + 624;
+ Name_Config_Spec_File_Name : constant Name_Id := N + 625;
+ Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + 626;
+ Name_Cross_Reference : constant Name_Id := N + 627;
+ Name_Default_Builder_Switches : constant Name_Id := N + 628;
+ Name_Default_Global_Compiler_Switches : constant Name_Id := N + 629;
+ Name_Default_Language : constant Name_Id := N + 630;
+ Name_Default_Linker : constant Name_Id := N + 631;
+ Name_Default_Switches : constant Name_Id := N + 632;
+ Name_Dependency_File_Kind : constant Name_Id := N + 633;
+ Name_Dependency_Option : constant Name_Id := N + 634;
+ Name_Exec_Dir : constant Name_Id := N + 635;
+ Name_Executable : constant Name_Id := N + 636;
+ Name_Executable_Suffix : constant Name_Id := N + 637;
+ Name_Extends : constant Name_Id := N + 638;
+ Name_Externally_Built : constant Name_Id := N + 639;
+ Name_Finder : constant Name_Id := N + 640;
+ Name_Global_Compiler_Switches : constant Name_Id := N + 641;
+ Name_Global_Configuration_Pragmas : constant Name_Id := N + 642;
+ Name_Global_Config_File : constant Name_Id := N + 643;
+ Name_Gnatls : constant Name_Id := N + 644;
+ Name_Gnatstub : constant Name_Id := N + 645;
+ Name_Implementation : constant Name_Id := N + 646;
+ Name_Implementation_Exceptions : constant Name_Id := N + 647;
+ Name_Implementation_Suffix : constant Name_Id := N + 648;
+ Name_Include_Option : constant Name_Id := N + 649;
+ Name_Include_Path : constant Name_Id := N + 650;
+ Name_Include_Path_File : constant Name_Id := N + 651;
+ Name_Language_Kind : constant Name_Id := N + 652;
+ Name_Language_Processing : constant Name_Id := N + 653;
+ Name_Languages : constant Name_Id := N + 654;
+ Name_Library_Ali_Dir : constant Name_Id := N + 655;
+ Name_Library_Auto_Init : constant Name_Id := N + 656;
+ Name_Library_Auto_Init_Supported : constant Name_Id := N + 657;
+ Name_Library_Builder : constant Name_Id := N + 658;
+ Name_Library_Dir : constant Name_Id := N + 659;
+ Name_Library_GCC : constant Name_Id := N + 660;
+ Name_Library_Interface : constant Name_Id := N + 661;
+ Name_Library_Kind : constant Name_Id := N + 662;
+ Name_Library_Name : constant Name_Id := N + 663;
+ Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + 664;
+ Name_Library_Options : constant Name_Id := N + 665;
+ Name_Library_Reference_Symbol_File : constant Name_Id := N + 666;
+ Name_Library_Src_Dir : constant Name_Id := N + 667;
+ Name_Library_Support : constant Name_Id := N + 668;
+ Name_Library_Symbol_File : constant Name_Id := N + 669;
+ Name_Library_Symbol_Policy : constant Name_Id := N + 670;
+ Name_Library_Version : constant Name_Id := N + 671;
+ Name_Library_Version_Options : constant Name_Id := N + 672;
+ Name_Linker : constant Name_Id := N + 673;
+ Name_Linker_Executable_Option : constant Name_Id := N + 674;
+ Name_Linker_Lib_Dir_Option : constant Name_Id := N + 675;
+ Name_Linker_Lib_Name_Option : constant Name_Id := N + 676;
+ Name_Local_Config_File : constant Name_Id := N + 677;
+ Name_Local_Configuration_Pragmas : constant Name_Id := N + 678;
+ Name_Locally_Removed_Files : constant Name_Id := N + 679;
+ Name_Mapping_File_Switches : constant Name_Id := N + 680;
+ Name_Mapping_Spec_Suffix : constant Name_Id := N + 681;
+ Name_Mapping_Body_Suffix : constant Name_Id := N + 682;
+ Name_Metrics : constant Name_Id := N + 683;
+ Name_Minimum_Binder_Options : constant Name_Id := N + 684;
+ Name_Naming : constant Name_Id := N + 685;
+ Name_Objects_Path : constant Name_Id := N + 686;
+ Name_Objects_Path_File : constant Name_Id := N + 687;
+ Name_Object_Dir : constant Name_Id := N + 688;
+ Name_Pretty_Printer : constant Name_Id := N + 689;
+ Name_Project : constant Name_Id := N + 690;
+ Name_Roots : constant Name_Id := N + 691;
+ Name_Run_Path_Option : constant Name_Id := N + 692;
+ Name_Runtime_Project : constant Name_Id := N + 693;
+ Name_Shared_Library_Minimum_Options : constant Name_Id := N + 694;
+ Name_Shared_Library_Prefix : constant Name_Id := N + 695;
+ Name_Shared_Library_Suffix : constant Name_Id := N + 696;
+ Name_Separate_Suffix : constant Name_Id := N + 697;
+ Name_Source_Dirs : constant Name_Id := N + 698;
+ Name_Source_Files : constant Name_Id := N + 699;
+ Name_Source_List_File : constant Name_Id := N + 700;
+ Name_Spec : constant Name_Id := N + 701;
+ Name_Spec_Suffix : constant Name_Id := N + 702;
+ Name_Specification : constant Name_Id := N + 703;
+ Name_Specification_Exceptions : constant Name_Id := N + 704;
+ Name_Specification_Suffix : constant Name_Id := N + 705;
+ Name_Stack : constant Name_Id := N + 706;
+ Name_Switches : constant Name_Id := N + 707;
+ Name_Symbolic_Link_Supported : constant Name_Id := N + 708;
+ Name_Toolchain_Version : constant Name_Id := N + 709;
-- Other miscellaneous names used in front end
- Name_Unaligned_Valid : constant Name_Id := N + 685;
+ Name_Unaligned_Valid : constant Name_Id := N + 710;
-- Ada 2005 reserved words
- First_2005_Reserved_Word : constant Name_Id := N + 686;
- Name_Interface : constant Name_Id := N + 686;
- Name_Overriding : constant Name_Id := N + 687;
- Name_Synchronized : constant Name_Id := N + 688;
- Last_2005_Reserved_Word : constant Name_Id := N + 688;
+ First_2005_Reserved_Word : constant Name_Id := N + 711;
+ Name_Interface : constant Name_Id := N + 711;
+ Name_Overriding : constant Name_Id := N + 712;
+ Name_Synchronized : constant Name_Id := N + 713;
+ Last_2005_Reserved_Word : constant Name_Id := N + 713;
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 + 688;
+ Last_Predefined_Name : constant Name_Id := N + 713;
---------------------------------------
-- Subtypes Defining Name Categories --
@@ -1299,6 +1327,7 @@ package Snames is
Pragma_Ada_2005,
Pragma_Assertion_Policy,
Pragma_C_Pass_By_Copy,
+ Pragma_Compile_Time_Error,
Pragma_Compile_Time_Warning,
Pragma_Component_Alignment,
Pragma_Convention_Identifier,
@@ -1441,6 +1470,7 @@ package Snames is
Pragma_Unchecked_Union,
Pragma_Unimplemented_Unit,
Pragma_Unreferenced,
+ Pragma_Unreferenced_Objects,
Pragma_Unreserve_All_Interrupts,
Pragma_Volatile,
Pragma_Volatile_Components,
Index: snames.adb
===================================================================
--- snames.adb (revision 123291)
+++ snames.adb (working copy)
@@ -139,7 +139,7 @@ package body Snames is
"partition#" &
"partition_interface#" &
"ras#" &
- "call#" &
+ "_call#" &
"rci_name#" &
"receiver#" &
"result#" &
@@ -178,6 +178,7 @@ package body Snames is
"ada_2005#" &
"assertion_policy#" &
"c_pass_by_copy#" &
+ "compile_time_error#" &
"compile_time_warning#" &
"component_alignment#" &
"convention_identifier#" &
@@ -317,6 +318,7 @@ package body Snames is
"unchecked_union#" &
"unimplemented_unit#" &
"unreferenced#" &
+ "unreferenced_objects#" &
"unreserve_all_interrupts#" &
"volatile#" &
"volatile_components#" &
@@ -333,6 +335,7 @@ package body Snames is
"asm#" &
"assembly#" &
"default#" &
+ "c_plus_plus#" &
"dll#" &
"win32#" &
"as_is#" &
@@ -664,13 +667,16 @@ package body Snames is
"ada_roots#" &
"archive_builder#" &
"archive_indexer#" &
+ "archive_suffix#" &
"binder#" &
"binder_driver#" &
"body_suffix#" &
"builder#" &
+ "builder_switches#" &
"compiler#" &
"compiler_driver#" &
"compiler_kind#" &
+ "compiler_minimum_options#" &
"compiler_pic_option#" &
"compute_dependency#" &
"config_body_file_name#" &
@@ -695,6 +701,7 @@ package body Snames is
"finder#" &
"global_compiler_switches#" &
"global_configuration_pragmas#" &
+ "global_config_file#" &
"gnatls#" &
"gnatstub#" &
"implementation#" &
@@ -707,32 +714,47 @@ package body Snames is
"language_processing#" &
"languages#" &
"library_ali_dir#" &
- "library_dir#" &
"library_auto_init#" &
+ "library_auto_init_supported#" &
+ "library_builder#" &
+ "library_dir#" &
"library_gcc#" &
"library_interface#" &
"library_kind#" &
"library_name#" &
+ "library_major_minor_id_supported#" &
"library_options#" &
"library_reference_symbol_file#" &
"library_src_dir#" &
+ "library_support#" &
"library_symbol_file#" &
"library_symbol_policy#" &
"library_version#" &
+ "library_version_options#" &
"linker#" &
"linker_executable_option#" &
"linker_lib_dir_option#" &
"linker_lib_name_option#" &
+ "local_config_file#" &
"local_configuration_pragmas#" &
"locally_removed_files#" &
"mapping_file_switches#" &
+ "mapping_spec_suffix#" &
+ "mapping_body_suffix#" &
"metrics#" &
+ "minimum_binder_options#" &
"naming#" &
+ "objects_path#" &
+ "objects_path_file#" &
"object_dir#" &
"pretty_printer#" &
"project#" &
"roots#" &
+ "run_path_option#" &
"runtime_project#" &
+ "shared_library_minimum_options#" &
+ "shared_library_prefix#" &
+ "shared_library_suffix#" &
"separate_suffix#" &
"source_dirs#" &
"source_files#" &
@@ -742,7 +764,10 @@ package body Snames is
"specification#" &
"specification_exceptions#" &
"specification_suffix#" &
+ "stack#" &
"switches#" &
+ "symbolic_link_supported#" &
+ "toolchain_version#" &
"unaligned_valid#" &
"interface#" &
"overriding#" &
@@ -976,14 +1001,16 @@ package body Snames is
Convention_Identifiers.Init;
- Convention_Identifiers.Append ((Name_Asm, Convention_Assembler));
- Convention_Identifiers.Append ((Name_Assembly, Convention_Assembler));
+ Convention_Identifiers.Append ((Name_Asm, Convention_Assembler));
+ Convention_Identifiers.Append ((Name_Assembly, Convention_Assembler));
+
+ Convention_Identifiers.Append ((Name_Default, Convention_C));
+ Convention_Identifiers.Append ((Name_External, Convention_C));
- Convention_Identifiers.Append ((Name_Default, Convention_C));
- Convention_Identifiers.Append ((Name_External, Convention_C));
+ Convention_Identifiers.Append ((Name_C_Plus_Plus, Convention_CPP));
- Convention_Identifiers.Append ((Name_DLL, Convention_Stdcall));
- Convention_Identifiers.Append ((Name_Win32, Convention_Stdcall));
+ Convention_Identifiers.Append ((Name_DLL, Convention_Stdcall));
+ Convention_Identifiers.Append ((Name_Win32, Convention_Stdcall));
end Initialize;
-----------------------
Index: switch-c.adb
===================================================================
--- switch-c.adb (revision 123291)
+++ switch-c.adb (working copy)
@@ -24,8 +24,6 @@
-- --
------------------------------------------------------------------------------
-with GNAT.OS_Lib; use GNAT.OS_Lib;
-
with Debug; use Debug;
with Lib; use Lib;
with Osint; use Osint;
@@ -35,6 +33,8 @@ with Validsw; use Validsw;
with Sem_Warn; use Sem_Warn;
with Stylesw; use Stylesw;
+with GNAT.OS_Lib; use GNAT.OS_Lib;
+
with System.WCh_Con; use System.WCh_Con;
package body Switch.C is
@@ -47,24 +47,29 @@ package body Switch.C is
-----------------------------
procedure Scan_Front_End_Switches (Switch_Chars : String) is
- Switch_Starts_With_Gnat : Boolean;
- -- True if first four switch characters are "gnat"
-
First_Switch : Boolean := True;
-- False for all but first switch
- Ptr : Integer := Switch_Chars'First;
- Max : constant Integer := Switch_Chars'Last;
+ Max : constant Natural := Switch_Chars'Last;
+ Ptr : Natural;
C : Character := ' ';
Dot : Boolean;
- Store_Switch : Boolean := True;
- First_Char : Integer := Ptr;
- Storing : String := Switch_Chars;
- First_Stored : Positive := Ptr + 1;
- -- The above need comments ???
+ Store_Switch : Boolean;
+ -- For -gnatxx switches, the normal processing, signalled by this flag
+ -- being set to True, is to store the switch on exit from the case
+ -- statement, the switch stored is -gnat followed by the characters
+ -- from First_Char to Ptr-1. For cases like -gnaty, where the switch
+ -- is stored in separate pieces, this flag is set to False, and the
+ -- appropriate calls to Store_Compilation_Switch are made from within
+ -- the case branch.
+
+ First_Char : Positive;
+ -- Marks start of switch to be stored
begin
+ Ptr := Switch_Chars'First;
+
-- Skip past the initial character (must be the switch character)
if Ptr = Max then
@@ -73,123 +78,120 @@ package body Switch.C is
Ptr := Ptr + 1;
end if;
- -- Remove "gnat" from the switch, if present
+ -- Handle switches that do not start with -gnat
- Switch_Starts_With_Gnat :=
- Ptr + 3 <= Max and then Switch_Chars (Ptr .. Ptr + 3) = "gnat";
+ if Ptr + 3 > Max
+ or else Switch_Chars (Ptr .. Ptr + 3) /= "gnat"
+ then
+ -- There are two front-end switches that do not start with -gnat:
+ -- -I, --RTS
- if Switch_Starts_With_Gnat then
- Ptr := Ptr + 4;
- First_Stored := Ptr;
- end if;
+ if Switch_Chars (Ptr) = 'I' then
- -- Loop to scan through switches given in switch string
+ -- Set flag Search_Directory_Present if switch is "-I" only:
+ -- the directory will be the next argument.
- while Ptr <= Max loop
- Store_Switch := True;
- First_Char := Ptr;
- C := Switch_Chars (Ptr);
+ if Ptr = Max then
+ Search_Directory_Present := True;
+ return;
+ end if;
- -- Processing for a switch
+ Ptr := Ptr + 1;
- case Switch_Starts_With_Gnat is
+ -- Find out whether this is a -I- or regular -Ixxx switch
- when False =>
+ -- Note: -I switches are not recorded in the ALI file, since the
+ -- meaning of the program depends on the source files compiled,
+ -- not where they came from.
+
+ if Ptr = Max and then Switch_Chars (Ptr) = '-' then
+ Look_In_Primary_Dir := False;
+ else
+ Add_Src_Search_Dir (Switch_Chars (Ptr .. Max));
+ end if;
+
+ -- Processing of the --RTS switch. --RTS has been modified by
+ -- gcc and is now of the form -fRTS.
+
+ elsif Ptr + 3 <= Max
+ and then Switch_Chars (Ptr .. Ptr + 3) = "fRTS"
+ then
+ Ptr := Ptr + 1;
+
+ if Ptr + 4 > Max
+ or else Switch_Chars (Ptr + 3) /= '='
+ then
+ Osint.Fail ("missing path for --RTS");
+ else
+ -- Check that this is the first time --RTS is specified or if
+ -- it is not the first time, the same path has been specified.
+
+ if RTS_Specified = null then
+ RTS_Specified :=
+ new String'(Switch_Chars (Ptr + 4 .. Max));
- -- There are few front-end switches that
- -- do not start with -gnat: -I, --RTS
+ elsif
+ RTS_Specified.all /= Switch_Chars (Ptr + 4 .. Max)
+ then
+ Osint.Fail
+ ("--RTS cannot be specified multiple times");
+ end if;
- if Switch_Chars (Ptr) = 'I' then
- Store_Switch := False;
+ -- Valid --RTS switch
- -- Set flag Search_Directory_Present if switch is "-I" only:
- -- the directory will be the next argument.
+ Opt.No_Stdinc := True;
+ Opt.RTS_Switch := True;
- if Ptr = Max then
- Search_Directory_Present := True;
- return;
- end if;
+ RTS_Src_Path_Name :=
+ Get_RTS_Search_Dir
+ (Switch_Chars (Ptr + 4 .. Max), Include);
- Ptr := Ptr + 1;
+ RTS_Lib_Path_Name :=
+ Get_RTS_Search_Dir
+ (Switch_Chars (Ptr + 4 .. Max), Objects);
- -- Find out whether this is a -I- or regular -Ixxx switch
+ if RTS_Src_Path_Name /= null
+ and then RTS_Lib_Path_Name /= null
+ then
+ -- Store the -fRTS switch (Note: Store_Compilation_Switch
+ -- changes -fRTS back into --RTS for the actual output).
- if Ptr = Max and then Switch_Chars (Ptr) = '-' then
- Look_In_Primary_Dir := False;
+ Store_Compilation_Switch (Switch_Chars);
- else
- Add_Src_Search_Dir (Switch_Chars (Ptr .. Max));
- end if;
+ elsif RTS_Src_Path_Name = null
+ and then RTS_Lib_Path_Name = null
+ then
+ Osint.Fail ("RTS path not valid: missing " &
+ "adainclude and adalib directories");
- Ptr := Max + 1;
+ elsif RTS_Src_Path_Name = null then
+ Osint.Fail ("RTS path not valid: missing " &
+ "adainclude directory");
- -- Processing of the --RTS switch. --RTS has been modified by
- -- gcc and is now of the form -fRTS
+ elsif RTS_Lib_Path_Name = null then
+ Osint.Fail ("RTS path not valid: missing " &
+ "adalib directory");
+ end if;
+ end if;
- elsif Ptr + 3 <= Max
- and then Switch_Chars (Ptr .. Ptr + 3) = "fRTS"
- then
- Ptr := Ptr + 1;
+ -- There are no other switches not starting with -gnat
- if Ptr + 4 > Max
- or else Switch_Chars (Ptr + 3) /= '='
- then
- Osint.Fail ("missing path for --RTS");
- else
- -- Check that this is the first time --RTS is specified
- -- or if it is not the first time, the same path has
- -- been specified.
-
- if RTS_Specified = null then
- RTS_Specified :=
- new String'(Switch_Chars (Ptr + 4 .. Max));
-
- elsif
- RTS_Specified.all /= Switch_Chars (Ptr + 4 .. Max)
- then
- Osint.Fail
- ("--RTS cannot be specified multiple times");
- end if;
+ else
+ Bad_Switch (C);
+ end if;
- -- Valid --RTS switch
+ -- Case of switch starting with -gnat
- Opt.No_Stdinc := True;
- Opt.RTS_Switch := True;
+ else
+ Ptr := Ptr + 4;
- RTS_Src_Path_Name := Get_RTS_Search_Dir
- (Switch_Chars (Ptr + 4 .. Max),
- Include);
- RTS_Lib_Path_Name := Get_RTS_Search_Dir
- (Switch_Chars (Ptr + 4 .. Max),
- Objects);
-
- if RTS_Src_Path_Name /= null and then
- RTS_Lib_Path_Name /= null
- then
- Ptr := Max + 1;
-
- elsif RTS_Src_Path_Name = null and then
- RTS_Lib_Path_Name = null
- then
- Osint.Fail ("RTS path not valid: missing " &
- "adainclude and adalib directories");
-
- elsif RTS_Src_Path_Name = null then
- Osint.Fail ("RTS path not valid: missing " &
- "adainclude directory");
-
- elsif RTS_Lib_Path_Name = null then
- Osint.Fail ("RTS path not valid: missing " &
- "adalib directory");
- end if;
- end if;
- else
- Bad_Switch (C);
- end if;
+ -- Loop to scan through switches given in switch string
- when True =>
+ while Ptr <= Max loop
+ First_Char := Ptr;
+ Store_Switch := True;
- -- Process -gnat* options
+ C := Switch_Chars (Ptr);
case C is
@@ -229,7 +231,6 @@ package body Switch.C is
when 'd' =>
Store_Switch := False;
- Storing (First_Stored) := 'd';
Dot := False;
-- Note: for the debug switch, the remaining characters in this
@@ -249,17 +250,10 @@ package body Switch.C is
then
if Dot then
Set_Dotted_Debug_Flag (C);
- Storing (First_Stored + 1) := '.';
- Storing (First_Stored + 2) := C;
- Store_Compilation_Switch
- (Storing (Storing'First .. First_Stored + 2));
- Dot := False;
-
+ Store_Compilation_Switch ("-gnatd." & C);
else
Set_Debug_Flag (C);
- Storing (First_Stored + 1) := C;
- Store_Compilation_Switch
- (Storing (Storing'First .. First_Stored + 1));
+ Store_Compilation_Switch ("-gnatd" & C);
end if;
elsif C = '.' then
@@ -349,7 +343,7 @@ package body Switch.C is
return;
- -- -gnateD switch (symbol definition)
+ -- -gnateD switch (preprocessing symbol definition)
when 'D' =>
Store_Switch := False;
@@ -363,13 +357,9 @@ package body Switch.C is
-- Store the switch
- Storing (First_Stored .. First_Stored + 1) := "eD";
- Storing
- (First_Stored + 2 .. First_Stored + Max - Ptr + 2) :=
- Switch_Chars (Ptr .. Max);
- Store_Compilation_Switch (Storing
- (Storing'First .. First_Stored + Max - Ptr + 2));
- return;
+ Store_Compilation_Switch
+ ("-gnateD" & Switch_Chars (Ptr .. Max));
+ Ptr := Max + 1;
-- -gnatef (full source path for brief error messages)
@@ -383,8 +373,7 @@ package body Switch.C is
when 'I' =>
Ptr := Ptr + 1;
- Scan_Pos
- (Switch_Chars, Max, Ptr, Multiple_Unit_Index, C);
+ Scan_Pos (Switch_Chars, Max, Ptr, Multiple_Unit_Index, C);
-- -gnatem (mapping file)
@@ -427,22 +416,12 @@ package body Switch.C is
Preprocessing_Data_File :=
new String'(Switch_Chars (Ptr .. Max));
- -- Store the switch.
- -- Because we may store a longer switch (we normalize
- -- to -gnatep=), use a local variable.
-
- declare
- To_Store : String
- (1 .. Preprocessing_Data_File'Length + 8);
+ -- Store the switch, normalizing to -gnatep=
- begin
- To_Store (1 .. 8) := "-gnatep=";
- To_Store (9 .. Preprocessing_Data_File'Length + 8) :=
- Preprocessing_Data_File.all;
- Store_Compilation_Switch (To_Store);
- end;
+ Store_Compilation_Switch
+ ("-gnatep=" & Preprocessing_Data_File.all);
- return;
+ Ptr := Max + 1;
when 'z' =>
Store_Switch := False;
@@ -509,7 +488,7 @@ package body Switch.C is
Warn_On_Unchecked_Conversion := True;
Warn_On_Unrecognized_Pragma := True;
- Set_Style_Check_Options ("3abcdefhiklmnprstux");
+ Set_Style_Check_Options ("3aAbcdefhiklmnprstux");
-- Processing for G switch
@@ -680,10 +659,10 @@ package body Switch.C is
-- Processing for R switch
when 'R' =>
- Ptr := Ptr + 1;
Back_Annotate_Rep_Info := True;
List_Representation_Info := 1;
+ Ptr := Ptr + 1;
while Ptr <= Max loop
C := Switch_Chars (Ptr);
@@ -761,7 +740,6 @@ package body Switch.C is
when 'V' =>
Store_Switch := False;
- Storing (First_Stored) := 'V';
Ptr := Ptr + 1;
if Ptr > Max then
@@ -780,10 +758,8 @@ package body Switch.C is
end if;
for Index in First_Char + 1 .. Max loop
- Storing (First_Stored + 1) :=
- Switch_Chars (Index);
Store_Compilation_Switch
- (Storing (Storing'First .. First_Stored + 1));
+ ("-gnatV" & Switch_Chars (Index));
end loop;
end;
end if;
@@ -794,7 +770,6 @@ package body Switch.C is
when 'w' =>
Store_Switch := False;
- Storing (First_Stored) := 'w';
Ptr := Ptr + 1;
if Ptr > Max then
@@ -804,16 +779,26 @@ package body Switch.C is
while Ptr <= Max loop
C := Switch_Chars (Ptr);
- if Set_Warning_Switch (C) then
- null;
- else
- Bad_Switch (C);
- end if;
+ -- Case of dot switch
- if C /= 'w' then
- Storing (First_Stored + 1) := C;
- Store_Compilation_Switch
- (Storing (Storing'First .. First_Stored + 1));
+ if C = '.' and then Ptr < Max then
+ Ptr := Ptr + 1;
+ C := Switch_Chars (Ptr);
+
+ if Set_Dot_Warning_Switch (C) then
+ Store_Compilation_Switch ("-gnatw." & C);
+ else
+ Bad_Switch (C);
+ end if;
+
+ -- Normal case, no dot
+
+ else
+ if Set_Warning_Switch (C) then
+ Store_Compilation_Switch ("-gnatw" & C);
+ else
+ Bad_Switch (C);
+ end if;
end if;
Ptr := Ptr + 1;
@@ -855,8 +840,6 @@ package body Switch.C is
when 'X' =>
Ptr := Ptr + 1;
Extensions_Allowed := True;
- Ada_Version := Ada_Version_Type'Last;
- Ada_Version_Explicit := Ada_Version;
-- Processing for y switch
@@ -868,11 +851,9 @@ package body Switch.C is
else
Store_Switch := False;
- Storing (First_Stored) := 'y';
declare
OK : Boolean;
- Last_Stored : Integer;
begin
Set_Style_Check_Options
@@ -886,24 +867,22 @@ package body Switch.C is
Ptr := First_Char + 1;
while Ptr <= Max loop
- Last_Stored := First_Stored + 1;
- Storing (Last_Stored) := Switch_Chars (Ptr);
-
if Switch_Chars (Ptr) = 'M' then
+ First_Char := Ptr;
loop
Ptr := Ptr + 1;
exit when Ptr > Max
or else Switch_Chars (Ptr) not in '0' .. '9';
- Last_Stored := Last_Stored + 1;
- Storing (Last_Stored) := Switch_Chars (Ptr);
end loop;
+ Store_Compilation_Switch
+ ("-gnaty" & Switch_Chars (First_Char .. Ptr - 1));
+
else
+ Store_Compilation_Switch
+ ("-gnaty" & Switch_Chars (Ptr));
Ptr := Ptr + 1;
end if;
-
- Store_Compilation_Switch
- (Storing (Storing'First .. Last_Stored));
end loop;
end;
end if;
@@ -929,7 +908,6 @@ package body Switch.C is
end case;
Ptr := Ptr + 1;
-
end if;
-- Processing for Z switch
@@ -1000,17 +978,15 @@ package body Switch.C is
when others =>
Bad_Switch (C);
end case;
- end case;
- if Store_Switch then
- Storing (First_Stored .. First_Stored + Ptr - First_Char - 1) :=
- Switch_Chars (First_Char .. Ptr - 1);
- Store_Compilation_Switch
- (Storing (Storing'First .. First_Stored + Ptr - First_Char - 1));
- end if;
+ if Store_Switch then
+ Store_Compilation_Switch
+ ("-gnat" & Switch_Chars (First_Char .. Ptr - 1));
+ end if;
- First_Switch := False;
- end loop;
+ First_Switch := False;
+ end loop;
+ end if;
end Scan_Front_End_Switches;
end Switch.C;
Index: sem_warn.ads
===================================================================
--- sem_warn.ads (revision 123291)
+++ sem_warn.ads (working copy)
@@ -37,9 +37,16 @@ package Sem_Warn is
--------------------
function Set_Warning_Switch (C : Character) return Boolean;
- -- This function sets the warning switch or switches corresponding to
- -- the given character. It is used for processing a -gnatw switch on the
- -- command line, or a string literal in pragma Warnings.
+ -- This function sets the warning switch or switches corresponding to the
+ -- given character. It is used to process a -gnatw switch on the command
+ -- line, or a character in a string literal in pragma Warnings. Returns
+ -- True for valid warning character C, False for invalid character.
+
+ function Set_Dot_Warning_Switch (C : Character) return Boolean;
+ -- This function sets the warning switch or switches corresponding to the
+ -- given character preceded by a dot. Used to process a -gnatw. switch on
+ -- the command line or .C in a string literal in pragma Warnings. Returns
+ -- True for valid warning character C, False for invalid character.
------------------------------------------
-- Routines to Handle Unused References --
Index: sem_warn.adb
===================================================================
--- sem_warn.adb (revision 123291)
+++ sem_warn.adb (working copy)
@@ -392,6 +392,7 @@ package body Sem_Warn is
-- or if it is a parameter, to the corresponding spec.
if Has_Pragma_Unreferenced (E1)
+ or else Has_Pragma_Unreferenced_Objects (Etype (E1))
or else (Is_Formal (E1)
and then Present (Spec_Entity (E1))
and then
@@ -1641,6 +1642,7 @@ package body Sem_Warn is
then
if Warn_On_Modified_Unread
and then not Is_Imported (E)
+ and then not Is_Return_Object (E)
-- Suppress message for aliased or renamed variables,
-- since there may be other entities that read the
@@ -1658,20 +1660,12 @@ package body Sem_Warn is
-- Normal case of neither assigned nor read
else
- -- We suppress the message for limited controlled types,
- -- to catch the common design pattern (known as RAII, or
- -- Resource Acquisition Is Initialization) which uses
- -- such types solely for their initialization and
- -- finalization semantics.
+ -- We suppress the message for types for which a valid
+ -- pragma Unreferenced_Objects has been given, otherwise
+ -- we go ahead and give the message.
- if Is_Controlled (Etype (E))
- and then Is_Limited_Type (Etype (E))
- then
- null;
-
- -- Normal case where we want to give message
+ if not Has_Pragma_Unreferenced_Objects (Etype (E)) then
- else
-- Distinguish renamed case in message
if Present (Renamed_Object (E))
@@ -1740,6 +1734,26 @@ package body Sem_Warn is
end loop;
end Output_Unreferenced_Messages;
+ ----------------------------
+ -- Set_Dot_Warning_Switch --
+ ----------------------------
+
+ function Set_Dot_Warning_Switch (C : Character) return Boolean is
+ begin
+ case C is
+ when 'x' =>
+ Warn_On_Non_Local_Exception := True;
+
+ when 'X' =>
+ Warn_On_Non_Local_Exception := False;
+
+ when others =>
+ return False;
+ end case;
+
+ return True;
+ end Set_Dot_Warning_Switch;
+
------------------------
-- Set_Warning_Switch --
------------------------
@@ -1761,6 +1775,7 @@ package body Sem_Warn is
Warn_On_Export_Import := True;
Warn_On_Modified_Unread := True;
Warn_On_No_Value_Assigned := True;
+ Warn_On_Non_Local_Exception := True;
Warn_On_Obsolescent_Feature := True;
Warn_On_Questionable_Missing_Parens := True;
Warn_On_Redundant_Constructs := True;
@@ -1784,8 +1799,9 @@ package body Sem_Warn is
Warn_On_Hiding := False;
Warn_On_Modified_Unread := False;
Warn_On_No_Value_Assigned := False;
+ Warn_On_Non_Local_Exception := False;
Warn_On_Obsolescent_Feature := False;
- Warn_On_Questionable_Missing_Parens := True;
+ Warn_On_Questionable_Missing_Parens := False;
Warn_On_Redundant_Constructs := False;
Warn_On_Unchecked_Conversion := False;
Warn_On_Unrecognized_Pragma := False;
@@ -2409,11 +2425,12 @@ package body Sem_Warn is
-- Start of processing for Warn_On_Useless_Assignment
begin
- -- Check if this is a case we want to warn on, a variable with
- -- the last assignment field set, with warnings enabled, and
- -- which is not imported or exported.
+ -- Check if this is a case we want to warn on, a variable with the
+ -- last assignment field set, with warnings enabled, and which is
+ -- not imported or exported.
if Ekind (Ent) = E_Variable
+ and then not Is_Return_Object (Ent)
and then Present (Last_Assignment (Ent))
and then not Warnings_Off (Ent)
and then not Has_Pragma_Unreferenced (Ent)
More information about the Gcc-patches
mailing list