diff options
author | Tristan Gingold <tgingold@free.fr> | 2017-11-06 20:20:52 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2017-11-06 20:20:52 +0100 |
commit | 1984d2adb083153f03eb7775d956445772ca484f (patch) | |
tree | 92939d572fd44940755e30d3963101c0a797f9e7 /src/vhdl/translate/trans-chap9.adb | |
parent | f9dd14670a2b17575bc879f82030faaaabdbbea6 (diff) | |
download | ghdl-1984d2adb083153f03eb7775d956445772ca484f.tar.gz ghdl-1984d2adb083153f03eb7775d956445772ca484f.tar.bz2 ghdl-1984d2adb083153f03eb7775d956445772ca484f.zip |
Use Flist for array indexes.
Diffstat (limited to 'src/vhdl/translate/trans-chap9.adb')
-rw-r--r-- | src/vhdl/translate/trans-chap9.adb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/vhdl/translate/trans-chap9.adb b/src/vhdl/translate/trans-chap9.adb index bd8bcde4b..c6a900855 100644 --- a/src/vhdl/translate/trans-chap9.adb +++ b/src/vhdl/translate/trans-chap9.adb @@ -1127,6 +1127,23 @@ package body Trans.Chap9 is end case; end Destroy_Types_In_List; + procedure Destroy_Types_In_Flist (L : Iir_Flist) + is + El : Iir; + begin + case L is + when Null_Iir_Flist + | Iir_Flist_All + | Iir_Flist_Others => + return; + when others => + for I in Flist_First .. Flist_Last (L) loop + El := Get_Nth_Element (L, I); + Destroy_Types (El); + end loop; + end case; + end Destroy_Types_In_Flist; + procedure Destroy_Types (N : Iir) is begin -- Nothing to do for null node. @@ -1194,6 +1211,20 @@ package body Trans.Chap9 is when others => raise Internal_Error; end case; + when Type_Iir_Flist => + case Get_Field_Attribute (F) is + when Attr_None => + Destroy_Types_In_Flist (Get_Iir_Flist (N, F)); + when Attr_Of_Maybe_Ref => + if not Get_Is_Ref (N) then + Destroy_Types_In_Flist (Get_Iir_Flist (N, F)); + end if; + when Attr_Ref + | Attr_Of_Ref => + null; + when others => + raise Internal_Error; + end case; when Type_PSL_NFA | Type_PSL_Node => -- TODO |