Skip to content

Commit adeb7fc

Browse files
committed
Address review comments
will be squashed.
1 parent 7f74d4c commit adeb7fc

File tree

3 files changed

+48
-49
lines changed

3 files changed

+48
-49
lines changed

gnat2goto/driver/goto_utils.adb

+29-30
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
with Sem_Util; use Sem_Util;
21
with Namet; use Namet;
32
with Nlists; use Nlists;
43
with Aspects; use Aspects;
@@ -134,6 +133,7 @@ package body GOTO_Utils is
134133
Object_Symbol.SymType := Object_Type;
135134
Object_Symbol.Mode := Intern ("C");
136135
Object_Symbol.Value := Object_Init_Value;
136+
Object_Symbol.IsLValue := True;
137137

138138
A_Symbol_Table.Insert (Object_Name, Object_Symbol);
139139
end New_Object_Symbol_Entry;
@@ -154,52 +154,51 @@ package body GOTO_Utils is
154154
A_Symbol_Table.Insert (Subprog_Name, Subprog_Symbol);
155155
end New_Subprogram_Symbol_Entry;
156156

157-
procedure New_Type_Symbol_Entry (Type_Name : String; Type_Type : Irep;
157+
procedure New_Type_Symbol_Entry (Type_Name : Symbol_Id; Type_Of_Type : Irep;
158158
A_Symbol_Table : in out Symbol_Table) is
159159
Type_Symbol : Symbol;
160160
begin
161-
Type_Symbol.SymType := Type_Type;
161+
Type_Symbol.SymType := Type_Of_Type;
162162
Type_Symbol.IsType := True;
163-
Type_Symbol.Name := Intern (Type_Name);
164-
Type_Symbol.PrettyName := Intern (Type_Name);
165-
Type_Symbol.BaseName := Intern (Type_Name);
163+
Type_Symbol.Name := Type_Name;
164+
Type_Symbol.PrettyName := Type_Name;
165+
Type_Symbol.BaseName := Type_Name;
166166
Type_Symbol.Mode := Intern ("C");
167167

168-
A_Symbol_Table.Insert (Intern (Type_Name), Type_Symbol);
168+
A_Symbol_Table.Insert (Type_Name, Type_Symbol);
169169
end New_Type_Symbol_Entry;
170170

171-
procedure New_Constant_Symbol_Entry (N : Node_Id;
172-
A_Symbol_Table : in out Symbol_Table) is
173-
Constant_Name : constant Symbol_Id :=
174-
Intern (Unique_Name (Defining_Identifier (N)));
175-
Constant_Symbol : Symbol;
176-
begin
177-
Constant_Symbol.Name := Constant_Name;
178-
Constant_Symbol.BaseName := Constant_Name;
179-
Constant_Symbol.PrettyName := Constant_Name;
180-
Constant_Symbol.SymType := Make_Nil (Sloc (N));
181-
Constant_Symbol.Mode := Intern ("C");
182-
Constant_Symbol.Value := Make_Nil (Sloc (N));
183-
184-
A_Symbol_Table.Insert (Constant_Name, Constant_Symbol);
185-
end New_Constant_Symbol_Entry;
186-
187-
procedure New_Member_Symbol_Entry (Member_Name : String; Base_Name : String;
188-
Enum_Type : Irep; Value_Expr : Irep;
189-
A_Symbol_Table : in out Symbol_Table) is
171+
procedure New_Valueless_Object_Symbol_Entry (Constant_Name : Symbol_Id;
172+
A_Symbol_Table : in out Symbol_Table)
173+
is
174+
Object_Symbol : Symbol;
175+
begin
176+
Object_Symbol.Name := Constant_Name;
177+
Object_Symbol.BaseName := Constant_Name;
178+
Object_Symbol.PrettyName := Constant_Name;
179+
Object_Symbol.SymType := Make_Nil (No_Location);
180+
Object_Symbol.Mode := Intern ("C");
181+
Object_Symbol.Value := Make_Nil (No_Location);
182+
183+
A_Symbol_Table.Insert (Constant_Name, Object_Symbol);
184+
end New_Valueless_Object_Symbol_Entry;
185+
186+
procedure New_Enum_Member_Symbol_Entry (
187+
Member_Name : Symbol_Id; Base_Name : Symbol_Id; Enum_Type : Irep;
188+
Value_Expr : Irep; A_Symbol_Table : in out Symbol_Table) is
190189
Member_Symbol : Symbol;
191190
begin
192-
Member_Symbol.Name := Intern (Member_Name);
193-
Member_Symbol.PrettyName := Intern (Base_Name);
194-
Member_Symbol.BaseName := Intern (Base_Name);
191+
Member_Symbol.Name := Member_Name;
192+
Member_Symbol.PrettyName := Base_Name;
193+
Member_Symbol.BaseName := Base_Name;
195194
Member_Symbol.Mode := Intern ("C");
196195
Member_Symbol.IsStaticLifetime := True;
197196
Member_Symbol.IsStateVar := True;
198197
Member_Symbol.SymType := Enum_Type;
199198
Member_Symbol.Value := Value_Expr;
200199

201200
A_Symbol_Table.Insert (Member_Symbol.Name, Member_Symbol);
202-
end New_Member_Symbol_Entry;
201+
end New_Enum_Member_Symbol_Entry;
203202

204203
--------------------------------
205204
-- New_Parameter_Symbol_Entry --

gnat2goto/driver/goto_utils.ads

+9-13
Original file line numberDiff line numberDiff line change
@@ -54,20 +54,16 @@ package GOTO_Utils is
5454
with Pre => Kind (Subprog_Type) = I_Code_Type;
5555
-- Insert the subprogram specification into the symbol table
5656

57-
procedure New_Type_Symbol_Entry (Type_Name : String; Type_Type : Irep;
57+
procedure New_Type_Symbol_Entry (Type_Name : Symbol_Id; Type_Of_Type : Irep;
5858
A_Symbol_Table : in out Symbol_Table)
59-
with Pre => Kind (Type_Type) in I_Class_Type;
60-
61-
procedure New_Constant_Symbol_Entry (N : Node_Id;
62-
A_Symbol_Table : in out Symbol_Table)
63-
with Pre => Nkind (N) = N_Object_Declaration;
64-
-- Adds a dummy entry to the symbol table to register that a
65-
-- constant has already been processed.
66-
67-
procedure New_Member_Symbol_Entry (Member_Name : String; Base_Name : String;
68-
Enum_Type : Irep; Value_Expr : Irep;
69-
A_Symbol_Table : in out Symbol_Table)
70-
with Pre => Kind (Enum_Type) = I_Symbol_Type;
59+
with Pre => Kind (Type_Of_Type) in Class_Type;
60+
61+
procedure New_Valueless_Object_Symbol_Entry (Constant_Name : Symbol_Id;
62+
A_Symbol_Table : in out Symbol_Table);
63+
64+
procedure New_Enum_Member_Symbol_Entry (
65+
Member_Name : Symbol_Id; Base_Name : Symbol_Id; Enum_Type : Irep;
66+
Value_Expr : Irep; A_Symbol_Table : in out Symbol_Table);
7167

7268
procedure New_Parameter_Symbol_Entry (Name_Id : Symbol_Id;
7369
BaseName : String;

gnat2goto/driver/tree_walk.adb

+10-6
Original file line numberDiff line numberDiff line change
@@ -1221,7 +1221,6 @@ package body Tree_Walk is
12211221
UI_Image (Enumeration_Rep (Member));
12221222
Val_Name : constant String := Unique_Name (Member);
12231223
Base_Name : constant String := Get_Name_String (Chars (Member));
1224-
12251224
Member_Symbol_Init : constant Irep := New_Irep (I_Constant_Expr);
12261225
Typecast_Expr : constant Irep := New_Irep (I_Op_Typecast);
12271226
Member_Size : constant Int := UI_To_Int (Esize (Etype (Member)));
@@ -1237,8 +1236,8 @@ package body Tree_Walk is
12371236
Member_Size));
12381237
Set_Op0 (Typecast_Expr, Member_Symbol_Init);
12391238
Set_Type (Typecast_Expr, Enum_Type_Symbol);
1240-
New_Member_Symbol_Entry (Member_Name => Val_Name,
1241-
Base_Name => Base_Name,
1239+
New_Enum_Member_Symbol_Entry (Member_Name => Intern (Val_Name),
1240+
Base_Name => Intern (Base_Name),
12421241
Enum_Type => Enum_Type_Symbol,
12431242
Value_Expr => Typecast_Expr,
12441243
A_Symbol_Table => Global_Symbol_Table);
@@ -2581,7 +2580,12 @@ package body Tree_Walk is
25812580
-- register it in the symbol table so that it is not
25822581
-- processed again when the completion is encountered in
25832582
-- the tree.
2584-
New_Constant_Symbol_Entry (N, Global_Symbol_Table);
2583+
New_Valueless_Object_Symbol_Entry (Intern (Unique_Name
2584+
(Defining_Identifier (N))),
2585+
Global_Symbol_Table);
2586+
-- Adds a dummy entry to the symbol table to register that a
2587+
-- constant has already been processed.
2588+
25852589
Do_Object_Declaration_Full
25862590
(Declaration_Node (Full_View_Entity), Block);
25872591
else
@@ -4338,8 +4342,8 @@ package body Tree_Walk is
43384342
begin
43394343
Anonymous_Type_Counter := Anonymous_Type_Counter + 1;
43404344

4341-
New_Type_Symbol_Entry (Type_Name => Fresh_Name,
4342-
Type_Type => Actual_Type,
4345+
New_Type_Symbol_Entry (Type_Name => Intern (Fresh_Name),
4346+
Type_Of_Type => Actual_Type,
43434347
A_Symbol_Table => Global_Symbol_Table);
43444348

43454349
Set_Identifier (Ret, Fresh_Name);

0 commit comments

Comments
 (0)