aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/synth/synth-expr.adb13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/synth/synth-expr.adb b/src/synth/synth-expr.adb
index 9e5ccff6a..12579b1eb 100644
--- a/src/synth/synth-expr.adb
+++ b/src/synth/synth-expr.adb
@@ -1574,11 +1574,14 @@ package body Synth.Expr is
begin
Res := Synth_Expression (Syn_Inst, Pfx);
Res_Typ := Res.Typ.Rec.E (Idx + 1).Typ;
- -- FIXME: handle const.
- N := Build_Extract
- (Build_Context, Get_Net (Res),
- Res.Typ.Rec.E (Idx + 1).Off, Get_Type_Width (Res_Typ));
- return Create_Value_Net (N, Res_Typ);
+ if Res.Kind = Value_Const_Record then
+ return Res.Rec.V (Idx + 1);
+ else
+ N := Build_Extract
+ (Build_Context, Get_Net (Res),
+ Res.Typ.Rec.E (Idx + 1).Off, Get_Type_Width (Res_Typ));
+ return Create_Value_Net (N, Res_Typ);
+ end if;
end;
when Iir_Kind_Character_Literal =>
return Synth_Expression_With_Type