This is an internal change to create two new Boolean Name_Table
info fields. No external effect, no test.
Tested on x86_64-pc-linux-gnu, committed on trunk
2015-01-06 Robert Dewar <[email protected]>
* exp_util.adb: Change name Name_Table_Boolean to
Name_Table_Boolean1.
* namet.adb: Change name Name_Table_Boolean to Name_Table_Boolean1
Introduce Name_Table_Boolean2/3.
* namet.ads: Change name Name_Table_Boolean to Name_Table_Boolean1
Introduce Name_Table_Boolean2/3.
* par-ch13.adb: Change name Name_Table_Boolean to
Name_Table_Boolean1.
Index: exp_util.adb
===================================================================
--- exp_util.adb (revision 219222)
+++ exp_util.adb (working copy)
@@ -2963,7 +2963,7 @@
-- If parser detected no address clause for the identifier in question,
-- then the answer is a quick NO, without the need for a search.
- if not Get_Name_Table_Boolean (Chars (Id)) then
+ if not Get_Name_Table_Boolean1 (Chars (Id)) then
return Empty;
end if;
Index: par-ch13.adb
===================================================================
--- par-ch13.adb (revision 219191)
+++ par-ch13.adb (working copy)
@@ -741,7 +741,7 @@
if Attr_Name = Name_Address
and then Nkind (Prefix_Node) = N_Identifier
then
- Set_Name_Table_Boolean (Chars (Prefix_Node), True);
+ Set_Name_Table_Boolean1 (Chars (Prefix_Node), True);
end if;
end loop;
@@ -771,7 +771,7 @@
-- Mark occurrence of address clause (used to optimize performance
-- of Exp_Util.Following_Address_Clause).
- Set_Name_Table_Boolean (Chars (Identifier_Node), True);
+ Set_Name_Table_Boolean1 (Chars (Identifier_Node), True);
-- RECORD follows USE (Record Representation Clause)
Index: namet.adb
===================================================================
--- namet.adb (revision 219230)
+++ namet.adb (working copy)
@@ -705,16 +705,36 @@
end loop;
end Get_Name_String_And_Append;
- ----------------------------
- -- Get_Name_Table_Boolean --
- ----------------------------
+ -----------------------------
+ -- Get_Name_Table_Boolean1 --
+ -----------------------------
- function Get_Name_Table_Boolean (Id : Name_Id) return Boolean is
+ function Get_Name_Table_Boolean1 (Id : Name_Id) return Boolean is
begin
pragma Assert (Id in Name_Entries.First .. Name_Entries.Last);
- return Name_Entries.Table (Id).Boolean_Info;
- end Get_Name_Table_Boolean;
+ return Name_Entries.Table (Id).Boolean1_Info;
+ end Get_Name_Table_Boolean1;
+ -----------------------------
+ -- Get_Name_Table_Boolean2 --
+ -----------------------------
+
+ function Get_Name_Table_Boolean2 (Id : Name_Id) return Boolean is
+ begin
+ pragma Assert (Id in Name_Entries.First .. Name_Entries.Last);
+ return Name_Entries.Table (Id).Boolean2_Info;
+ end Get_Name_Table_Boolean2;
+
+ -----------------------------
+ -- Get_Name_Table_Boolean3 --
+ -----------------------------
+
+ function Get_Name_Table_Boolean3 (Id : Name_Id) return Boolean is
+ begin
+ pragma Assert (Id in Name_Entries.First .. Name_Entries.Last);
+ return Name_Entries.Table (Id).Boolean3_Info;
+ end Get_Name_Table_Boolean3;
+
-------------------------
-- Get_Name_Table_Byte --
-------------------------
@@ -933,7 +953,9 @@
Name_Len => Short (Name_Len),
Byte_Info => 0,
Int_Info => 0,
- Boolean_Info => False,
+ Boolean1_Info => False,
+ Boolean2_Info => False,
+ Boolean3_Info => False,
Name_Has_No_Encodings => False,
Hash_Link => No_Name));
@@ -1037,7 +1059,9 @@
Name_Has_No_Encodings => False,
Int_Info => 0,
Byte_Info => 0,
- Boolean_Info => False));
+ Boolean1_Info => False,
+ Boolean2_Info => False,
+ Boolean3_Info => False));
-- Set corresponding string entry in the Name_Chars table
@@ -1262,7 +1286,9 @@
Name_Len => 1,
Byte_Info => 0,
Int_Info => 0,
- Boolean_Info => False,
+ Boolean1_Info => False,
+ Boolean2_Info => False,
+ Boolean3_Info => False,
Name_Has_No_Encodings => True,
Hash_Link => No_Name));
@@ -1300,16 +1326,36 @@
Store_Encoded_Character (C);
end Set_Character_Literal_Name;
- ----------------------------
- -- Set_Name_Table_Boolean --
- ----------------------------
+ -----------------------------
+ -- Set_Name_Table_Boolean1 --
+ -----------------------------
- procedure Set_Name_Table_Boolean (Id : Name_Id; Val : Boolean) is
+ procedure Set_Name_Table_Boolean1 (Id : Name_Id; Val : Boolean) is
begin
pragma Assert (Id in Name_Entries.First .. Name_Entries.Last);
- Name_Entries.Table (Id).Boolean_Info := Val;
- end Set_Name_Table_Boolean;
+ Name_Entries.Table (Id).Boolean1_Info := Val;
+ end Set_Name_Table_Boolean1;
+ -----------------------------
+ -- Set_Name_Table_Boolean2 --
+ -----------------------------
+
+ procedure Set_Name_Table_Boolean2 (Id : Name_Id; Val : Boolean) is
+ begin
+ pragma Assert (Id in Name_Entries.First .. Name_Entries.Last);
+ Name_Entries.Table (Id).Boolean2_Info := Val;
+ end Set_Name_Table_Boolean2;
+
+ -----------------------------
+ -- Set_Name_Table_Boolean3 --
+ -----------------------------
+
+ procedure Set_Name_Table_Boolean3 (Id : Name_Id; Val : Boolean) is
+ begin
+ pragma Assert (Id in Name_Entries.First .. Name_Entries.Last);
+ Name_Entries.Table (Id).Boolean3_Info := Val;
+ end Set_Name_Table_Boolean3;
+
-------------------------
-- Set_Name_Table_Byte --
-------------------------
Index: namet.ads
===================================================================
--- namet.ads (revision 219230)
+++ namet.ads (working copy)
@@ -115,7 +115,7 @@
-- character lower case letters in the range a-z, and these names are created
-- and initialized by the Initialize procedure.
--- Three values, one of type Int, one of type Byte, and one of type Boolean,
+-- Five values, one of type Int, one of type Byte, and three of type Boolean,
-- are stored with each names table entry and subprograms are provided for
-- setting and retrieving these associated values. The usage of these values
-- is up to the client:
@@ -128,9 +128,11 @@
-- The Byte field is used to hold the Token_Type value for reserved words
-- (see Sem for details).
--- The Boolean field is used to mark address clauses to optimize the
+-- The Boolean1 field is used to mark address clauses to optimize the
-- performance of the Exp_Util.Following_Address_Clause function.
+-- The Boolean2/Boolean3 fields are not used
+
-- In the binder, we have the following uses:
-- The Int field is used in various ways depending on the name involved,
@@ -367,8 +369,10 @@
pragma Inline (Get_Name_Table_Int);
-- Fetches the Int value associated with the given name
- function Get_Name_Table_Boolean (Id : Name_Id) return Boolean;
- -- Fetches the Boolean value associated with the given name
+ function Get_Name_Table_Boolean1 (Id : Name_Id) return Boolean;
+ function Get_Name_Table_Boolean2 (Id : Name_Id) return Boolean;
+ function Get_Name_Table_Boolean3 (Id : Name_Id) return Boolean;
+ -- Fetches the Boolean values associated with the given name
function Is_Operator_Name (Id : Name_Id) return Boolean;
-- Returns True if name given is of the form of an operator (that
@@ -504,7 +508,9 @@
pragma Inline (Set_Name_Table_Byte);
-- Sets the Byte value associated with the given name
- procedure Set_Name_Table_Boolean (Id : Name_Id; Val : Boolean);
+ procedure Set_Name_Table_Boolean1 (Id : Name_Id; Val : Boolean);
+ procedure Set_Name_Table_Boolean2 (Id : Name_Id; Val : Boolean);
+ procedure Set_Name_Table_Boolean3 (Id : Name_Id; Val : Boolean);
-- Sets the Boolean value associated with the given name
procedure Store_Encoded_Character (C : Char_Code);
@@ -644,8 +650,10 @@
Byte_Info : Byte;
-- Byte value associated with this name
- Boolean_Info : Boolean;
- -- Boolean value associated with the name
+ Boolean1_Info : Boolean;
+ Boolean2_Info : Boolean;
+ Boolean3_Info : Boolean;
+ -- Boolean values associated with the name
Name_Has_No_Encodings : Boolean;
-- This flag is set True if the name entry is known not to contain any
@@ -665,8 +673,10 @@
Name_Chars_Index at 0 range 0 .. 31;
Name_Len at 4 range 0 .. 15;
Byte_Info at 6 range 0 .. 7;
- Boolean_Info at 7 range 0 .. 0;
- Name_Has_No_Encodings at 7 range 1 .. 7;
+ Boolean1_Info at 7 range 0 .. 0;
+ Boolean2_Info at 7 range 1 .. 1;
+ Boolean3_Info at 7 range 2 .. 2;
+ Name_Has_No_Encodings at 7 range 3 .. 7;
Hash_Link at 8 range 0 .. 31;
Int_Info at 12 range 0 .. 31;
end record;