aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/synth-expr.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-09-22 19:58:12 +0200
committerTristan Gingold <tgingold@free.fr>2019-09-22 19:58:12 +0200
commitdfdcfa6a6db7e44fba39fc7b9758ff68cdb7f313 (patch)
tree36f6a8020c164f3e9ea4133315500e0565b6ef8d /src/synth/synth-expr.adb
parentac8b203059b2d054880550c72adef815ea29950d (diff)
downloadghdl-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.adb13
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 =>