aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vhdl/translate/trans-chap3.adb12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/vhdl/translate/trans-chap3.adb b/src/vhdl/translate/trans-chap3.adb
index 32a870536..56f600776 100644
--- a/src/vhdl/translate/trans-chap3.adb
+++ b/src/vhdl/translate/trans-chap3.adb
@@ -1007,9 +1007,17 @@ package body Trans.Chap3 is
New_Monadic_Op (ON_Not, Get_Type_Alignmask (Atype)));
end Realign;
- function Realign (Value : O_Enode; Atype : Iir) return O_Enode is
+ function Realign (Value : O_Enode; Atype : Iir) return O_Enode
+ is
+ Tinfo : constant Type_Info_Acc := Get_Info (Atype);
+ Otype : O_Tnode;
begin
- return Realign (Value, Get_Info (Atype).Ortho_Type (Mode_Value));
+ if Is_Unbounded_Type (Tinfo) then
+ Otype := Tinfo.B.Base_Type (Mode_Value);
+ else
+ Otype := Tinfo.Ortho_Type (Mode_Value);
+ end if;
+ return Realign (Value, Otype);
end Realign;
function Realign (Value : O_Enode; Mask : O_Dnode) return O_Enode is