diff options
| author | Tristan Gingold <tgingold@free.fr> | 2022-10-06 20:37:11 +0200 | 
|---|---|---|
| committer | Tristan Gingold <tgingold@free.fr> | 2022-10-06 20:37:11 +0200 | 
| commit | 4c4467cd5449ff3d9a337850309199bd380ce5e0 (patch) | |
| tree | cbeacbfc38132b70ca13dfc5202c622d0dcf3e4e | |
| parent | 6bb1a59f471b3e91bb4c68567a841c49dd9273ae (diff) | |
| download | ghdl-4c4467cd5449ff3d9a337850309199bd380ce5e0.tar.gz ghdl-4c4467cd5449ff3d9a337850309199bd380ce5e0.tar.bz2 ghdl-4c4467cd5449ff3d9a337850309199bd380ce5e0.zip | |
simul: recompute object alias offsets
| -rw-r--r-- | src/simul/simul-vhdl_elab.adb | 15 | 
1 files changed, 14 insertions, 1 deletions
| diff --git a/src/simul/simul-vhdl_elab.adb b/src/simul/simul-vhdl_elab.adb index a8c285be6..89e75e7c7 100644 --- a/src/simul/simul-vhdl_elab.adb +++ b/src/simul/simul-vhdl_elab.adb @@ -358,15 +358,28 @@ package body Simul.Vhdl_Elab is                 Pfx := Compute_Sub_Signal (Inst, Get_Prefix (Decl));                 Gather_Signal ((Mode_Stable, Decl, Inst, null, null, null,                                 No_Sensitivity_Index, No_Signal_Index, -                               T, Pfx)); +                               No_Connect_Index, T, Pfx));              end;           when Iir_Kind_Object_Alias_Declaration =>              --  In case it aliases a signal.              declare +               Marker : Mark_Type;                 V : Valtyp; +               Base : Valtyp; +               Typ : Type_Acc; +               Off : Value_Offsets;              begin                 V := Get_Value (Inst, Decl);                 Convert_Type_Width (V.Typ); + +               --  Recompute alias offsets. +               Mark_Expr_Pool (Marker); +               Synth.Vhdl_Stmts.Synth_Assignment_Prefix +                 (Inst, Get_Name (Decl), Base, Typ, Off); +               V.Val.A_Off := Off; +               pragma Assert (Base.Val = V.Val.A_Obj); +               pragma Unreferenced (Typ); +               Release_Expr_Pool (Marker);              end;           when Iir_Kind_Disconnection_Specification =>              Gather_Disconnection (Inst, Decl); | 
