aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-sem_inst.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/vhdl-sem_inst.adb')
-rw-r--r--src/vhdl/vhdl-sem_inst.adb10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/vhdl/vhdl-sem_inst.adb b/src/vhdl/vhdl-sem_inst.adb
index 57225e2ae..66754d91d 100644
--- a/src/vhdl/vhdl-sem_inst.adb
+++ b/src/vhdl/vhdl-sem_inst.adb
@@ -1219,6 +1219,7 @@ package body Vhdl.Sem_Inst is
Pkg : constant Iir := Get_Uninstantiated_Package_Decl (Inst);
Prev_Instance_File : constant Source_File_Entry := Instance_File;
Mark : constant Instance_Index_Type := Prev_Instance_Table.Last;
+ Bod : constant Iir := Get_Package_Body (Pkg);
Res : Iir;
begin
Create_Relocation (Inst, Pkg);
@@ -1302,7 +1303,14 @@ package body Vhdl.Sem_Inst is
(Get_Declaration_Chain (Pkg), Get_Declaration_Chain (Inst));
-- Instantiate the body.
- Res := Instantiate_Iir (Get_Package_Body (Pkg), False);
+
+ Res := Create_Iir (Iir_Kind_Package_Instantiation_Body);
+ Location_Copy (Res, Inst);
+ Set_Declaration_Chain
+ (Res, Instantiate_Iir_Chain (Get_Declaration_Chain (Bod)));
+ Set_Attribute_Value_Chain
+ (Res, Instantiate_Iir_Chain (Get_Attribute_Value_Chain (Bod)));
+ Set_Package (Res, Inst);
Set_Identifier (Res, Get_Identifier (Inst));
-- Restore.