aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/elab-vhdl_insts.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-01-10 07:44:56 +0100
committerTristan Gingold <tgingold@free.fr>2022-01-10 07:44:56 +0100
commit3641df142fff346e8acb4ed74cfab0a16fcbb9e3 (patch)
treeae4d77ac3700a007edddd9418e71ae30e27985f9 /src/synth/elab-vhdl_insts.adb
parent686be1369e17771c4d179626c20ce7ae5e090edc (diff)
downloadghdl-3641df142fff346e8acb4ed74cfab0a16fcbb9e3.tar.gz
ghdl-3641df142fff346e8acb4ed74cfab0a16fcbb9e3.tar.bz2
ghdl-3641df142fff346e8acb4ed74cfab0a16fcbb9e3.zip
synth: refine handling of interface type. Fix #1944
Diffstat (limited to 'src/synth/elab-vhdl_insts.adb')
-rw-r--r--src/synth/elab-vhdl_insts.adb8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/synth/elab-vhdl_insts.adb b/src/synth/elab-vhdl_insts.adb
index ac955db0e..5192046b1 100644
--- a/src/synth/elab-vhdl_insts.adb
+++ b/src/synth/elab-vhdl_insts.adb
@@ -108,10 +108,14 @@ package body Elab.Vhdl_Insts is
when Iir_Kind_Interface_Type_Declaration =>
declare
+ Act : Node;
Act_Typ : Type_Acc;
begin
- Act_Typ := Synth_Subtype_Indication
- (Syn_Inst, Get_Actual (Assoc));
+ Act := Get_Actual (Assoc);
+ if Get_Kind (Act) in Iir_Kinds_Denoting_Name then
+ Act := Get_Type (Act);
+ end if;
+ Act_Typ := Synth_Subtype_Indication (Syn_Inst, Act);
Create_Subtype_Object (Sub_Inst, Get_Type (Inter), Act_Typ);
end;