diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vhdl/translate/trans-chap7.adb | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb index b7bcf97a8..45d95b8cf 100644 --- a/src/vhdl/translate/trans-chap7.adb +++ b/src/vhdl/translate/trans-chap7.adb @@ -1719,13 +1719,25 @@ package body Trans.Chap7 is Bnd := Chap3.Get_Composite_Bounds (Dyn_Mnodes (1)); if Res_Type = Expr_Type then Bnd := Chap3.Array_Bounds_To_Element_Layout (Bnd, Expr_Type); + Gen_Memcpy + (M2Addr (Chap3.Array_Bounds_To_Element_Layout + (Var_Bounds, Expr_Type)), + M2Addr (Bnd), + New_Lit (New_Sizeof (Get_Info (El_Type).B.Layout_Type, + Ghdl_Index_Type))); + else + Gen_Memcpy + (M2Addr (Chap3.Array_Bounds_To_Element_Bounds + (Var_Bounds, Expr_Type)), + M2Addr (Bnd), + New_Lit (New_Sizeof (Get_Info (El_Type).B.Bounds_Type, + Ghdl_Index_Type))); + -- Compute size. + Chap3.Gen_Call_Type_Builder + (Chap3.Array_Bounds_To_Element_Layout (Var_Bounds, Expr_Type), + Get_Element_Subtype (Expr_Type), + Mode_Value); end if; - Gen_Memcpy - (M2Addr (Chap3.Array_Bounds_To_Element_Layout - (Var_Bounds, Expr_Type)), - M2Addr (Bnd), - New_Lit (New_Sizeof (Get_Info (El_Type).B.Layout_Type, - Ghdl_Index_Type))); end if; end Eval_One; |