diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-09-22 19:58:12 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-09-22 19:58:12 +0200 |
commit | dfdcfa6a6db7e44fba39fc7b9758ff68cdb7f313 (patch) | |
tree | 36f6a8020c164f3e9ea4133315500e0565b6ef8d /src/synth/synth-expr.adb | |
parent | ac8b203059b2d054880550c72adef815ea29950d (diff) | |
download | ghdl-dfdcfa6a6db7e44fba39fc7b9758ff68cdb7f313.tar.gz ghdl-dfdcfa6a6db7e44fba39fc7b9758ff68cdb7f313.tar.bz2 ghdl-dfdcfa6a6db7e44fba39fc7b9758ff68cdb7f313.zip |
synth: preliminary work for subtype conversions on interfaces.
Diffstat (limited to 'src/synth/synth-expr.adb')
-rw-r--r-- | src/synth/synth-expr.adb | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/synth/synth-expr.adb b/src/synth/synth-expr.adb index bba515707..645b09d8a 100644 --- a/src/synth/synth-expr.adb +++ b/src/synth/synth-expr.adb @@ -751,10 +751,13 @@ package body Synth.Expr is return Create_Value_Const_Array (Res_Type, Arr); end Synth_Simple_Aggregate; - function Synth_Subtype_Conversion - (Val : Value_Acc; Dtype : Type_Acc; Loc : Source.Syn_Src) - return Value_Acc + function Synth_Subtype_Conversion (Val : Value_Acc; + Dtype : Type_Acc; + Bounds : Boolean; + Loc : Source.Syn_Src) + return Value_Acc is + pragma Unreferenced (Bounds); Vtype : constant Type_Acc := Val.Typ; begin case Dtype.Kind is @@ -812,12 +815,14 @@ package body Synth.Expr is -- TODO: check range return Val; when Type_Vector => + -- pragma Assert (Vtype.Kind = Type_Vector); -- TODO: check width return Val; when Type_Slice => -- TODO: check width return Val; when Type_Array => + pragma Assert (Vtype.Kind = Type_Array); -- TODO: check bounds, handle elements return Val; when Type_Unbounded_Array => @@ -1514,7 +1519,7 @@ package body Synth.Expr is | Iir_Kind_Signal_Declaration => -- For PSL. Res := Synth_Name (Syn_Inst, Expr); return Synth_Subtype_Conversion - (Res, Get_Value_Type (Syn_Inst, Expr_Type), Expr); + (Res, Get_Value_Type (Syn_Inst, Expr_Type), False, Expr); when Iir_Kind_Reference_Name => return Synth_Name (Syn_Inst, Get_Named_Entity (Expr)); when Iir_Kind_Indexed_Name => |