aboutsummaryrefslogtreecommitdiffstats
path: root/src/synth/synth-vhdl_eval.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-09-25 06:34:41 +0200
committerTristan Gingold <tgingold@free.fr>2022-09-25 11:43:29 +0200
commitaa57bf3d03e8e3856f0f4b29f042132bb8f58ab9 (patch)
treea1db304253b3b6148053b596491486ca54edb2df /src/synth/synth-vhdl_eval.adb
parent27512f0110d640cd8631b8adfa4a83da72399c5c (diff)
downloadghdl-aa57bf3d03e8e3856f0f4b29f042132bb8f58ab9.tar.gz
ghdl-aa57bf3d03e8e3856f0f4b29f042132bb8f58ab9.tar.bz2
ghdl-aa57bf3d03e8e3856f0f4b29f042132bb8f58ab9.zip
synth-vhdl_eval: handle null-null in array concatenations
Diffstat (limited to 'src/synth/synth-vhdl_eval.adb')
-rw-r--r--src/synth/synth-vhdl_eval.adb6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/synth/synth-vhdl_eval.adb b/src/synth/synth-vhdl_eval.adb
index 1ca559dec..0ce6fcc91 100644
--- a/src/synth/synth-vhdl_eval.adb
+++ b/src/synth/synth-vhdl_eval.adb
@@ -605,6 +605,12 @@ package body Synth.Vhdl_Eval is
Res : Memtyp;
begin
Check_Matching_Bounds (Le_Typ, Re_Typ, Expr);
+ if L_Len = 0 and R_Len = 0 then
+ -- LRM08 9.2.5 Adding operators
+ -- If both operands are null arrays, then the result of the
+ -- concatenation is the right operand.
+ return Right;
+ end if;
Bnd := Elab.Vhdl_Types.Create_Bounds_From_Length
(Get_Uarray_Index (Res_Typ).Drange, L_Len + R_Len);
El_Typ := Unshare_Type_Expr (Le_Typ,