Skip to content

Commit 021a06e

Browse files
authored
Merge pull request #220 from xbauch/feature/store-defined-symbols
Store defined symbols
2 parents 93fde93 + 765978d commit 021a06e

File tree

3 files changed

+265
-11
lines changed

3 files changed

+265
-11
lines changed

experiments/golden-results/StratoX-summary.txt

Lines changed: 215 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,6 @@ Error message: Unsupported pragma: Suppress initialization
124124
Nkind: N_Pragma
125125
--
126126
Occurs: 6 times
127-
Calling function: Do_Constant
128-
Error message: Constant Type not in symbol table
129-
Nkind: N_Integer_Literal
130-
--
131-
Occurs: 6 times
132127
Calling function: Process_Declaration
133128
Error message: Generic instantiation declaration
134129
Nkind: N_Procedure_Instantiation
@@ -169,6 +164,11 @@ Error message: Unsupported pragma: Unreferenced
169164
Nkind: N_Pragma
170165
--
171166
Occurs: 4 times
167+
Calling function: Do_Constant
168+
Error message: Constant Type not in symbol table
169+
Nkind: N_Integer_Literal
170+
--
171+
Occurs: 4 times
172172
Calling function: Process_Declaration
173173
Error message: Generic declaration
174174
Nkind: N_Generic_Package_Declaration
@@ -209,6 +209,216 @@ Error message: Unsupported pragma: Unreferenced
209209
Nkind: N_Pragma
210210
--
211211
Occurs: 1 times
212+
Calling function: New_Parameter_Symbol_Entry
213+
Error message: generic_types__saturate_mod__min
214+
Nkind:
215+
--
216+
Occurs: 1 times
217+
Calling function: New_Parameter_Symbol_Entry
218+
Error message: generic_types__saturate_mod__val
219+
Nkind:
220+
--
221+
Occurs: 1 times
222+
Calling function: New_Parameter_Symbol_Entry
223+
Error message: p4__f1__x
224+
Nkind:
225+
--
226+
Occurs: 1 times
227+
Calling function: New_Parameter_Symbol_Entry
228+
Error message: spark__arithmetic_lemmas__lemma_mult_scale__res
229+
Nkind:
230+
--
231+
Occurs: 1 times
232+
Calling function: New_Parameter_Symbol_Entry
233+
Error message: spark__constrained_array_lemmas__lemma_transitive_order__arr
234+
Nkind:
235+
--
236+
Occurs: 1 times
237+
Calling function: New_Parameter_Symbol_Entry
238+
Error message: standard__generic_quaternions__Oadd__left
239+
Nkind:
240+
--
241+
Occurs: 1 times
242+
Calling function: New_Parameter_Symbol_Entry
243+
Error message: standard__generic_quaternions__Oadd__right
244+
Nkind:
245+
--
246+
Occurs: 1 times
247+
Calling function: New_Parameter_Symbol_Entry
248+
Error message: standard__generic_quaternions__Omultiply__left
249+
Nkind:
250+
--
251+
Occurs: 1 times
252+
Calling function: New_Parameter_Symbol_Entry
253+
Error message: standard__generic_quaternions__Omultiply__right
254+
Nkind:
255+
--
256+
Occurs: 1 times
257+
Calling function: New_Parameter_Symbol_Entry
258+
Error message: standard__generic_quaternions__Osubtract__left
259+
Nkind:
260+
--
261+
Occurs: 1 times
262+
Calling function: New_Parameter_Symbol_Entry
263+
Error message: standard__generic_quaternions__conj__left
264+
Nkind:
265+
--
266+
Occurs: 1 times
267+
Calling function: New_Parameter_Symbol_Entry
268+
Error message: standard__generic_queue__clear__self
269+
Nkind:
270+
--
271+
Occurs: 1 times
272+
Calling function: New_Parameter_Symbol_Entry
273+
Error message: standard__generic_queue__empty__self
274+
Nkind:
275+
--
276+
Occurs: 1 times
277+
Calling function: New_Parameter_Symbol_Entry
278+
Error message: standard__generic_queue__fill__self
279+
Nkind:
280+
--
281+
Occurs: 1 times
282+
Calling function: New_Parameter_Symbol_Entry
283+
Error message: standard__generic_queue__full__self
284+
Nkind:
285+
--
286+
Occurs: 1 times
287+
Calling function: New_Parameter_Symbol_Entry
288+
Error message: standard__generic_queue__get_all__self
289+
Nkind:
290+
--
291+
Occurs: 1 times
292+
Calling function: New_Parameter_Symbol_Entry
293+
Error message: standard__generic_queue__get_back__element
294+
Nkind:
295+
--
296+
Occurs: 1 times
297+
Calling function: New_Parameter_Symbol_Entry
298+
Error message: standard__generic_queue__get_back__self
299+
Nkind:
300+
--
301+
Occurs: 1 times
302+
Calling function: New_Parameter_Symbol_Entry
303+
Error message: standard__generic_queue__get_front__element
304+
Nkind:
305+
--
306+
Occurs: 1 times
307+
Calling function: New_Parameter_Symbol_Entry
308+
Error message: standard__generic_queue__get_front__self
309+
Nkind:
310+
--
311+
Occurs: 1 times
312+
Calling function: New_Parameter_Symbol_Entry
313+
Error message: standard__generic_queue__get_nth_first__element
314+
Nkind:
315+
--
316+
Occurs: 1 times
317+
Calling function: New_Parameter_Symbol_Entry
318+
Error message: standard__generic_queue__get_nth_first__self
319+
Nkind:
320+
--
321+
Occurs: 1 times
322+
Calling function: New_Parameter_Symbol_Entry
323+
Error message: standard__generic_queue__get_nth_last__element
324+
Nkind:
325+
--
326+
Occurs: 1 times
327+
Calling function: New_Parameter_Symbol_Entry
328+
Error message: standard__generic_queue__get_nth_last__nth
329+
Nkind:
330+
--
331+
Occurs: 1 times
332+
Calling function: New_Parameter_Symbol_Entry
333+
Error message: standard__generic_queue__get_nth_last__self
334+
Nkind:
335+
--
336+
Occurs: 1 times
337+
Calling function: New_Parameter_Symbol_Entry
338+
Error message: standard__generic_queue__haselements__self
339+
Nkind:
340+
--
341+
Occurs: 1 times
342+
Calling function: New_Parameter_Symbol_Entry
343+
Error message: standard__generic_queue__length__self
344+
Nkind:
345+
--
346+
Occurs: 1 times
347+
Calling function: New_Parameter_Symbol_Entry
348+
Error message: standard__generic_queue__overflows__self
349+
Nkind:
350+
--
351+
Occurs: 1 times
352+
Calling function: New_Parameter_Symbol_Entry
353+
Error message: standard__generic_queue__p_get__self
354+
Nkind:
355+
--
356+
Occurs: 1 times
357+
Calling function: New_Parameter_Symbol_Entry
358+
Error message: standard__generic_queue__p_get_all__self
359+
Nkind:
360+
--
361+
Occurs: 1 times
362+
Calling function: New_Parameter_Symbol_Entry
363+
Error message: standard__generic_queue__pop_all__self
364+
Nkind:
365+
--
366+
Occurs: 1 times
367+
Calling function: New_Parameter_Symbol_Entry
368+
Error message: standard__generic_queue__pop_back__element
369+
Nkind:
370+
--
371+
Occurs: 1 times
372+
Calling function: New_Parameter_Symbol_Entry
373+
Error message: standard__generic_queue__pop_back__self
374+
Nkind:
375+
--
376+
Occurs: 1 times
377+
Calling function: New_Parameter_Symbol_Entry
378+
Error message: standard__generic_queue__pop_front__element
379+
Nkind:
380+
--
381+
Occurs: 1 times
382+
Calling function: New_Parameter_Symbol_Entry
383+
Error message: standard__generic_queue__pop_front__self
384+
Nkind:
385+
--
386+
Occurs: 1 times
387+
Calling function: New_Parameter_Symbol_Entry
388+
Error message: standard__generic_queue__push_back__self
389+
Nkind:
390+
--
391+
Occurs: 1 times
392+
Calling function: New_Parameter_Symbol_Entry
393+
Error message: standard__generic_queue__push_front__self
394+
Nkind:
395+
--
396+
Occurs: 1 times
397+
Calling function: New_Parameter_Symbol_Entry
398+
Error message: system__generic_array_operations__square_matrix_length__a
399+
Nkind:
400+
--
401+
Occurs: 1 times
402+
Calling function: New_Parameter_Symbol_Entry
403+
Error message: system__generic_c_math_interface__Oexpon__left
404+
Nkind:
405+
--
406+
Occurs: 1 times
407+
Calling function: New_Parameter_Symbol_Entry
408+
Error message: system__generic_c_math_interface__arccosh__x
409+
Nkind:
410+
--
411+
Occurs: 1 times
412+
Calling function: New_Parameter_Symbol_Entry
413+
Error message: system__generic_c_math_interface__arccot__x
414+
Nkind:
415+
--
416+
Occurs: 1 times
417+
Calling function: New_Parameter_Symbol_Entry
418+
Error message: system__generic_c_math_interface__arccoth__x
419+
Nkind:
420+
--
421+
Occurs: 1 times
212422
Calling function: Process_Declaration
213423
Error message: Subprogram body stub declaration
214424
Nkind: N_Subprogram_Body_Stub

experiments/golden-results/muen-summary.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,36 @@ Error message: Exponentiation unhandled for non mod types at the moment
149149
Nkind: N_Op_Expon
150150
--
151151
Occurs: 1 times
152+
Calling function: New_Parameter_Symbol_Entry
153+
Error message: standard__muchannel__readers__drain__channel
154+
Nkind:
155+
--
156+
Occurs: 1 times
157+
Calling function: New_Parameter_Symbol_Entry
158+
Error message: standard__muchannel__readers__drain__reader
159+
Nkind:
160+
--
161+
Occurs: 1 times
162+
Calling function: New_Parameter_Symbol_Entry
163+
Error message: standard__muchannel__writer__deactivate__channel
164+
Nkind:
165+
--
166+
Occurs: 1 times
167+
Calling function: New_Parameter_Symbol_Entry
168+
Error message: standard__muchannel__writer__initialize__channel
169+
Nkind:
170+
--
171+
Occurs: 1 times
172+
Calling function: New_Parameter_Symbol_Entry
173+
Error message: standard__muchannel__writer__initialize__epoch
174+
Nkind:
175+
--
176+
Occurs: 1 times
177+
Calling function: New_Parameter_Symbol_Entry
178+
Error message: standard__muchannel__writer__write__channel
179+
Nkind:
180+
--
181+
Occurs: 1 times
152182
Calling function: Process_Declaration
153183
Error message: Use package clause declaration
154184
Nkind: N_Use_Package_Clause

gnat2goto/driver/tree_walk.adb

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,6 +1191,7 @@ package body Tree_Walk is
11911191
function Do_Defining_Identifier (E : Entity_Id) return Irep is
11921192
Sym : constant Irep := New_Irep (I_Symbol_Expr);
11931193
Result_Type : constant Irep := Do_Type_Reference (Etype (E));
1194+
Sym_Id : constant Symbol_Id := Intern (Unique_Name (E));
11941195

11951196
Is_Out_Param : constant Boolean :=
11961197
Ekind (E) in E_In_Out_Parameter | E_Out_Parameter;
@@ -1205,6 +1206,13 @@ package body Tree_Walk is
12051206
Set_Identifier (Sym, Unique_Name (E));
12061207
Set_Type (Sym, Symbol_Type);
12071208

1209+
if not Global_Symbol_Table.Contains (Sym_Id) then
1210+
New_Object_Symbol_Entry (Object_Name => Sym_Id,
1211+
Object_Type => Symbol_Type,
1212+
Object_Init_Value => Make_Nil (Sloc (E)),
1213+
A_Symbol_Table => Global_Symbol_Table);
1214+
end if;
1215+
12081216
if Is_Out_Param then
12091217
return Deref : constant Irep := New_Irep (I_Dereference_Expr) do
12101218
Set_Type (Deref, Result_Type);
@@ -2925,6 +2933,13 @@ package body Tree_Walk is
29252933
end if;
29262934
end Make_Default_Initialiser;
29272935

2936+
procedure Update_Value (Key : Symbol_Id; Element : in out Symbol);
2937+
procedure Update_Value (Key : Symbol_Id; Element : in out Symbol) is
2938+
begin
2939+
pragma Assert (Unintern (Key) = Unintern (Obj_Id));
2940+
Element.Value := Init_Expr;
2941+
end Update_Value;
2942+
29282943
-- Begin processing for Do_Object_Declaration_Full_Declaration
29292944
begin
29302945
Set_Source_Location (Decl, (Sloc (N)));
@@ -2946,12 +2961,17 @@ package body Tree_Walk is
29462961
end;
29472962
end if;
29482963

2964+
pragma Assert (Get_Identifier (Id) = Unintern (Obj_Id));
29492965
if not Global_Symbol_Table.Contains (Obj_Id)
29502966
then
29512967
New_Object_Symbol_Entry (Object_Name => Obj_Id,
29522968
Object_Type => Obj_Type,
29532969
Object_Init_Value => Init_Expr,
29542970
A_Symbol_Table => Global_Symbol_Table);
2971+
elsif Init_Expr /= Ireps.Empty then
2972+
Global_Symbol_Table.Update_Element
2973+
(Position => Global_Symbol_Table.Find (Obj_Id),
2974+
Process => Update_Value'Access);
29552975
end if;
29562976

29572977
if Init_Expr /= Ireps.Empty then
@@ -2960,12 +2980,6 @@ package body Tree_Walk is
29602980
Global_Symbol_Table),
29612981
Source_Location => Sloc (N)));
29622982
end if;
2963-
2964-
if not Global_Symbol_Table.Contains (Intern (Get_Identifier (Id))) then
2965-
Register_Identifier_In_Symbol_Table
2966-
(Id, Init_Expr, Global_Symbol_Table);
2967-
end if;
2968-
29692983
end Do_Object_Declaration_Full;
29702984

29712985
-------------------------

0 commit comments

Comments
 (0)