aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/synth-static_proc.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/synth/synth-static_proc.adb')
-rw-r--r--src/synth/synth-static_proc.adb13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/synth/synth-static_proc.adb b/src/synth/synth-static_proc.adb
index 2eb71c09c..c93f3bb1f 100644
--- a/src/synth/synth-static_proc.adb
+++ b/src/synth/synth-static_proc.adb
@@ -20,11 +20,22 @@
with Vhdl.Errors; use Vhdl.Errors;
+with Synth.Values; use Synth.Values;
with Synth.Errors; use Synth.Errors;
with Synth.Files_Operations; use Synth.Files_Operations;
+with Synth.Heap;
package body Synth.Static_Proc is
+ procedure Synth_Deallocate (Syn_Inst : Synth_Instance_Acc; Imp : Node)
+ is
+ Inter : constant Node := Get_Interface_Declaration_Chain (Imp);
+ Param : constant Value_Acc := Get_Value (Syn_Inst, Inter);
+ begin
+ Synth.Heap.Synth_Deallocate (Param.Acc);
+ Param.Acc := Null_Heap_Index;
+ end Synth_Deallocate;
+
procedure Synth_Static_Procedure (Syn_Inst : Synth_Instance_Acc;
Imp : Node;
Loc : Node) is
@@ -32,6 +43,8 @@ package body Synth.Static_Proc is
case Get_Implicit_Definition (Imp) is
when Iir_Predefined_Foreign_Untruncated_Text_Read =>
Synth_Untruncated_Text_Read (Syn_Inst, Imp, Loc);
+ when Iir_Predefined_Deallocate =>
+ Synth_Deallocate (Syn_Inst, Imp);
when others =>
Error_Msg_Synth
(+Loc, "call to implicit %n is not supported", +Imp);