Skip to content

Commit 078acab

Browse files
committed
Address review comments
will be squashed.
1 parent 0f31808 commit 078acab

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;
@@ -135,6 +134,7 @@ package body GOTO_Utils is
135134
Object_Symbol.SymType := Object_Type;
136135
Object_Symbol.Mode := Intern ("C");
137136
Object_Symbol.Value := Object_Init_Value;
137+
Object_Symbol.IsLValue := True;
138138

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

158-
procedure New_Type_Symbol_Entry (Type_Name : String; Type_Type : Irep;
158+
procedure New_Type_Symbol_Entry (Type_Name : Symbol_Id; Type_Of_Type : Irep;
159159
A_Symbol_Table : in out Symbol_Table) is
160160
Type_Symbol : Symbol;
161161
begin
162-
Type_Symbol.SymType := Type_Type;
162+
Type_Symbol.SymType := Type_Of_Type;
163163
Type_Symbol.IsType := True;
164-
Type_Symbol.Name := Intern (Type_Name);
165-
Type_Symbol.PrettyName := Intern (Type_Name);
166-
Type_Symbol.BaseName := Intern (Type_Name);
164+
Type_Symbol.Name := Type_Name;
165+
Type_Symbol.PrettyName := Type_Name;
166+
Type_Symbol.BaseName := Type_Name;
167167
Type_Symbol.Mode := Intern ("C");
168168

169-
A_Symbol_Table.Insert (Intern (Type_Name), Type_Symbol);
169+
A_Symbol_Table.Insert (Type_Name, Type_Symbol);
170170
end New_Type_Symbol_Entry;
171171

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

202201
A_Symbol_Table.Insert (Member_Symbol.Name, Member_Symbol);
203-
end New_Member_Symbol_Entry;
202+
end New_Enum_Member_Symbol_Entry;
204203

205204
--------------------------------
206205
-- New_Parameter_Symbol_Entry --

gnat2goto/driver/goto_utils.ads

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

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

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

gnat2goto/driver/tree_walk.adb

+10-6
Original file line numberDiff line numberDiff line change
@@ -1275,7 +1275,6 @@ package body Tree_Walk is
12751275
UI_Image (Enumeration_Rep (Member));
12761276
Val_Name : constant String := Unique_Name (Member);
12771277
Base_Name : constant String := Get_Name_String (Chars (Member));
1278-
12791278
Member_Symbol_Init : constant Irep := New_Irep (I_Constant_Expr);
12801279
Typecast_Expr : constant Irep := New_Irep (I_Op_Typecast);
12811280
Member_Size : constant Int := UI_To_Int (Esize (Etype (Member)));
@@ -1291,8 +1290,8 @@ package body Tree_Walk is
12911290
Member_Size));
12921291
Set_Op0 (Typecast_Expr, Member_Symbol_Init);
12931292
Set_Type (Typecast_Expr, Enum_Type_Symbol);
1294-
New_Member_Symbol_Entry (Member_Name => Val_Name,
1295-
Base_Name => Base_Name,
1293+
New_Enum_Member_Symbol_Entry (Member_Name => Intern (Val_Name),
1294+
Base_Name => Intern (Base_Name),
12961295
Enum_Type => Enum_Type_Symbol,
12971296
Value_Expr => Typecast_Expr,
12981297
A_Symbol_Table => Global_Symbol_Table);
@@ -2641,7 +2640,12 @@ package body Tree_Walk is
26412640
-- register it in the symbol table so that it is not
26422641
-- processed again when the completion is encountered in
26432642
-- the tree.
2644-
New_Constant_Symbol_Entry (N, Global_Symbol_Table);
2643+
New_Valueless_Object_Symbol_Entry (Intern (Unique_Name
2644+
(Defining_Identifier (N))),
2645+
Global_Symbol_Table);
2646+
-- Adds a dummy entry to the symbol table to register that a
2647+
-- constant has already been processed.
2648+
26452649
Do_Object_Declaration_Full
26462650
(Declaration_Node (Full_View_Entity), Block);
26472651
else
@@ -4410,8 +4414,8 @@ package body Tree_Walk is
44104414
begin
44114415
Anonymous_Type_Counter := Anonymous_Type_Counter + 1;
44124416

4413-
New_Type_Symbol_Entry (Type_Name => Fresh_Name,
4414-
Type_Type => Actual_Type,
4417+
New_Type_Symbol_Entry (Type_Name => Intern (Fresh_Name),
4418+
Type_Of_Type => Actual_Type,
44154419
A_Symbol_Table => Global_Symbol_Table);
44164420

44174421
Set_Identifier (Ret, Fresh_Name);

0 commit comments

Comments
 (0)