aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-04-04 06:32:03 +0200
committerTristan Gingold <tgingold@free.fr>2022-04-04 06:32:03 +0200
commit0e3f21903e7f4777feb29b9eec92fef08677a681 (patch)
treea5dc1f5a3d03af254b3367ac0f56d2b65fc11aec /src
parentba9341b82ec487d73c4f11ea92154bbabeb83707 (diff)
downloadghdl-0e3f21903e7f4777feb29b9eec92fef08677a681.tar.gz
ghdl-0e3f21903e7f4777feb29b9eec92fef08677a681.tar.bz2
ghdl-0e3f21903e7f4777feb29b9eec92fef08677a681.zip
synth: handle individual assoc of unbounded interface. Fix #2023
Diffstat (limited to 'src')
-rw-r--r--src/synth/elab-vhdl_insts.adb3
-rw-r--r--src/synth/synth-vhdl_insts.adb2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/synth/elab-vhdl_insts.adb b/src/synth/elab-vhdl_insts.adb
index 404684c26..56d458265 100644
--- a/src/synth/elab-vhdl_insts.adb
+++ b/src/synth/elab-vhdl_insts.adb
@@ -335,6 +335,9 @@ package body Elab.Vhdl_Insts is
case Get_Kind (Assoc) is
when Iir_Kinds_Association_Element_By_Actual =>
return Exec_Type_Of_Object (Syn_Inst, Get_Actual (Assoc));
+ when Iir_Kind_Association_Element_By_Individual =>
+ return Synth_Subtype_Indication
+ (Syn_Inst, Get_Actual_Type (Assoc));
when others =>
raise Internal_Error;
end case;
diff --git a/src/synth/synth-vhdl_insts.adb b/src/synth/synth-vhdl_insts.adb
index ff3685978..9611bf038 100644
--- a/src/synth/synth-vhdl_insts.adb
+++ b/src/synth/synth-vhdl_insts.adb
@@ -621,7 +621,7 @@ package body Synth.Vhdl_Insts is
case Get_Kind (Formal) is
when Iir_Kind_Interface_Signal_Declaration =>
Off := 0;
- Typ := Get_Subtype_Object (Inter_Inst, Get_Type (Formal));
+ Typ := Get_Value (Inter_Inst, Formal).Typ;
when Iir_Kind_Simple_Name =>
Synth_Individual_Prefix
(Syn_Inst, Inter_Inst, Get_Named_Entity (Formal), Off, Typ);