diff options
author | Tristan Gingold <tgingold@free.fr> | 2015-09-02 18:25:25 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2015-09-02 18:25:25 +0200 |
commit | 510ff8938793c0cc883bdf2a5f5adfdd95f77880 (patch) | |
tree | f222f11ad129f907a127474855313fafa974c9af /src/vhdl/translate/trans.adb | |
parent | 5bd3c2ccf36ce92257616c709460b0006f4f1f7f (diff) | |
download | ghdl-510ff8938793c0cc883bdf2a5f5adfdd95f77880.tar.gz ghdl-510ff8938793c0cc883bdf2a5f5adfdd95f77880.tar.bz2 ghdl-510ff8938793c0cc883bdf2a5f5adfdd95f77880.zip |
Translate: explicitly clean transient types.
Diffstat (limited to 'src/vhdl/translate/trans.adb')
-rw-r--r-- | src/vhdl/translate/trans.adb | 45 |
1 files changed, 1 insertions, 44 deletions
diff --git a/src/vhdl/translate/trans.adb b/src/vhdl/translate/trans.adb index de5abc351..e8ba4a06c 100644 --- a/src/vhdl/translate/trans.adb +++ b/src/vhdl/translate/trans.adb @@ -1768,9 +1768,6 @@ package body Trans is -- Declaration of the variable for the stack2 mark. The stack2 will -- be released at the end of the scope (if used). Stack2_Mark : O_Dnode; - - -- List of transient types to be removed at the end of the scope. - Transient_Types : Iir; end record; -- Current level. Temp_Level : Temp_Level_Acc := null; @@ -1796,8 +1793,7 @@ package body Trans is Level => 0, Id => 0, Emitted => False, - Stack2_Mark => O_Dnode_Null, - Transient_Types => Null_Iir); + Stack2_Mark => O_Dnode_Null); if Temp_Level /= null then L.Level := Temp_Level.Level + 1; end if; @@ -1814,42 +1810,6 @@ package body Trans is Temp_Level.Emitted := True; end Open_Local_Temp; - procedure Add_Transient_Type_In_Temp (Atype : Iir) - is - Type_Info : Type_Info_Acc; - begin - Type_Info := Get_Info (Atype); - Type_Info.Type_Transient_Chain := Temp_Level.Transient_Types; - Temp_Level.Transient_Types := Atype; - end Add_Transient_Type_In_Temp; - - -- Some expressions may be evaluated several times in different - -- contexts. Type info created for these expressions may not be - -- shared between these contexts. - procedure Destroy_Type_Info (Atype : Iir) - is - Type_Info : Type_Info_Acc; - begin - Type_Info := Get_Info (Atype); - Free_Type_Info (Type_Info); - Clear_Info (Atype); - end Destroy_Type_Info; - - procedure Release_Transient_Types (Chain : in out Iir) is - N_Atype : Iir; - begin - while Chain /= Null_Iir loop - N_Atype := Get_Info (Chain).Type_Transient_Chain; - Destroy_Type_Info (Chain); - Chain := N_Atype; - end loop; - end Release_Transient_Types; - - procedure Destroy_Local_Transient_Types is - begin - Release_Transient_Types (Temp_Level.Transient_Types); - end Destroy_Local_Transient_Types; - function Has_Stack2_Mark return Boolean is begin return Temp_Level.Stack2_Mark /= O_Dnode_Null; @@ -1888,9 +1848,6 @@ package body Trans is Finish_Declare_Stmt; end if; - -- Destroy transcient types. - Release_Transient_Types (Temp_Level.Transient_Types); - -- Unlink temp_level. L := Temp_Level; Temp_Level := L.Prev; |