diff options
Diffstat (limited to 'src/synth')
-rw-r--r-- | src/synth/synth-expr.adb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/synth/synth-expr.adb b/src/synth/synth-expr.adb index 763e6379c..56f32a0ba 100644 --- a/src/synth/synth-expr.adb +++ b/src/synth/synth-expr.adb @@ -1923,6 +1923,18 @@ package body Synth.Expr is B := Synth_Array_Attribute (Syn_Inst, Expr); return Create_Value_Discrete (Int64 (B.Len), Expr_Type); end; + when Iir_Kind_Pos_Attribute => + declare + Param : constant Node := Get_Parameter (Expr); + V : Value_Acc; + Dtype : Type_Acc; + begin + V := Synth_Expression (Syn_Inst, Param); + Dtype := Get_Value_Type (Syn_Inst, Get_Type (Expr)); + -- FIXME: to be generalized. Not always as simple as a + -- subtype conversion. + return Synth_Subtype_Conversion (V, Dtype, False, Expr); + end; when Iir_Kind_Null_Literal => return Create_Value_Access (Expr_Type, Null_Heap_Index); when Iir_Kind_Allocator_By_Subtype => |