aboutsummaryrefslogtreecommitdiffstats
path: root/translate
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2014-01-01 10:04:27 +0100
committerTristan Gingold <tgingold@free.fr>2014-01-01 10:04:27 +0100
commitc8150ec75d67a046e9e78b61ba26ad5be5fbe187 (patch)
tree40e83061e2d2ed6a0979808cbacd92cf371a4964 /translate
parent6ef9b50581989bc7cfcf142cb132a4491c9012a7 (diff)
downloadghdl-c8150ec75d67a046e9e78b61ba26ad5be5fbe187.tar.gz
ghdl-c8150ec75d67a046e9e78b61ba26ad5be5fbe187.tar.bz2
ghdl-c8150ec75d67a046e9e78b61ba26ad5be5fbe187.zip
Fix sr2737 (rol/ror with shift = +/- length).
Diffstat (limited to 'translate')
-rw-r--r--translate/translation.adb10
1 files changed, 9 insertions, 1 deletions
diff --git a/translate/translation.adb b/translate/translation.adb
index cccecef06..572e2058e 100644
--- a/translate/translation.adb
+++ b/translate/translation.adb
@@ -17943,9 +17943,17 @@ package body Translation is
Finish_If_Stmt (If_Blk);
if Shift = Rotation then
+ -- * If I1 = LENGTH then
+ -- * I1 := 0
+ Start_If_Stmt (If_Blk, New_Compare_Op (ON_Ge,
+ New_Obj_Value (Var_I1),
+ New_Obj_Value (Var_Length),
+ Ghdl_Bool_Type));
+ Init_Var (Var_I1);
+ Finish_If_Stmt (If_Blk);
+
-- * for I = 0 to LENGTH - 1 loop
-- * RES[I] := L[I1];
-
Init_Var (Var_I);
Start_Loop_Stmt (Label);
Gen_Exit_When (Label, New_Compare_Op (ON_Ge,