diff options
Diffstat (limited to 'src/synth/elab-vhdl_insts.adb')
-rw-r--r-- | src/synth/elab-vhdl_insts.adb | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/src/synth/elab-vhdl_insts.adb b/src/synth/elab-vhdl_insts.adb index c2c72c9fa..c1c8fe371 100644 --- a/src/synth/elab-vhdl_insts.adb +++ b/src/synth/elab-vhdl_insts.adb @@ -156,27 +156,24 @@ package body Elab.Vhdl_Insts is end; when Iir_Kind_Interface_Type_Declaration => - if Get_Kind (Get_Parent (Inter)) = Iir_Kind_Entity_Declaration - then - declare - Act : Node; - Act_Typ : Type_Acc; - begin - Act := Get_Actual (Assoc); - if Get_Kind (Act) in Iir_Kinds_Denoting_Name then - Act := Get_Type (Act); - end if; - if Get_Kind (Act) in Iir_Kinds_Subtype_Definition then - Act_Typ := Synth_Subtype_Indication (Syn_Inst, Act); - else - Act_Typ := Get_Subtype_Object (Syn_Inst, Act); - end if; - Act_Typ := Unshare (Act_Typ, Instance_Pool); - Create_Subtype_Object - (Sub_Inst, Get_Type (Inter), Act_Typ); - Release_Expr_Pool (Marker); - end; - end if; + declare + Act : Node; + Act_Typ : Type_Acc; + begin + Act := Get_Actual (Assoc); + if Get_Kind (Act) in Iir_Kinds_Denoting_Name then + Act := Get_Type (Act); + end if; + if Get_Kind (Act) in Iir_Kinds_Subtype_Definition then + Act_Typ := Synth_Subtype_Indication (Syn_Inst, Act); + else + Act_Typ := Get_Subtype_Object (Syn_Inst, Act); + end if; + Act_Typ := Unshare (Act_Typ, Instance_Pool); + Create_Subtype_Object + (Sub_Inst, Get_Type (Inter), Act_Typ); + Release_Expr_Pool (Marker); + end; when Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_File_Declaration @@ -186,7 +183,7 @@ package body Elab.Vhdl_Insts is raise Internal_Error; when Iir_Kinds_Interface_Subprogram_Declaration => - raise Internal_Error; + null; end case; Next_Association_Interface (Assoc, Assoc_Inter); |